Start with the unit stored in the project
A 3MF model declares a length unit. The supported Core units are micron, millimeter, centimeter, inch, foot and meter; a missing unit means millimeter. This converter applies that unit after the supported component and build transforms, then writes millimeter coordinates into the STL. You do not need to guess the source unit when the package declares it correctly.
STL itself has no standard unit declaration. The downloaded filename and conversion report say millimeters, but the receiving slicer still decides how to interpret the coordinates. Select millimeters when importing and inspect the dimensions rather than relying on the filename.
Check the executable example
Choose the working example or use the example button, then run the conversion. It is a real zipped 3MF with two half-inch cubes. Each cube becomes 12.7 × 12.7 × 12.7 mm. The second is mirrored and translated, so the overall X extent is 38.1 mm. The result contains 24 triangles across two instances.
Download the combined STL and measure it in a separate slicer. If the first cube appears 322.58 mm wide, the receiving program has interpreted its 12.7 coordinates as inches and multiplied by 25.4 again. Fix the import unit rather than applying an unexplained compensating scale.
Know the supported bounds
A file can be valid 3MF yet exceed this converter’s bounded implementation. Coordinates after conversion must remain within ±10,000 mm; zero-area or float32-collapsed triangles are refused. Referenced model parts must use the same source unit. Normalize a mixed-unit project in its original slicer before trying again.
Keep the source 3MF and the JSON report. Compare a known physical feature as well as the overall bounding box, especially when a project contains separate plates or auxiliary objects. Geometry conversion does not restore the designer’s original dimensions or prove that a model is ready to manufacture.