textCAD

An experiment with earthtojake/text-to-cad

A sentence in.
A real CAD file out.

Every model on this page started as one line of plain English. No mesh generator, no photogrammetry, no 3D scan. An agent wrote parametric Python, OpenCascade built the solid, and the result is a STEP file you can open in SolidWorks, Fusion or Onshape and keep editing.

Five models, increasing in difficulty. Drag to orbit. Move the sliders and the geometry changes, because the dimensions are still parameters.

live geometry, loaded from the exported model

What is actually happening

1. English becomes a brief

The request is turned into a CAD brief: dimensions, units, origin, which plane the sketch lives on, what has to be true when it is done.

2. The brief becomes Python

The agent writes build123d source: named parameters, sketches, extrudes, lofts, booleans, fillets. The code is the model. It is on this page, unedited.

3. Python becomes a solid

OpenCascade, the same geometry kernel behind FreeCAD and a lot of commercial CAD, evaluates it into a boundary representation. Analytic faces, real edges, closed volumes.

4. The agent looks at it

It renders the solid, reads the image back, and judges whether it looks like the thing that was asked for. If not, it edits the source and tries again. Every model here survived that loop plus two adversarial reviewers.

Why STEP matters more than it sounds

Most "text to 3D" produces a mesh: a shell of triangles that looks right and means nothing. You cannot dimension it, you cannot put a tolerance on it, you cannot hand it to a machine shop. A STEP file is different. The cylinder in it is a cylinder, with an axis and a radius. That is the difference between a picture of a part and a part.

And because the source is parametric, none of this is frozen. Change one number, rebuild, get a new certified-clean solid. The sliders above are exactly that: each position is a separate STEP file, generated by the same script with one argument changed.