makeusd
One file for 3D printing, AR preview, and parametric source.
pip install makeusd
What it does
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.
Quick start
Pack STL files into a USDZ
# Two-color case: orange body, black logo
makeusd pack body.stl "#FF8C00" logo.stl "#1A1A1A" -o case.usdz
AirDrop case.usdz to your iPhone. Tap to preview in AR. Done.
Export USDZ to 3MF for printing
makeusd export case.usdz -o case.3mf
Open case.3mf in BambuStudio. Colors are preserved. Print.
Embed parametric source
# Pack STLs + embed the OpenSCAD source that generated them
makeusd pack body.stl "#FF8C00" logo.stl "#1A1A1A" \
--source case.scad \
--generator openscad \
-o case.usdz
The .scad file is stored inside the USDZ (which is a ZIP). Anyone who receives the file can extract the source and rebuild.
Inspect a USDZ
makeusd inspect case.usdz
case.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)
Commands
| 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) |
Why USDZ for 3D printing?
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.
As a Python library
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)
Requirements
- Python 3.9+
usd-core(Pixar's USD Python bindings)
pip install usd-core
OpenSCAD or CadQuery only needed for rebuild command.
License
MIT
Links
- OpenUSD — Universal Scene Description
- AOUSD — Alliance for OpenUSD
- openusd-mcp — MCP server for OpenUSD (also by Daslab)
- Daslab — Where AI meets the physical world
Metadata
Release files for makeusd 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| makeusd-0.1.0.tar.gz | 6.9 kB | Without provenance | Details for makeusd-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| makeusd-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for makeusd-0.1.0-py3-none-any.whl |
Total release size: 16.1 kB
Release files / makeusd-0.1.0.tar.gz
| Download URL | makeusd-0.1.0.tar.gz |
|---|---|
| Size | 6.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f15acdc31d7f045c3115041cb3a7889979f7559c599334046797cfce486f5702
|
|
BLAKE2b-256 checksum How to use checksums |
9cde92cb9c1f4071b48878971faeda8137560b82c936255efa0ce09f6dfbfe76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / makeusd-0.1.0-py3-none-any.whl
| Download URL | makeusd-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c05bf70ace0564f2a5ee9a5f99bc2d1c7b6b48c7b999897de0ecb43aae264ca4
|
|
BLAKE2b-256 checksum How to use checksums |
19eea570cb83f7c376eefdceae6390c5af5d2d758e8e09d78f351a8017934ed8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Security for makeusd 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.