Interoperability · Parasolid

Parasolid XT — the kernel-format spoke

Parasolid transmit files — .x_t/.xmt_txt (text) and .x_b/.xmt_bin (binary) — are what SolidWorks, NX and Onshape speak natively. XT is a kernel format: it carries the whole topology graph with every edge shared by exactly the fins that use it, so a solid XT body imports as a real watertight MANIFOLD_SOLID_BREP straight out of the reader. Nothing needs sewing — that follow-up does not exist for this format.

Import — cad_import

Both guises read through the same pipeline: bodies, regions, shells, faces, loops, fins, edges and vertices map one-for-one onto the kernel's STEP entity graph; analytic surfaces stay analytic (plane, cylinder, cone — with the axis flip the format reference warns about — sphere, torus) and B-spline curves and surfaces carry their weights. Sheet bodies land on the sheet channel like IGES. Mass properties are meaningful immediately, and the import report carries the reader used, whether the transmit was binary, face/edge counts, and anything skipped.

SolidWorks parts (.sldprt) carry an embedded XT transmit and import through this same path — the container work has its own page.

Options

OptionKindWhat it does
unitsbehavior Parasolid is unitless and its own documentation recommends metres, so real files are usually metre-scaled — units:"m" is the override that matters most on this format. The header's size box and linear resolution are reported so you can sanity-check.
tolerantskips translation Downgrades per-face refusals to skipped entries and imports the rest. Off by default, same fidelity contract as IGES. Despite the name, this has nothing to do with tolerant entities — see the next row.
tolerant entitiesbehavior Automatic, not an option: a tolerant edge (one that stores no curve of its own) imports with its geometry recovered from the neighbouring faces, and the tolerance values the file declares on edges and vertices are carried onto the kernel's per-entity tolerances — and written back out on XT export — so a round-trip never silently tightens a body the writing kernel said was loose.
seam splittingbehavior Parasolid writes a full cylinder as ONE face whose loop uses the seam edge twice; the reader splits it into two half-faces at import, matching the kernel's own primitives, so downstream addressing works identically for imported and built geometry. Whole seamed spherical and toroidal faces get a pole-aware split into the kernel's own patchwork of hemispheres and full-u bands.

Export — cad_export_body format:"x_t" | "x_b"

Both transmits write from the same body resolution as every other exporter — whole document or one named body — so NativeCAD parts feed Parasolid-kernel toolchains directly.

Try it

X_T nativecad-plate.x_t 15 KB X_B nativecad-plate.x_b 15 KB

The kernel-authored sample plate as both transmit guises — the text file is small enough to read, and re-importing it through our own reader hands back the same 1 solid / 20 faces it left with.

Refusals are named

Seventeen XT_* codes: an embedded schema, an unsupported node, a seam-closed spline patch — each refusal names exactly what stopped it and where. Out-of-scope by name rather than mis-parsed: assemblies/partitions, meshes and lattices, foreign geometry, blends, offset surfaces.

ACIS SAT is the other kernel-format spoke and has its own page; this one is Parasolid XT.

Roadmap: assembly/partition roots · burning down the 501-file SolidWorks-corpus refusals, whose mass is in the transmit (XT_DANGLING_POINTER, XB_BAD_RECORD and XT_UNSUPPORTED_SURFACE top the corpus audit) · real vendor corpus growth.