Interoperability · SolidWorks
SolidWorks parts — .sldprt, opened directly
A .sldprt wraps a Parasolid transmit inside a proprietary container.
NativeCAD walks the container natively, finds the embedded XT stream by content, and imports it
through the Parasolid path — so a customer's SolidWorks part opens
directly, no “please re-export as STEP” round trip.
Import — cad_import
Both container generations are walked natively: classic OLE2/CFB (header, FAT, DIFAT
continuation, miniFAT, mini stream and the directory tree) and the chunk container SolidWorks
moved to in 2015. The reader picks the body partition over ghost and history streams, detects the
transmit by its **ABCDEFGH… marker rather than by stream name — names differ between
releases — and hands the bytes to the XT reader. The import report carries the container
generation and stream details alongside the usual XT record. A ZIP/OPC (3DExperience-era) package
is refused by name (SLDPRT_ZIP_OPC_UNSUPPORTED), never mis-parsed.
Measured on a corpus of 501 public SolidWorks files: 413 open straight to watertight
solids, 455 with tolerant:true, and every one of the rest returns a named refusal
code, never a crash.
Options
The embedded transmit reads through the XT pipeline, so the
Parasolid options apply unchanged: units overrides the
transmit's scale, tolerant downgrades per-face refusals to skipped
entries, and tolerant entities and seam splitting behave exactly as they do on a bare
.x_t.
Export
None, deliberately: .sldprt is an import-only spoke, and writing one is
SolidWorks' job. A NativeCAD part headed for SolidWorks ships as
Parasolid XT, which SolidWorks opens natively.
Try it
There is no kernel-authored .sldprt sample for the same reason there
is no exporter — this kernel does not write the container. Any part saved by SolidWorks itself
works; the sample plate is available as
.x_t/.x_b on the Parasolid page.
Refusals are named
The container has its own vocabulary: CFB_* codes for compound-file structure
(truncation, chain loops, bad sector geometry), SLDPRT_NO_PARASOLID for a container
that parses but carries no transmit, SLDPRT_ZIP_OPC_UNSUPPORTED for the 3DExperience
package format. Past extraction, everything speaks the
XT refusal vocabulary.
XT_DANGLING_POINTER,
XB_BAD_RECORD and XT_UNSUPPORTED_SURFACE top the audit, and the
follow-ups are filed from those numbers) · the feature tree, sketches and rollback state stay out
of scope by name: proprietary and undocumented, the body is what crosses.