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.

OptionKindWhat it does
tolerance / maxTrianglesspeed The standard tessellation dials — chord tolerance, or a hard triangle budget with an exact shortfall report.
handlespeed Reuse an already-computed mesh from cad_tessellate_body.
ofskips 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

3MF nativecad-plate.3mf 25 KB

The kernel-authored sample plate, packaged for a slicer — drop it straight into PrusaSlicer or Bambu Studio.