Case 900 · bearing block

One case step by step

Alongside the 3D model, every run must deliver a measurement log: the self-documentation that traces every decision back to a piece of evidence. Shown here as an example is the log of Claude Code · opus-5 · run 1 for its own bearing-block case — the run reached shape fidelity 1.00.

Redacted edition: file paths and internal tool names have been removed; the measurement, evidence, and reasoning parts are complete and verbatim.

The short version

Task: Build a 3D model from the technical drawing of a bearing block (17 dimensions) — the supplied text recognition reproduced only 4 of the 17 dimension texts, one of them incorrectly. Approach: The agent did not merely look at the vector drawing, it measured it (scale 1:1) and tagged every dimension with an evidence level. Self-correction: It resolved the recognition error “R9” by measurement into R8 + Ø9; it refuted its own misreading of the “60” as plate width against the dimension-line endpoints. Result: projection check 44/44, all 47 template edges coincident, volume counter-check 0.0000 % — shape fidelity 1.00. Limits: material, tolerances, and manufacturing interpretation remain open and are documented as assumptions.

The path in eight steps

Here is how the case ran chronologically — each station points to the section with the evidence:

  1. Receive the task package — drawing (vector PDF), nearly empty text-recognition output, task statement (§0).
  2. Assign the views — the title block names projection method E, so the top view lies below the front view (§1).
  3. Substantiate every dimension — 17 dimension texts, each with evidence level OCR/image/PDF; the drawing is converted to mm and measured (§2).
  4. Resolve contradictions — “R9” is a recognition error (really: R8 + Ø9); the “60” is a hole spacing, not the plate width (§4).
  5. Derive undimensioned quantities — plate width 44 = 2 × R22, overall height 74 = 52 + 22, rib angle redundantly confirmed (§3).
  6. Build the model — via the command interface as an executable sequence of operations; the build path is given, redacted, in “The build path” below.
  7. Self-check — three projections measured by machine: 44 checks, 0 deviations; all 47 template edges individually reconciled; volume computed against the analytic value (§5).
  8. Deliver and state the limits — STEP re-imported and validated; seven assumptions explicitly marked (§6, §7).

0. Method — what is evidence and what is derivation

Alongside the drawing, the task package for each case includes a machine text-recognition output (recognized text and cropped view regions) — the line references in this log refer to it.

The text recognition is nearly empty. As dimension text it contains only four entries: R9 (line 3), 45° (line 10), 14 (line 11), 50 (line 12) — plus the title block (line 17): Lagerbock Demo-900 · 1:1 · mm · ISO 2768-m · Projektion: Methode E (ISO 5456-2). All remaining dimensions appear only in the image crops or in the text layer of the PDF. That is why the dimension table states three evidence levels per dimension:

LevelMeaning
OCRverbatim in the text recognition (line number + quote)
Imageread from the image crop — omitted by the text recognition
PDFtext object or measured vector geometry of the drawing

The drawing is a vector drawing (produced with FreeCAD TechDraw), not a raster graphic. The agent therefore did not merely look at it but measured it: scale 1:1 ⇒ 1 mm = 2.83465 pt. That allowed every part edge in the template to be converted to mm — all values land exactly on whole millimeters (residual error ≤ 0.003 mm from the rounding of the PDF coordinates). This replaces no dimension; it decides which feature a dimension figure belongs to (see §4, “60”).

For the completeness of this measurement: the drawing knows exactly two line weights — 1.98 pt (47 paths = part edges) and 0.99 pt (49 paths = extension lines/arrows). Not a single path has a dash pattern ⇒ the drawing contains no hidden edges. All 47 part edges are checked edge by edge against the model in §5.

1. The views and their assignment

Title block: “Projektion: Methode E (ISO 5456-2)” ⇒ European method / first angle.

ViewPosition on the sheetExtent (measured)
Front viewtop left90 × 74 mm
Top viewbelow the front view90 × 50 mm
Side viewright of the front view50 × 74 mm

By method E, the view below the front view is the top view (looking from above), and its edge facing the front view is the rear edge of the part. That is where the upright plate stands in the template — consistent with the front view. The view on the right is the view from the left.

Open point (inconsequential): Read the drawing wrongly by third angle, and “front” and “rear” would swap. The delivered solid does not change as a result: the part is mirror-symmetric about the plane X = 45, so a 180° rotation about Z maps one reading congruently onto the other. The relative arrangement (R8 corners opposite the upright plate, rib foot 14 mm from the R8 side) follows in any case from the consistency of the top and side views alone.

Model coordinates: X = width 0…90, Y = depth 0 (front, R8 corners) … 50 (rear, upright plate), Z = height 0 (underside of base plate) … 74.

2. Dimension table — per dimension: evidence, view, derivation

