Interoperability · 3MF
3MF — the additive handoff
The package MJF/SLS bureaus and slicers — PrusaSlicer, Bambu, Cura — actually
consume. NativeCAD writes the core specification: one <object> per resolved
body, unit millimetre, one build <item> each, with the same op-id naming as
STEP so parts stay identifiable downstream. Import shipped 2026-08-29, completing the
slicer round-trip.
Import — cad_import
A .3mf package imports onto the same mesh channel as STL/OBJ: the result carries a
meshId, not a solidId, and multi-object builds are flattened —
<component> references resolved into one mesh body rather than kept as a nested
structure. heal is the same opt-in weld/de-degenerate/re-orient/fill-holes pass as
STL and OBJ, off by default.
Export — cad_export_body format:"3mf"
3MF's manifold rules are strict, and NativeCAD treats that as a gate, not a suggestion: every
body is checked first, and an open shell (a sheet body, say) or a non-manifold mesh is
refused by name — THREEMF_OPEN_SHELL /
THREEMF_NOT_MANIFOLD — rather than shipped for a slicer to mangle in "repair". What
leaves the kernel is watertight because it was watertight, not because something patched it.
| Option | Kind | What it does |
|---|---|---|
tolerance / maxTriangles | speed | The standard tessellation dials — chord tolerance, or a hard triangle budget with an exact shortfall report. |
handle | speed | Reuse an already-computed mesh from cad_tessellate_body. |
of | skips translation | Export one named body instead of the whole document. |
Geometry only, deliberately: no beam-lattice, slice, or material extensions — the core spec is what every consumer agrees on.
Try it
The kernel-authored sample plate, packaged for a slicer — drop it straight into PrusaSlicer or Bambu Studio.