AgentModel

Agent vs single-shot AI CAD: drawings and mechanical parts

Run · 6 parts · 4 contenders

Can a model that checks its own work beat a fast model that answers in one shot? We gave the same six requests to three single-shot models inside AgentModel and to Claude Opus 5.5 running as an agent. The agent writes a script for SolidCraft, a B-rep parametric CAD tool, renders the result, measures it and fixes it until it matches.

Three of the requests are dimensioned drawings: a flange, an L-bracket and a spacer block. The other three are written specs: a split tube clamp, a pillow-block bearing housing and a knurled control knob.

  • OpenSCAD
  • SolidCraft
  • Opus 5.5
  • Gemini 3.8 Flash
  • GPT-6 Astra
  • drawings

Key findings

  • Every arm built every part it was given. Mean judge scores were close: Opus 5.5 agent 3.83, both Gemini Flash models 3.50, and GPT-6 Astra 4.00 on the three parts it ran.
  • The agent's lead comes from the written specs: it was the only arm to get the bearing block's slotted mounting holes and the clamp's flat bolted flanges (4 vs 3 on both).
  • From drawings, every model was accurate: flange and L-bracket scored 4–5 across the board. Every arm, the agent included, drew the spacer block's slot with angled walls.
  • The agent is much slower: its median session ran 152 s against 10–15 s for one Flash generation. The knurled knob took hours because SolidCraft booleans kept failing on dense knurl cuts.

Scoreboard

ContenderModeBuiltMean scoreMedian timeCost / tokens
Gemini 3.7 Flash · OpenSCAD Single shot 6/6 3.50 10 s $0.0672
Gemini 3.8 Flash · OpenSCAD Single shot 6/6 3.50 15 s $0.20
GPT-6 Astra + Pro brief · OpenSCAD Single shot 3/3 4.00 11 s $0.20
Opus 5.5 agent · SolidCraft Agent (self-checking) 6/6 3.83 2.5 min 615k tokens
012345Gemini 3.7 Flash OpenSCAD 3.50Gemini 3.8 Flash OpenSCAD 3.50GPT-6 Astra + Pro brief OpenSCAD 4.00Opus 5.5 agent SolidCraft 3.83
Mean judge score, 1–5, over the parts each contender built.
3 s10 s30 s60 s3.0 min10.0 min30.0 min1.0 h3.0 h12345 time per part (log scale) → judge score Gemini 3.7 Flash · OpenSCAD: 4 in 4 sGemini 3.8 Flash · OpenSCAD: 4 in 9 sGPT-6 Astra + Pro brief · OpenSCAD: 4 in 8 sOpus 5.5 agent · SolidCraft: 4 in 44 sGemini 3.7 Flash · OpenSCAD: 4 in 10 sGemini 3.8 Flash · OpenSCAD: 5 in 15 sGPT-6 Astra + Pro brief · OpenSCAD: 4 in 11 sOpus 5.5 agent · SolidCraft: 4 in 50 sGemini 3.7 Flash · OpenSCAD: 3 in 7 sGemini 3.8 Flash · OpenSCAD: 3 in 10 sOpus 5.5 agent · SolidCraft: 3 in 55 sGemini 3.7 Flash · OpenSCAD: 3 in 22 sGemini 3.8 Flash · OpenSCAD: 3 in 64 sOpus 5.5 agent · SolidCraft: 4 in 2.7 minGemini 3.7 Flash · OpenSCAD: 3 in 15 sGemini 3.8 Flash · OpenSCAD: 3 in 2.4 minOpus 5.5 agent · SolidCraft: 4 in 2.5 minGemini 3.7 Flash · OpenSCAD: 4 in 10 sGemini 3.8 Flash · OpenSCAD: 3 in 15 sGPT-6 Astra + Pro brief · OpenSCAD: 4 in 25 sOpus 5.5 agent · SolidCraft: 4 in 3.6 hGemini 3.7 Flash · OpenSCAD: mean 3.50, median 10 sGemini 3.8 Flash · OpenSCAD: mean 3.50, median 15 sGPT-6 Astra + Pro brief · OpenSCAD: mean 4.00, median 11 sOpus 5.5 agent · SolidCraft: mean 3.83, median 2.5 min
Each small dot is one part. Large ringed dots mark each contender's median time and mean score. Up and to the left is better.
  • Gemini 3.7 Flash · OpenSCAD
  • Gemini 3.8 Flash · OpenSCAD
  • GPT-6 Astra + Pro brief · OpenSCAD
  • Opus 5.5 agent · SolidCraft