#DimensionEvidenceViewWhat follows from it
190Image/PDF text; measured: outer contour 255.11 pt = 90.000 mmTop/front viewWidth of the base plate
250OCR l. 12; PDF text (2×)Side/top viewDepth of the base plate
312PDF text (2×)Front/top view1× thickness of base plate, 1× thickness of upright plate — both dimension spans exactly 34.01 pt = 12.000 mm
4R8Image + PDF text; measured: arc radius 22.68 pt = 8.000 mmTop viewCorner radius, only the two front corners (§3)
5Ø9Image + PDF text; measured: circle Ø 25.52 pt = 9.000 mmTop view2 fastening holes, through
615Image/PDF text; measured 42.52 pt = 15.000 mmTop view1st hole axis from the left edge
760Image/PDF text; measured: endpoints land on both hole axesTop viewAxis spacing of the Ø9, not the plate width (§4, failed attempt)
820Image/PDF text; measured 56.70 pt = 20.000 mmTop viewHole axes from the front edge
910Image/PDF text; measured 28.35 pt = 10.000 mmTop viewRib width
1052Image/PDF text; measured 147.40 pt = 52.000 mmFront viewAxis height of the bearing bore above the underside of the base plate
1116Image/PDF text; measured 45.36 pt = 16.000 mmFront viewDistance hole axis → rib top edge ⇒ rib top edge at Z = 52 − 16 = 36
12R22Image + PDF text; measured: arc radius 62.36 pt = 22.000 mmFront viewHalf-circle head of the upright plate, concentric to the Ø20
13Ø20Image + PDF text; measured: circle Ø 56.69 pt = 20.000 mmFront viewBearing bore, axis horizontal (∥ Y)
1414OCR l. 11; PDF text; measured 39.68 pt = 14.000 mmSide viewRib foot from the front edge of the base plate
1545°OCR l. 10; PDF text; measured: flank line dy/dx = 68.03/68.03 ptSide viewInclination of the rib flank
161:1 / mm / ISO 2768-mOCR l. 17Title blockScale 1:1 ⇒ direct pt→mm conversion; general tolerance medium — no nominal dimension

3. Derived dimensions (not dimensioned, but mandatory)

QuantityValueDerivation
Width of the upright plate44= 2 × R22. The flanks run tangentially into the head arc; measured plate width 124.72 pt = 44.000 mm = 2 × 22 ✓
Overall height74= 52 + R22 (the head is a half-circle about the bore axis). Measured view height 209.76 pt = 74.000 mm ✓
Position of the upright plate in Y38…5012 thick, flush with the rear edge: measured front face 38.000 mm from the front edge = 50 − 12 ✓
Rib legs24 × 24horizontal 38 − 14 = 24; vertical 36 − 12 = 24 ⇒ 45° — the three figures (14, 16, 45°) are redundant and consistent; the dimension check of the build script anchors exactly this.
Rib in X40…5010 wide, centered (measured center = view center)
Upright plate in X23…6744 wide, centered
R8 only at the front2 cornersOnly the paths at the front edge are arcs; at the rear a straight line meets the side edge at a right angle. Confirmed by the tangent lines in the front and side views.

4. What the text recognition did not yield — and a corrected misreading

5. Projection check — mandatory part of the delivery

5a. Measured self-check: 44 checks, 0 deviations

From the finished solid, three TechDraw projections are generated via the command interface and read out and measured by machine — no image inspection. The view orientation is derived from the projection (which axis carries height/depth, which side is the front), not assumed — otherwise one would be checking one's own assumption.

ViewcheckedTargetMeasuredDev.
Front viewSpan width / height90 / 7490.000 / 74.0000
Ø20 present as a circle, axis height / axis position52 / 4552.000 / 45.0000
R22 is an arc, not a straight line, concentric to Ø20arc at 52arc r = 22 at 52.0000
no R8 arcs in this view00
2 R8 tangent lines, each 8 from the outer edge22
Rib: exactly 2 flanks, width / top edge / center2 / 10 / 36 / 452 / 10.000 / 36.000 / 45.0000
Upright-plate flanks tangential (length 40)presentpresent
Top viewSpan width / depth90 / 5090.000 / 50.0000
exactly 2 Ø9; axis spacing / from side edge / from front edge2 / 60 / 15 / 202 / 60.000 / 15.000 / 20.0000
exactly 2 R8 corner arcs, both on the same side2 / yes2 / yes
Upright plate at the rear, thickness / width12 / 4412.000 / 44.0000
exactly 2 rib longitudinal edges, width / foot from front edge2 / 10 / 142 / 10.000 / 14.0000
no Ø20 circle (axis lies horizontal)00
Side viewSpans = {depth 50, height 74}yesyes
Edge length at the top edge = plate thickness1212.0000
45° flank as an inclined line (not a rectangle), length1 pc / 33.9411 / 33.9410
Foot point: height / distance from front edge12 / 1412.000 / 14.0000
Apex: height / distance from front edge36 / 3836.000 / 38.0000
Direction of the slope: rises toward the upright plateyesyes
Tangent line head/flank at axis height52present
Base-plate thickness / plate rear face at the rear edge12 / 4012.000 / 40.0000

Overall check: passed (44/44).

