benchmark · featuretree

CADFather on the NIST test parts, scored next to featuretree

2026-10-12 · kulibinai/cadfather (MIT) · punkfab/featuretree (MIT)

CADFather is a new open-source agent that reconstructs a CAD program from a 3D mesh. A language model looks at renders of the target and of its best attempts so far, and each turn picks a tool: a learned generator that proposes the next operation, an algorithmic fitter, or a numerical optimiser for the parameters. The output is CadQuery code. The paper evaluates it on DeepCAD, Fusion360 and other benchmark sets.

We ran it on the eleven NIST test parts we have been using for featuretree, and then scored both tools' outputs with the same code. These parts are not in CADFather's paper, and they are more complex than most of what it was evaluated on.

The two tools are not doing the same job

CADFather starts from a mesh and writes at most twelve operations. featuretree starts from the STEP solid, with its exact faces and edges, and writes as many features as it needs. Starting from a mesh is the harder problem. So this is not a ranking. It is a look at what each approach returns on the same eleven parts.

Results

Dot chart of volume overlap with the input for eleven NIST parts, CADFather in orange and featuretree in blue. CADFather ranges from 0.575 on FTC-08 to 0.995 on FTC-09. featuretree ranges from 0.943 to 0.999 on nine parts; on CTC-02 and CTC-05 its mesh is not closed and a hollow marker shows its own B-rep measure, 0.935 and 0.972.

PartCADFather: operationsIoUGMSScorefeaturetree: featuresIoUGMSScore
CTC-0170.8760.6600.768540.9990.9580.978
CTC-02110.7640.7210.743144mesh not closed
CTC-0370.6050.9020.754640.9430.9140.929
CTC-0490.8040.6630.7341080.9650.7840.874
CTC-0590.9230.8540.88957mesh not closed
FTC-06120.9570.8520.904310.9800.7740.877
FTC-07100.8510.8980.874290.9560.9090.933
FTC-08110.5750.7030.639370.9860.8940.940
FTC-0950.9950.9280.962800.9970.9360.966
FTC-10120.9010.8050.853380.9720.8280.900
FTC-1120.9790.7140.84720.9950.8990.947
Mean0.8390.7910.8150.977 (9 parts)0.8770.759 (failures as 0)

Every number in the table comes from CADFather's metric code. IoU is the volume the two shapes share divided by the volume either occupies. GMS is its measure of how well the surfaces match. The score is the mean of the two, and an output whose mesh is not closed counts as a failure and scores zero.

Three NIST parts, each shown as the input in grey, CADFather's reconstruction in orange and featuretree's in blue. FTC-09, a flat plate with holes, is matched closely by both. On CTC-01 CADFather gets the outline and the main boss but squares off the rounded corners. On FTC-08, an open enclosure, CADFather returns a mostly solid block with a few holes.

The picture shows CADFather's best, median and worst part by its own IoU. On the flat plate both tools are near exact. On FTC-08 its twelve operations go to the outer shape and the large pocket in the middle is left filled.

What we found wrong with our own output

Scoring featuretree by someone else's rules turned up three defects that our own checks do not report.

How it was run

CADFather ran from its public repository with its own configuration: the same models, tools, budgets, limits and seed. The paper used four H100 GPUs. We rented one, so both models shared it and there was one copy of the assistant model where the paper has three. No part came near the time limit. The slowest took 504 seconds of an allowed 1,000, so we do not think the smaller machine changed the results. The eleven parts ran in parallel in about eight and a half minutes, after about eight minutes of loading models. The GPU time for the run and the failed attempts before it cost about three dollars.

The meshes CADFather was given were made from the NIST STEP files at a tolerance of a thousandth of each part's size. featuretree's trees are the ones from our September run, rebuilt today, moved back into the original part's position and meshed the same way. They were not recognised again for this post.

What this does not show

What's next

Fix the open meshes, the voids and the split solids, and add a closed-mesh test to our own checks. Run featuretree on the DeepCAD and Fusion360 test sets. Look at whether a short CADFather program is a useful starting point for the parts where our trees run long.

Who did what

We chose the comparison and asked for it to be scored one way for both. Claude set up the run and wrote the scoring. CADFather, its models and its metric code are the work of its authors.

featuretree is at punkfab/featuretree. The scoring scripts for this post are not in the repository yet. Got a STEP file that should be an editable model? Start a project →