The featuretree IR: an Open Feature-Tree Format, Emitted Natively into Several CAD Systems and Checked by Re-Reading
A STEP file carries a part's shape but not how it was built; a CAD system's native file carries the history but only that vendor can read it. We publish the specification of a small neutral format between the two: a declarative JSON list of named features — sketches with arcs, pad, pocket, fillet, revolve and placed cuts, with draft — whose references to faces and edges are stored as queries resolved against live geometry, never as kernel identifiers. One IR is emitted as a native, editable feature tree in FreeCAD (headless PartDesign), build123d (code), and Onshape (REST, with every reference written as a FeatureScript query that Onshape re-evaluates on regeneration), and as scripts for Autodesk Fusion and SolidWorks. Every emitted part is checked the same way: exported to STEP and compared with a reference build by volume and a Boolean-free point-sampled IoU, with a per-feature volume trace that names the first feature where two backends disagree. We report the measurements, including the parts that fail. On the eleven feature trees recovered from the NIST MBE PMI corpus FreeCAD reproduces the reference on 10 of 11; Onshape reproduces every feature of our coverage parts exactly, but its corpus run was stopped by the free plan's daily API quota after two parts. Running the backends against each other found six defects, including one in the reference backend and two rules the specification had never stated. Separately, reading NIST's native SolidWorks files back through two decoders shows why one decoder is not enough: Onshape's importer matches NIST's own STEP on 11 of 11 parts, an open-source decoder on 1, four of its failures passing its own check. Neutral feature exchange is not new — it goes back to the macro-parametric work of 2003, and a closely related system appeared this year — so we claim no novelty. We offer an open specification, an MIT-licensed implementation, and measurements that can be reproduced. Code (MIT) and the commands that regenerate every number: github.com/punkfab/featuretree, commit 865dde3.
Authors
- Daniel Newcome (ORCID: https://orcid.org/0009-0000-6015-8713)
Publication Details
- Journal
- Zenodo (CERN European Organization for Nuclear Research)
- Published
- 2026-09-30
- DOI
- https://doi.org/10.5281/zenodo.23049388
- Primary Topic
- Manufacturing Process and Optimization
- Type
- preprint