Score by part

PartGemini 3.7 Flash
OpenSCAD
Gemini 3.8 Flash
OpenSCAD
GPT-6 Astra + Pro brief
OpenSCAD
Opus 5.5 agent
SolidCraft
Round flange from a drawing4444
L-bracket from a drawing4544
Slotted spacer block from a drawing33not run3
Split tube clamp for 25 mm tubing33not run4
Pillow block for a 608 bearing33not run4
Knurled thumb knob for an M6 nut4344

Ringed scores are the best on that part. Click a part to jump to its renders.

Results

#Round flange from a drawing

Dimensioned drawing, top view + section (mm) for Round flange from a drawing
Dimensioned drawing, top view + section (mm)

Model the part shown in this mechanical drawing exactly as dimensioned. All dimensions are millimeters. Expose the diameters, thickness, hole count and PCD as parameters.

Expected size: 80 × 80 × 6 mm

Gemini 3.7 Flash OpenSCAD4

Gemini 3.7 Flash (OpenSCAD) result for Round flange from a drawing, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
80 × 80 × 6 mm (0.0% off spec)
Time
4 s · $0.0057 · 4k tokens

The generated model accurately reflects the 2D drawing, including the outer diameter, thickness, central bore, and the four bolt holes on the correct pitch circle diameter.

model.scadmodel.stl

Gemini 3.8 Flash OpenSCAD4

Gemini 3.8 Flash (OpenSCAD) result for Round flange from a drawing, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
80 × 80 × 6 mm (0.0% off spec)
Time
9 s · $0.0075 · 5k tokens

Model accurately reproduces the flange geometry with correct proportions for the bore and bolt holes. Highly printable flat orientation.

model.scadmodel.stl

GPT-6 Astra + Pro brief OpenSCAD4

GPT-6 Astra + Pro brief (OpenSCAD) result for Round flange from a drawing, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
80 × 80 × 6 mm (0.0% off spec)
Time
8 s · $0.0571 · 5k tokens

Accurate model matching all features and proportions of the reference drawing. Fully printable.

model.scadmodel.stl

Opus 5.5 agent SolidCraft4

Opus 5.5 agent (SolidCraft) result for Round flange from a drawing, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
80 × 80 × 6 mm (0.0% off spec)
Time
44 s · 78k tokens

Accurate reproduction of the flange. All features including the central bore and bolt hole pattern are present and correctly proportioned. Easily printable.

script.jsonmodel.stepmodel.stl

#L-bracket from a drawing

Dimensioned drawing, front + top view (mm) for L-bracket from a drawing
Dimensioned drawing, front + top view (mm)

Build this L-bracket from the attached drawing. Dimensions are in millimeters; keep the hole positions exactly where drawn and make plate thickness and hole diameter parameters.

Expected size: 60 × 40 × 40 mm

Gemini 3.7 Flash OpenSCAD4

Gemini 3.7 Flash (OpenSCAD) result for L-bracket from a drawing, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
60 × 40 × 40 mm (0.0% off spec)
Time
10 s · $0.0088 · 5k tokens

Accurate L-bracket matching all dimensions and hole placements. Good proportions and fully printable as oriented.

model.scadmodel.stl

Gemini 3.8 Flash OpenSCAD5

Gemini 3.8 Flash (OpenSCAD) result for L-bracket from a drawing, isometric render4 views ↗
Judge
fidelity 5 · printability 5
Size
60 × 40 × 40 mm (0.0% off spec)
Time
15 s · $0.0137 · 6k tokens

Model perfectly matches the requested geometry, dimensions, and hole placements. Fully printable as oriented.

model.scadmodel.stl

GPT-6 Astra + Pro brief OpenSCAD4

GPT-6 Astra + Pro brief (OpenSCAD) result for L-bracket from a drawing, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
60 × 40 × 40 mm (0.0% off spec)
Time
11 s · $0.0616 · 6k tokens

The model accurately reproduces the L-bracket with correct proportions and hole placements. It is fully printable as oriented with the base flat on the build plate.

