The core issue

CAD exchange formats carry geometry reliably and topology unreliably. The surfaces almost always survive. The information about how those surfaces join — and at what tolerance — frequently does not. That gap is why imported models arrive as a pile of faces rather than a solid.

Every product that opens files from other CAD systems eventually discovers that "supports STEP" is not a feature you implement once. It is an ongoing engineering commitment.

What actually crosses the boundary

InformationSurvives?Notes
Surface geometryUsuallyNURBS transfers well
Topology (how faces join)Often degradedGaps and tolerance mismatches
Solid vs surface distinctionSometimes lostEspecially via IGES
Assembly structureUsuallyPositions and hierarchy
Feature historyNoNot carried by neutral formats
Parametric relationsNoDesign intent is lost
Colours and layersPartiallyFormat and exporter dependent
PMI / tolerancesVariesSupported by newer STEP APs

Why topology degrades

Different CAD systems use different internal tolerances. System A considers two surfaces joined if they are within 10⁻⁶ mm; system B uses 10⁻⁵. When A exports, it writes surfaces that were joined under its rules — and B may find a gap.

Add to that the fact that trimming curves are computed numerically. A trimming curve accurate enough within its originating system may not land on the neighbouring surface accurately enough for yours.

The consequence for your product: you cannot simply read the file and expect a valid solid. You need a healing pipeline. Every serious CAD application has one, and its quality is a large part of why some products "just open" files that others reject.

What a healing pipeline does

  1. Parse and build entities — read surfaces, curves and topological references as written.
  2. Analyse validity — find gaps, self-intersections, sliver faces, inconsistent orientation.
  3. Stitch — join faces whose edges are within a working tolerance, building shells.
  4. Repair geometry — rebuild bad trimming curves, remove degenerate faces, fix tiny edges.
  5. Orient consistently — ensure normals point outward coherently.
  6. Attempt solid construction — if shells close, promote to a solid; otherwise report honestly what you have.
  7. Validate — confirm the result before handing it downstream.

Import is not reading a file. It is reading a file and then negotiating with it.

The tolerance dilemma

Healing tolerance is the central tuning decision, and there is no universally right value:

Too tight

  • Genuine joins are treated as gaps
  • Models fail to close into solids
  • Users see "import failed" on valid files

Too loose

  • Distinct features get merged
  • Small but intentional detail is destroyed
  • Silent geometry corruption

The practical answer used by mature kernels is tolerant topology: rather than one global value, each edge and vertex carries its own tolerance. Entities from a rough import are marked loose; precise ones stay tight. Downstream operations then respect per-entity tolerance instead of guessing.

Design intent, and why it cannot be recovered

Neutral formats carry the result of modelling, not the modelling itself. An imported part is a set of faces. It has no fillet you can change, no extrude depth you can edit, no pattern you can re-count.

Feature recognition can partially reconstruct intent — detecting that a set of faces forms a hole, a fillet, or a pocket — and it is genuinely useful for downstream CAM and for simple edits. But it is inference, not recovery, and it fails on complex or unusual geometry. Presenting it as "full parametric recovery" oversells it.

Practical guidance

  • Prefer STEP AP242 for solids; treat IGES as a legacy fallback.
  • Build a regression corpus of real files from the systems your customers use. This is your most valuable interop asset.
  • Report honestly. If a model arrived as surfaces and could not be closed, say so rather than pretending it is a solid.
  • Expose healing controls to advanced users — a tolerance slider with a preview is worth more than any automatic guess.
  • Log what was repaired. When a downstream operation fails, knowing the model was stitched at a loose tolerance is the clue that solves it.
  • Do not write parsers from scratch. Open CASCADE's STEP and IGES handling is mature and represents an enormous amount of solved work.

The highest-value thing you can do for interop: collect every customer file that failed to import and keep it as a permanent test case. Interop quality is built from accumulated real-world failures, not from reading the specification more carefully.

Building a product that must open other systems' files? Tell us which systems and what you do downstream. See our CAD kernel service and why booleans fail.

Frequently asked questions

STEP carries geometry and topology well but was never designed to carry a feature history. Extrudes, fillets and patterns become the resulting faces, not the operations that made them. It is a snapshot of the shape, not a recipe for rebuilding it.
STEP for anything solid. IGES predates modern solid modelling and typically arrives as a collection of surfaces that must be stitched into a solid, which is where most import problems begin. Use IGES only when the sender cannot produce STEP.
Because systems differ in tolerance handling and healing aggressiveness. A file with sub-tolerance gaps may be silently repaired by one system and rejected by another. Neither is wrong — they made different engineering choices about how much to fix automatically.