When Studio flags a model you get one number: Error: 67 non-manifold edges. What isn’t obvious is that Studio also tracks a completely separate set of counters describing what it changed in your mesh, and those are never shown anywhere in the UI.
They’re in TriangleMesh.hpp:
int edges_fixed = 0;
int degenerate_facets = 0;
int facets_removed = 0;
int facets_reversed = 0;
int backwards_edges = 0;
Fixed edges are vertices merged because they sat within epsilon of each other. Degenerate facets are zero-area triangles. Reversed facets are faces flipped so the normal points outward. Backwards edges are edges where two neighbouring triangles disagree on direction. Removed facets are faces dropped from the mesh entirely.
Five different kinds of change, all tracked, none surfaced.
The interesting part is the line sitting just above them:
//int facets_added = 0;
Commented out, with a note saying new faces could only be created by stl_fill_holes(), and that they ditched stl_fill_holes() because mostly it does more harm than good.
That’s a defensible call — filling a hole means guessing at geometry that was never in the file, and a wrong guess is worse than an honest gap. But it does mean nothing in this path adds geometry back. Bad faces come out, and whatever opening that leaves stays open.
Which changes how I read that warning. A model that was structurally fine but had a few thousand near-duplicate vertices gets cleaned up and reports a low count. A model that genuinely lost geometry can also report a low count, because what’s left open depends on where the faces were, not how many went. The number measures leftovers, not severity.
The screenshot is a raw generated mesh: 67 non-manifold edges on 1.65 million triangles. It prints fine, the number is noise at that scale. But if you’re seeing missing walls, surfaces inside the object, or a top that won’t close, don’t treat a low count as reassurance. Nothing filled anything in.
Two things I ran into while looking at this.
Fix Model, the link in the warning, is a different mechanism entirely. It goes out to Microsoft’s Netfabb service and only exists on Windows, which is why every Mac thread about this ends with someone being told to repair the file elsewhere.
And as far as I can tell there’s nothing in the CLI path that reports any of this. If you’re batch processing files, worth being aware that meshes can be modified on the way in with nothing in the output telling you so.
