One file for 3D printing, AR preview, and parametric source.
pip install makeusd
makeusd packs your 3D designs into USDZ files that work everywhere:
- Preview in AR on iPhone, iPad, Vision Pro — tap to open, no app needed
- Send to a slicer — export to 3MF for BambuStudio, PrusaSlicer, OrcaSlicer
- Keep the source — embed your OpenSCAD or CadQuery files inside the USDZ
- Multi-color — each part gets its own PBR material with correct colors
One command. One file. Three capabilities.
# Two-color case: orange body, black logo
makeusd pack body.stl "#FF8C00" logo.stl "#1A1A1A" -o case.usdzAirDrop case.usdz to your iPhone. Tap to preview in AR. Done.
makeusd export case.usdz -o case.3mfOpen case.3mf in BambuStudio. Colors are preserved. Print.
# Pack STLs + embed the OpenSCAD source that generated them
makeusd pack body.stl "#FF8C00" logo.stl "#1A1A1A" \
--source case.scad \
--generator openscad \
-o case.usdzThe .scad file is stored inside the USDZ (which is a ZIP). Anyone who receives the file can extract the source and rebuild.
makeusd inspect case.usdzcase.usdz (101 KB)
/Case (Xform)
/Case/Body — Mesh, 2847 faces, material: OrangePBR (#FF8C00)
/Case/Logo — Mesh, 1204 faces, material: BlackPBR (#1A1A1A)
Bounds: 42.0 x 26.3 x 13.1 mm
Up axis: Z
Embedded source: case.scad (OpenSCAD)
| Command | Description |
|---|---|
makeusd pack |
Combine STL files + colors into a multi-material USDZ |
makeusd export |
Export USDZ meshes to 3MF or STL for printing |
makeusd inspect |
Show scene graph, materials, bounds, embedded files |
makeusd rebuild |
Extract embedded source, run generator, repack (requires OpenSCAD/CadQuery) |
The 3D printing ecosystem is stuck on formats from the 1980s-2010s:
| Format | Year | Colors | Materials | AR Preview | Source | Hierarchy |
|---|---|---|---|---|---|---|
| STL | 1987 | No | No | No | No | No |
| OBJ | 1992 | Via MTL | Basic | No | No | No |
| 3MF | 2015 | Yes | Basic | No | No | Yes |
| USDZ | 2018 | Yes | Full PBR | Native iOS/visionOS | Embeddable | Yes |
USDZ is the only format that lets you preview your print in AR on your phone, send it to a slicer, and keep the parametric source — all in one file.
OpenUSD is backed by Pixar, Apple, NVIDIA, Adobe, and Autodesk. The Alliance for OpenUSD ratified Core Specification 1.0 in December 2025.
from makeusd import pack, export, inspect
# Pack STLs into USDZ
pack(
parts=[("body.stl", "#FF8C00"), ("logo.stl", "#1A1A1A")],
output="case.usdz",
source="case.scad",
generator="openscad",
)
# Export to 3MF
export("case.usdz", "case.3mf")
# Inspect
info = inspect("case.usdz")
print(info.bounds_mm) # (42.0, 26.3, 13.1)- Python 3.9+
usd-core(Pixar's USD Python bindings)
pip install usd-core
OpenSCAD or CadQuery only needed for rebuild command.
MIT
- OpenUSD — Universal Scene Description
- AOUSD — Alliance for OpenUSD
- openusd-mcp — MCP server for OpenUSD (also by Daslab)
- Daslab — Where AI meets the physical world