How accurate is it?
I generated 28 parts. 28 produced geometry. Of those, 26 matched the dimensions and feature counts asked for. Run on 4 August 2026 using claude-haiku-4.5 for spec extraction, kimi-k3 for geometry (claude-opus-5 as automatic fallback on parse failure).
A pass rate whose denominator you cannot see is not a measurement, so the table below shows what was requested beside what came out, for every part, including the ones that failed.
Kept separate on purpose: a request that times out is an availability problem, not an accuracy one, and folding the two together would flatter one metric while muddying the other. No timeouts in this run.
What this does not check
Reading this before the results is deliberate. These are the limits that matter most, and a caveat buried under a long table is not a disclosure.
- Hole position. Diameters and counts are verified. The bounding box catches gross placement errors, but a correctly sized hole a few millimetres off centre would pass. Bolt circles in these files measure exact; the checker does not prove that.
- These are 2D profiles. Outline, feature diameters, feature counts and slot envelopes are checked. Layer assignment is recorded but not verified. Nothing here validates a 3D solid.
- Bend allowance is not applied. A bracket profile with a bend line is not a developed flat pattern. No material thickness, inside radius or K-factor is used, so the legs after folding will be short by the bend deduction. Work out your own developed length before cutting.
- No kerf compensation. Every profile is nominal, at true size. Apply cutter compensation and lead-ins in CAM.
- The prompts are mine. They are clear and fully dimensioned. Vaguer requests do worse, which is why the tool shows what it assumed before it draws.
- These are simple parts, and n is small. 26 of 28 carries a wide confidence interval. Published Text2CAD-Bench results put validity at roughly 85% on single-feature parts, falling to 10–30% on complex ones. Nothing here says anything about assemblies.
Method
Each part is generated from one line of text, then handed to a separate program with no knowledge of what the model intended. That program:
- Re-parses the DXF with
ezdxf. A file that will not parse fails immediately. - Computes the bounding box from the geometry, not from anything the model reported.
- Counts features at each requested diameter and compares the count, not just the presence. An earlier version only asked whether a matching circle existed, and passed a bracket with two holes where four were requested.
- Compares diameters at ±0.1 mm absolute. Not a percentage: 2% of a 150 mm bore is 3 mm.
- Measures slots end to end, since a slot described as 30 mm long is a 30 mm envelope, not 30 mm between arc centres.
- Names the two scalar mistakes when it sees them: a feature at 2× the requested size is a radius read as a diameter, 0.5× is the reverse.
The 2 that failed
| Part | Asked for | What went wrong |
|---|---|---|
| plate-mixed | Plate 180 x 120 mm with one 50 mm centre bore, four 10 mm holes on a 140 mm bolt circle, and four 5 mm holes inset 10 mm from each corner | size 150.00 vs 120.00 mm |
| bracket-gusset | Gusset plate profile, right triangle with 120 mm legs, corners rounded to 10 mm radius, three 9 mm holes 20 mm in from each corner | size 105.86 vs 120.00 mm; size 105.86 vs 120.00 mm |
Both are envelope errors — the overall extent did not match the request, one part coming out larger and one smaller. That is the same class of mistake as reading a slot length between arc centres.
Every part that matched
| Part | Asked for | Measured | Layers |
|---|---|---|---|
| plate-4hole | Mounting plate 120 x 80 mm with four 6 mm holes, one inset 10 mm from each corner | 120 × 80 mm, 4×⌀6 | CUTS, PROFILE |
| plate-6hole | Mounting plate 200 x 100 mm with six 8 mm holes in two rows of three, inset 15 mm | 200 × 100 mm, 6×⌀8 | CUTS, PROFILE |
| plate-bore | Plate 150 x 100 mm with one 40 mm centre bore and four 8 mm holes, one inset 12 mm from each corner | 150 × 100 mm, 4×⌀8, 1×⌀40 | CUTS, PROFILE |
| plate-rounded | Plate 100 x 100 mm with 12 mm radius rounded corners and one 30 mm hole in the centre | 100 × 100 mm, 1×⌀30 | CUTS, PROFILE |
| plate-m3 | Electronics mounting plate 80 x 60 mm with four 3.4 mm holes, one inset 5 mm from each corner | 80 × 60 mm, 4×⌀3.4 | CUTS, PROFILE |
| flange-3in | ASME B16.5 class 150 three inch flange face: 190.5 mm outer diameter, one 90 mm centre bore, four 19.1 mm bolt holes on a 152.4 mm bolt circle | 190.5 × 190.5 mm, 4×⌀19.1, 1×⌀90 | CUTS, PROFILE |
| flange-4in | ASME B16.5 class 150 four inch flange face: 228.6 mm outer diameter, one 115 mm centre bore, eight 19.1 mm bolt holes on a 190.5 mm bolt circle | 228.6 × 228.6 mm, 8×⌀19.1, 1×⌀115 | CUTS, PROFILE |
| flange-en | EN 1092-1 DN50 PN16 flange: 165 mm outer diameter, one 61 mm centre bore, four 18 mm bolt holes on a 125 mm bolt circle | 165 × 165 mm, 4×⌀18, 1×⌀61 | CUTS, PROFILE |
| gasket-6 | Gasket 120 mm outer diameter, one 80 mm inner diameter opening, six 8 mm bolt holes on a 100 mm bolt circle | 120 × 120 mm, 6×⌀8, 1×⌀80 | CUTS, PROFILE |
| gasket-8 | Gasket 90 mm outer diameter, one 60 mm inner diameter opening, eight 7 mm bolt holes on a 75 mm bolt circle | 90 × 90 mm, 8×⌀7, 1×⌀60 | CUTS, PROFILE |
| gasket-4 | Square gasket 100 x 100 mm with one 60 mm circular opening and four 6 mm holes, one inset 8 mm from each corner | 100 × 100 mm, 4×⌀6, 1×⌀60 | CUTS, PROFILE |
| panel-switch | Enclosure face panel 120 x 80 mm with one 22 mm switch hole and four 4 mm holes, one inset 6 mm from each corner | 120 × 80 mm, 4×⌀4, 1×⌀22 | PROFILE |
| panel-led | Front panel 150 x 60 mm with three 12 mm LED holes spaced 30 mm apart and one 25 mm dial hole | 150 × 60 mm, 3×⌀12, 1×⌀25 | CUTS, PROFILE |
| panel-round | Rear panel 100 x 50 mm with one 30 mm round connector cutout and two 3.2 mm mounting holes | 100 × 50 mm, 2×⌀3.2, 1×⌀30 | CUTS, PROFILE |
| panel-rounded | Face plate 100 x 60 mm with 5 mm radius rounded corners, one 22 mm switch hole and two 12 mm holes | 100 × 60 mm, 2×⌀12, 1×⌀22 | CUTS, PROFILE |
| bracket-flat | Profile for an L-bracket, 80 x 40 mm outline, bend line at 30 mm on its own layer, four 5 mm holes: two on each side of the bend | 80 × 40 mm, 4×⌀5 | BEND, CUTS, PROFILE |
| bracket-corner | Corner bracket profile 60 x 60 mm with a bend line at 30 mm and four 5 mm holes | 60 × 60 mm, 4×⌀5 | BEND, CUTS, PROFILE |
| ring-shim | Shim ring 50 mm outer diameter with one 30 mm inner diameter opening | 50 × 50 mm, 1×⌀30 | CUTS, PROFILE |
| ring-spacer | Spacer washer 25 mm outer diameter with one 10.5 mm inner diameter opening | 25 × 25 mm, 1×⌀10.5 | CUTS, PROFILE |
| ring-thrust | Thrust washer 80 mm outer diameter, one 50 mm inner diameter opening, four 6 mm holes on a 65 mm bolt circle | 80 × 80 mm, 4×⌀6, 1×⌀50 | CUTS, PROFILE |
| disc-index | Index disc 120 mm diameter with twelve 5 mm holes on a 100 mm bolt circle and one 12 mm centre bore | 120 × 120 mm, 12×⌀5, 1×⌀12 | CUTS, PROFILE |
| disc-pulley | Pulley blank 90 mm diameter with one 20 mm centre bore and six 8 mm lightening holes on a 60 mm bolt circle | 90 × 90 mm, 6×⌀8, 1×⌀20 | CUTS, PROFILE |
| slot-adjust | Adjustment plate 100 x 40 mm with two slots, each 8 mm wide and 30 mm long overall, running lengthwise | 100 × 40 mm | CUTS, PROFILE |
| slot-single | Plate 80 x 30 mm with one horizontal slot 6 mm wide and 40 mm long overall, centred | 80 × 30 mm | CUTS, PROFILE |
| panel-multi | Instrument panel 200 x 90 mm with two 22 mm switch holes 60 mm apart and four 8 mm LED holes | 200 × 90 mm, 4×⌀8, 2×⌀22 | CUTS, PROFILE |
| disc-spoke | Wheel blank 150 mm diameter with one 25 mm centre bore, five 30 mm lightening holes on a 90 mm bolt circle, and ten 4 mm holes on a 130 mm bolt circle | 150 × 150 mm, 10×⌀4, 1×⌀25, 5×⌀30 | CUTS, PROFILE |
Check it yourself
Download any file above and measure it against the prompt beside it. Nothing on this page asks you to take my word for anything. Verify before you cut, as you would with any file from any source.
Open the tool