The three deviations reported at first were errors in the checking procedure, not in the model: the side view maps height and depth onto the view axes differently than assumed, and one edge was searched over the maximum instead of by position. Both were fixed; the view orientation has since been derived.

5b. Edge-by-edge comparison against the vector geometry of the template

Beyond the self-check, every visible part edge of the template (all 47 thick paths, converted to mm) was held against the corresponding edge of the run's own projection (tolerance 0.02 mm):

ViewTemplateOwn modelmissingextra
Front view15 lines + 6 arc segments11 lines + 4 splines + circles00
Top view12 lines + 10 arc segments10 lines + 2 splines + circles00
Side view14 lines + 0 arc segments10 lines + 4 splines00

Coincident: yes. The difference “line ↔ spline” is purely a matter of representation: where a circle is projected parallel to an edge, the template draws a straight line, and the run's own projection draws the same segment as a degenerate spline of the same length and position — each of these edges was individually matched by length and position.

5c. Weight check — not applicable

The title block names neither material nor density nor weight; the weight check is dropped for lack of a target value. As a substitute, the volume was checked against the value computed analytically from the dimensions:

V(model) = 81 496.8314 mm³ · V(analytic) = 81 496.8314 mm³ · deviation 0.0000 %

The build path — from the agent's build script, redacted

The delivered build script is an executable program against the command interface; every value in it carries, as a comment, its origin in the drawing. Here is the sequence in essence (pseudo-commands — the concrete interface names remain internal):

  1. Coordinate system and dimension check first. X = width 0–90, Y = depth 0–50 (front = rounded corners), Z = height 0–74. All 17 dimensions sit in a table with an origin comment. Before the first build step, the script checks the redundant dimensions against each other: rib legs 38 − 14 = 24 and 36 − 12 = 24 ⇒ exactly 45°; hole pattern 15 + 60 + 15 = 90. Were the drawing self-contradictory, the script would abort here.
  2. Base plate from four sub-bodies. Rear cuboid (sharp corners), front strip, and two corner cylinders R8 — so the roundings arise only at the two front corners, exactly as the drawing shows them.
  3. Upright plate at the rear, flush. Cuboid 44 × 12 from the top of the base plate up to the bore axis (52), and above it a lying half-cylinder R22 as the head — the plate width 44 follows from 2 × R22 (flanks tangential).
  4. Rib as a triangular profile. Right triangle (legs 24/24) as a closed polyline, extruded 10 mm thick and tilted centered between base plate and upright plate.
  5. Unite. Fuse all sub-bodies into one blank.
  6. Drill with overshoot. Bearing bore Ø20 across through the head, two Ø9 vertically through the base plate — the drilling cylinders deliberately protrude on both sides beyond the material, so the cut is guaranteed to go through. Form the difference, clean the result to exactly one body.
  7. Self-check within the script. Volume against the formula computed analytically from the dimensions: 81 496.8314 mm³, deviation 0.0000 % (§5c/§6); exactly one valid solid.
  8. The gate first, then the export. The script generates three projections of its own model and measures them through by machine — those are the 44 checks from §5. Only then does it write the STEP file.

Source: build script of the run Claude Code · opus-5 · run 1 (delivery artifact); values and order unchanged, command names redacted.

6. Numerical validation of the result

After re-import of the delivered STEP file:

Topology1 solid, closed, valid · 18 faces · 48 edges · 32 vertices
Volume / surface area81 496.8314 mm³ · 19 509.756 mm²
Bounding dimensions90 × 50 × 74 mm — identical to the overall dimensions of the drawing

7. Assumptions and open points

Marked as an assumption, because the drawing is silent on it:

  1. No hidden features. The drawing demonstrably contains no dashed lines (§0); every visible contour is explained by the model (§5b). It is assumed that there are no undepicted internal features — e.g., no countersinks at the Ø9. Risk: low, but unprovable — no section exists.
  2. No chamfers/edge breaks. Neither dimensioned nor stated collectively in the title block. Built with sharp edges.
  3. No transition radii between rib, upright plate, and base plate. The template shows straight lines there without tangent lines in all three views — that is a finding, not merely an assumption; manufacturing could nonetheless include a fillet.
  4. Material unknown. No material, density, or weight entry ⇒ no weight check possible and no statement about the manufacturing process.
  5. Upright plate continuous. No parting line to the base plate; modeled as a single material bond. Unambiguous for the volume — not for the manufacturing interpretation (welded construction vs. milled part).
  6. Tolerances/fits not modeled: only ISO 2768-m in general; no fit is specified at the Ø20 bearing bore — built to nominal dimension.
  7. Front/rear is fixed by method E (§1); the alternative reading yielded the same solid up to a 180° rotation. No open risk for the geometry.

The manufacturing heuristics of the rulebook (“when in doubt, air, not material”) do not come into play here: there are neither draft angles nor undimensioned gaps. Every face of the part is dimensioned and evidenced by at least two views — the template evidence decides completely, without a rule of doubt.

Back to the demo case