model.scadmodel.stl

Opus 5.5 agent SolidCraft4

Opus 5.5 agent (SolidCraft) result for L-bracket from a drawing, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
60 × 40 × 40 mm (0.0% off spec)
Time
50 s · 77k tokens

Accurate L-bracket matching all drawing dimensions and hole placements. Easily printable as oriented.

script.jsonmodel.stepmodel.stl

#Slotted spacer block from a drawing

Dimensioned drawing, top + front view (mm) for Slotted spacer block from a drawing
Dimensioned drawing, top + front view (mm)

Create the slotted block in this drawing. Millimeters. The slot runs the full length; the two holes go all the way through.

Expected size: 50 × 30 × 15 mm

Gemini 3.7 Flash OpenSCAD3

Gemini 3.7 Flash (OpenSCAD) result for Slotted spacer block from a drawing, isometric render4 views ↗
Judge
fidelity 3 · printability 4
Size
50 × 30 × 15 mm (0.0% off spec)
Time
7 s · $0.0075 · 5k tokens

Overall dimensions and holes appear correct, but the slot incorrectly features angled walls instead of straight vertical ones, and there are minor geometric artifacts at the ends of the slot.

model.scadmodel.stl

Gemini 3.8 Flash OpenSCAD3

Gemini 3.8 Flash (OpenSCAD) result for Slotted spacer block from a drawing, isometric render4 views ↗
Judge
fidelity 3 · printability 4
Size
50 × 30 × 15 mm (0.0% off spec)
Time
10 s · $0.0096 · 5k tokens

Overall dimensions and holes appear correct, but the slot incorrectly features angled walls instead of straight vertical ones, and there are minor geometric artifacts at the ends of the slot.

model.scadmodel.stl

GPT-6 Astra + Pro brief OpenSCAD

Not run on this part.

Opus 5.5 agent SolidCraft3

Opus 5.5 agent (SolidCraft) result for Slotted spacer block from a drawing, isometric render4 views ↗
Judge
fidelity 3 · printability 4
Size
50 × 30 × 15 mm (0.0% off spec)
Time
55 s · 80k tokens

Block includes the slot and holes, but the slot has angled walls instead of being rectangular, and there are unexpected notches on the ends.

script.jsonmodel.stepmodel.stl

#Split tube clamp for 25 mm tubing

Two-piece split ring tube clamp for a 25 mm OD tube: 4 mm wall, 12 mm wide, two flanges each side with Ø4.5 mm holes for M4 bolts 8 mm from the tube surface, and a flat mounting foot on one half with two Ø4.5 slots. Show both halves side by side.

Gemini 3.7 Flash OpenSCAD3

Gemini 3.7 Flash (OpenSCAD) result for Split tube clamp for 25 mm tubing, isometric render4 views ↗
Judge
fidelity 3 · printability 4
Size
125 × 37 × 12 mm
Time
22 s · $0.0217 · 8k tokens

Two halves and mounting foot present. Connecting flanges are malformed as open hooks instead of flat flanges with bolt holes.

model.scadmodel.stl

Gemini 3.8 Flash OpenSCAD3

Gemini 3.8 Flash (OpenSCAD) result for Split tube clamp for 25 mm tubing, isometric render4 views ↗
Judge
fidelity 3 · printability 3
Size
138 × 12 × 37 mm
Time
64 s · $0.0459 · 14k tokens

Model includes both halves with requested features. The mounting half has slots, but its raised flanges create overhangs.

model.scadmodel.stl

GPT-6 Astra + Pro brief OpenSCAD

Not run on this part.

Opus 5.5 agent SolidCraft4

Opus 5.5 agent (SolidCraft) result for Split tube clamp for 25 mm tubing, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
80 × 46.5 × 12 mm
Time
2.7 min · 84k tokens

Model includes all requested features like flanges, holes, and slotted mounting foot. Good flat orientation.

script.jsonmodel.stepmodel.stl

#Pillow block for a 608 bearing

A pillow block housing for a 608 bearing (22 mm OD, 7 mm wide): press-fit bore with 0.1 mm interference, 6 mm wall around the bearing, a flat base 50 × 20 mm with two Ø5.5 mm slotted mounting holes, and a small set-screw hole from the top.

