cad_mesh_to_brep takes a triangle mesh — an STL, OBJ or 3MF with nothing
behind it but facets — and gives back a real, watertight B-rep solid: analytic faces where the part has
them, parametric features where it can, and a measured comparison against the mesh it came from.
Below: eleven kernel-built ground-truth parts plus three real STL files, every number measured against
the source mesh, never typed in.
Every number below is reproducible.node benchmarks/recon/run.js in the repo produces
the same summary this page renders, and the build fails if a case regresses.
Generated: —Cases: —Closed: —Meeting target: —
Failed to load or parse
data/recon-summary.json — see console.
Input mesh in x-ray over the reconstructed solid — drag to orbit, toggle
Body / Input / Both, slide the clip plane to look inside. Profiles draws the input mesh's
section outline over the solid's at each station, with the widest gap between them in mm.
Result. What comes back: a parametric feature (an extrude, revolve, loft or hole
pattern you can re-edit by changing a depth, a diameter or a radius), an analytic primitive,
a planar solid, an analytic + spline solid (bores, fillets and flats as real analytic
faces, freeform as fitted spline faces, all trimmed and sewn), or sheet patches when no solid
could be closed.
Closed. One watertight solid — mass properties, booleans, fillets and STEP export all work
on it. This is the number that matters.
Faces. The solid's face census by surface kind — plane:6 cylinder:14 reads as
six flats and fourteen round faces. A bore that comes back as one cylindrical face is what makes the
result editable.
Volume err %. The solid's volume against the source mesh's own volume (vs mesh) and,
where the case has one, against its own truth (vs truth): a kernel-built part's closed-form
volume, or an independent STEP twin. The mesh is an inscribed polyhedron, so a solid that rebuilds the
true surface reads slightly larger than the mesh — vs mesh penalises a correct answer, vs truth
does not; a solid that inherited the mesh's chord deficit reads near zero vs mesh and negative vs truth.
Where both exist, the target uses vs truth.
Norm. Hausdorff. The worst two-sided surface distance between mesh and solid, as a fraction
of the part's bounding-box diagonal — scale-free, so a 20 mm bracket and an 800 mm casting
read on the same axis. Smaller is closer.
Min IoU / IoU2d. Worst silhouette overlap over 8 camera angles, and the cross-section overlap
over a stack of cutting planes on all three axes — 1.0 is a perfect match. IoU2d is the whole stack's
overlap on its worst axis (every station's material summed, so a grazing sliver at the edge of a round
part does not outvote the cuts through its middle); the worst single station is shown after it. The
cutting planes are what catch an internal void the silhouette cannot see.
Outline Δ. The largest distance, in mm, between the mesh's section outline and the solid's at
any station on any axis — the number a thin section actually wants, where an overlap ratio only reads
the section's own thinness back.
Target. Four ticks, one per sprint target: surface distance within twice the tolerance,
volume within 0.5 %, silhouette overlap at least 0.995, section overlap at least 0.99. A case
meets the target when all four pass; a miss names which one. A ? on volume means the
measurement's own uncertainty (the rulers are tessellations, and each carries a stated bound)
straddles the 0.5 % line — neither a pass nor a fail is claimed.
ms. Wall-clock time for one call on the benchmark machine.
Closed cases measured
Every case below comes back as one watertight, editable solid. Before→after compares
this row to the scoreboard as it stood before the current release — green is an
improvement, — a case that did not exist yet.
Case
Result
Faces
Components
Volume err % vs mesh
vs truth
before → after
Norm. Hausdorff
Min IoU
IoU2d (worst station)
Outline Δ mm
Target
ms
Open cases named, not hidden
A case that does not close yet is listed here rather than dropped from the scoreboard.
The three real STL files measured
Real exports, not kernel-built fixtures. nist.stl also has an independent
STEP twin, so its volume is checked against real ground truth, not only against the mesh.
Case
Result
Volume err % (vs mesh)
Volume err % (vs STEP truth)
Norm. Hausdorff
IoU2d (worst station)
Outline Δ mm
Target
Notes
nativecad-plate
—
—
—
—
—
—
—
Plate with a bolt pattern; the mesh is the only source.
nist
—
—
—
—
—
—
—
117-face AP242 conformance article (56 planes, 57 cylinders, 4 cones); the STEP twin's volume is the truth.
ingenuity-mars-helicopter
—
—
—
—
—
—
—
A multi-part scan of several hundred regions — on the board, not hidden.
Real parts from Intact Solutions' PyIntact examples measured
Intact Solutions' public example set; the optimised designs are LevelOpt's own
reference outputs. Real exports, fed to the reconstruction exactly as the other real STLs are —
a case that does not close is listed underneath rather than dropped.