StoryGold Storygold
← All posts
Research Sep 9, 2026 ◆ Jennifer Jang ◆ 8 min read

Learn the solid, not the file

Some AI models for CAD can't tell that two identical parts are the same. A round trip through Rhino drops a state-of-the-art model from 97% to 4% accuracy without changing the shape.

We asked CAD experts to model the same parts independently. The finished 3D solids were identical. Yet when we ran those models through AI segmentation networks trained to recognize CAD features, the networks changed up to 13% of their answers from one expert's file to the other's.

Nothing about the parts had changed. So what happened?

A round trip through Rhino

To isolate the effect, we took 3,000 parts from MFInstSeg, a standard machining-feature benchmark, and did the most boring thing imaginable: we imported each one into Rhino and exported it again. No edits, no simplification, no remeshing. Same solid in, same solid out.

Then we re-ran three state-of-the-art B-rep encoders on the round-tripped files.

Model
Original mIoU
After Rhino round trip
Faces with changed predictions
UV-Net
0.9725
0.0433
89.98%
AAGNet
0.9851
0.2838
47.04%
BRepNet
0.9828
0.9674
0.37%
Canonical regions (ours)
0.9862
0.9870
0.00%
4.3% UV-Net accuracy on parts it previously labeled with 97% accuracy, after nothing but an import and export.

They were learning the file

The same shape can be written into a CAD file in many ways. A hole can be one cylindrical face or two half-cylinders. A flat top can be one planar face or four quadrants that happen to be coplanar. Every CAD kernel makes these choices differently, and so does every designer, every export setting, and every version of the same software.

The same solid as a B-rep from FreeCAD, as a B-rep from Rhino, and as the canonical region graph the model sees
Fig. 1 — One solid, three representations. FreeCAD splits the top face diagonally; Rhino splits it into quadrants and the cylinder into two halves. Canonical regions collapse both to the same input.

A boundary representation is a graph of faces, and existing encoders take that graph as their input. That means the network sees the kernel's partitioning decisions as if they were features of the part. Train on files from one pipeline and the network learns the quirks of that pipeline. It turns out these models weren't learning the shape. They were learning the file.

We can make the collapse even more dramatic without leaving Python. Re-splitting every planar face along a diagonal, a change no engineer would ever notice, drops BRepNet from 0.98 to 0.46 mIoU and UV-Net to 0.30.

Canonical regions

In our new paper, Learn the Solid, Not the File, we give the network an input that describes only the shape. We call it the canonical region graph.

  • Merge faces into regions. Adjacent faces that lie on the same underlying surface, whether the same plane, the same cylinder, or the same torus, are merged into one maximal connected region. Two half-arcs of a hole become one cylinder again.
  • Recover analytic surfaces. NURBS patches that are secretly planes or cylinders (within a tolerance of 10-6) are recognized and treated as such, so a kernel that writes everything as splines is no longer a different input.
  • Derive the frame from the solid. Position, orientation, and scale come from the boundary's inertia tensor and third-order moments, not from whatever coordinate system the file happened to use.

The key result is a proof, not just an empirical observation. The boundary of a solid decomposes uniquely into maximal connected patches of analytic surfaces, and we show that for every valid partition of that boundary into faces, the resulting region graph is isomorphic, with identical node geometry. In other words: the input to the network is a function of the solid alone, and it mathematically cannot depend on how the file was authored.

Results

A 17.5M-parameter graph transformer on canonical region graphs matches the best existing models on the clean MFInstSeg benchmark (0.9862 mIoU) and is unaffected by the Rhino round trip, the diagonal re-split, or any other repartitioning we tried. Across all of these, predictions on 99.96% of solids are bit-for-bit unchanged.

Back to the experts. On 25 parts each modeled independently in FreeCAD by two engineers, our predictions agree between the two authors 99.8% of the time. The baselines disagree with themselves on roughly one face in eight.

Model
Churn, same expert
Churn, across experts
Canonical regions (ours)
0.5%
0.2%
BRepNet
12.6%
12.5%
AAGNet
11.8%
13.1%

The effect is just as stark for retrieval. Querying 3,000 Fusion 360 Gallery parts with perturbed versions of themselves, canonical regions find the right part first 96% of the time. The best baseline manages 25%.

One honest caveat: on the Fusion 360 Gallery segmentation task, where the way a designer partitioned a face is itself a hint about the feature, invariance costs us some accuracy on clean data (0.61 versus 0.74 for AAGNet). We think that trade is right.

Why this matters

If you are building AI for CAD, whether for search, feature recognition, design QA, or generative modeling, this matters. Your training data almost certainly comes from a handful of pipelines, and your users' files will not. A model that scores 98% on a benchmark and 4% on the same parts exported from a different tool has not learned geometry.

01

Test for invariance

Round-trip your evaluation set through a second kernel. If accuracy moves, your model is reading the file, not the part.

02

Canonicalize the input

Merge faces on shared surfaces and fix the frame from the solid itself. The network should never see a partitioning decision.

03

Prove it where you can

Augmentation makes a model less sensitive to the perturbations you thought of. A canonical input makes it insensitive to all of them.

The full paper, including the invariance proof and all benchmark details, is on arXiv: Learn the Solid, Not the File. Questions and feedback welcome at [email protected].

Jennifer Jang
Jennifer Jang
Founder, StoryGold

Get the next one in your inbox.

New research notes and early model access. No noise, no schedule.