Gemini 3.7 Flash OpenSCAD3

Gemini 3.7 Flash (OpenSCAD) result for Pillow block for a 608 bearing, isometric render4 views ↗
Judge
fidelity 3 · printability 4
Size
50 × 20 × 37 mm
Time
15 s · $0.0134 · 6k tokens

Matches basic shape and features. Mounting holes are round, not slotted. Proportions seem slightly off.

model.scadmodel.stl

Gemini 3.8 Flash OpenSCAD3

Gemini 3.8 Flash (OpenSCAD) result for Pillow block for a 608 bearing, isometric render4 views ↗
Judge
fidelity 3 · printability 4
Size
50 × 20 × 39 mm
Time
2.4 min · $0.11 · 32k tokens

Recognizable pillow block but misses slotted holes. Base proportions are incorrect, appearing narrower than the bearing housing.

model.scadmodel.stl

GPT-6 Astra + Pro brief OpenSCAD

Not run on this part.

Opus 5.5 agent SolidCraft4

Opus 5.5 agent (SolidCraft) result for Pillow block for a 608 bearing, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
50 × 20 × 37 mm
Time
2.5 min · 85k tokens

Accurately generates the pillow block with all requested features including slots, bore, and set-screw. Clean geometry and easily printable.

script.jsonmodel.stepmodel.stl

#Knurled thumb knob for an M6 nut

A knurled thumb knob, 30 mm diameter and 14 mm tall, with a diamond knurl on the outside, a hex pocket underneath for an M6 nut (10 mm across flats, 5 mm deep) and a Ø6.5 mm through hole. Filleted top edge.

Expected size: 30 × 30 × 14 mm

Gemini 3.7 Flash OpenSCAD4

Gemini 3.7 Flash (OpenSCAD) result for Knurled thumb knob for an M6 nut, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
30 × 30 × 14 mm (0.0% off spec)
Time
10 s · $0.0100 · 5k tokens

Knob features diamond knurl, through hole, and fillets. Hex pocket visibility is blocked by render angles. Overall geometry matches well.

model.scadmodel.stl

Gemini 3.8 Flash OpenSCAD3

Gemini 3.8 Flash (OpenSCAD) result for Knurled thumb knob for an M6 nut, isometric render4 views ↗
Judge
fidelity 3 · printability 4
Size
30 × 30 × 14 mm (0.0% off spec)
Time
15 s · $0.0125 · 5k tokens

Knurled knob with through hole generated. Knurl is aggressive. Top fillet is missing. Hex pocket cannot be verified from these views.

model.scadmodel.stl

GPT-6 Astra + Pro brief OpenSCAD4

GPT-6 Astra + Pro brief (OpenSCAD) result for Knurled thumb knob for an M6 nut, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
30 × 30 × 14 mm (0.0% off spec)
Time
25 s · $0.0824 · 5k tokens

Visible geometry matches the prompt well, featuring diamond knurling, a through hole, and a filleted top edge. Bottom hex pocket is unverified.

model.scadmodel.stl

Opus 5.5 agent SolidCraft4

Opus 5.5 agent (SolidCraft) result for Knurled thumb knob for an M6 nut, isometric render4 views ↗
Judge
fidelity 4 · printability 4
Size
30 × 30 × 14 mm (0.0% off spec)
Time
3.6 h · 211k tokens

Visible features match well, including diamond knurl, fillet, and through hole. Hex pocket underneath is unverified. Good printability.

script.jsonmodel.stepmodel.stl

How this was run

Single-shot arms are one generation in the AgentModel app (OpenSCAD output) with no retries. GPT-6 Astra also received a build brief written by Gemini 3.1 Pro, and ran on three of the six parts.

The agent arm is Claude Opus 5.5 with a shell, the SolidCraft CLI and a written brief. It may render, measure and revise as often as it likes. Its time is the whole session, not one generation.

Every result is exported to STL and rendered the same way (four OpenSCAD views, perspective camera). Gemini 3.1 Pro scores each render 1–5 for overall match, fidelity to the request and printability, without knowing which arm made it.

Six parts is a small sample: read the per-part results, not just the averages.

Every model file is linked under its render. Open a .scad file in OpenSCAD or a .step file in any CAD tool to inspect the geometry yourself.