bambu-3mflisted
Install: claude install-skill alexjfalcao/bambu-3mf-skill
# Bambu-compatible 3MF
A 3MF that a slicer colors correctly is not "a mesh with colors". It is a small
project: one closed solid per color, a part→extruder table, and a filament→color
table. Miss the last one and the geometry still loads, but every part takes the
color of whatever filament sits in that slot — the classic "colors are swapped".
## The chain
```
color of the design
-> part i one closed solid per color, in 3D/3dmodel.model
-> extruder i+1 Metadata/model_settings.config
-> filament i+1 Metadata/project_settings.config (filament_colour[i])
```
And that project config has to be a **complete, correctly sized** profile: half
the ways to get it wrong load without a single complaint and fail only when the
user hits Slice.
All three links must be in the file. Never rely on `<basematerials>`/`pindex`
(Bambu ignores it), on per-triangle colors, or on any nearest-color matching.
## Quick start
```bash
S="${CLAUDE_PLUGIN_ROOT:-$HOME/.claude}/skills/bambu-3mf/scripts"
# 1. build parts (or produce vertices/triangles any other way)
python3 - "$S" <<'PY'
import sys, json
sys.path.insert(0, sys.argv[1])
import solids
tol = 0.10 # = the quality level's tolerance
base = solids.cylinder(40, 2, tol)
rim = solids.ring(38, 40, 4, tol, z0=2)
json.dump({"parts": [
{"name": "base", "color": "#5B2A7A", "vertices": base[0], "triangles": base[1]},
{"name": "rim", "color": "#F2D02C", "vertices": rim[0], "triangles