Erstellen des Gehäuses in Fusion
Die Skripte in scripts/ sind die Quelle der Wahrheit. Das Fusion-Dokument ist eine vergängliche Darstellung von ihnen. Ändere das Skript und baue neu. Manuelle Bearbeitungen in der Fusion-Oberfläche gehen beim nächsten Build verloren.
Schritte
- Fusion bereit. Führe den Runner unten mit leerem Körper aus. Wenn kein aktives Design vorhanden ist, erstelle eines und importiere
boardmodel/ESP32-S3-Touch-AMOLED-1_75.stpin die Wurzel mit Identität (importManager.createSTEPImportOptions+importToTarget). Fertig, wenn die Wurzel die KomponenteESP32-S3-TOUCH-AMOLED-1_75_ASM:1enthält. - Bearbeiten. Parameter befinden sich im
P-Dict am Anfang vonscripts/enclosure.py. Daraus abgeleitete Werte kommen inderived(). Geometrie wird inbuild_shell/build_cap/build_refseingefügt. Hilfsfunktionen sind inscripts/wslib.py. - Neubau mit dem Runner.
build(overrides)akzeptiert ein Dict für schnelle Experimente, z. B.{'lattice': False}(ein Build ohne Gitter dauert etwa 1 s; mit dem v2 feinen Strick etwa 12 s). Fertig, wenn esbuilt in …ohne Traceback ausgibt. - Überprüfen mit dem Skill
fusion-inspect. Ein Build ist erst abgeschlossen, wenn die ChecksPASSausgeben und du einen Screenshot angesehen hast.
Runner (einfügen als MCP script)
import sys, importlib
REPO = r'C:\Github\claudesk\3d-model\scripts' # absoluter Pfad zu 3d-model/scripts in deinem Klon
if REPO not in sys.path: sys.path.insert(0, REPO)
import wslib, enclosure, checks
for m in (wslib, enclosure, checks): importlib.reload(m)
def run(_context: str):
enclosure.build() # oder enclosure.build({'sphere_d': 90})
Fusions Python speichert Module zwischen Läufen zwischen. Behalte immer die reload-Zeile bei, sonst werden Änderungen nicht wirksam.
Wenn die mcp__fusion__*-Werkzeuge fehlen
Wenn der MCP-Server beim Start der Sitzung keine Verbindung herstellen konnte (z. B. weil Fusion noch nicht lief), überprüfe, dass Fusion läuft (netstat -ano | findstr 27182 zeigt LISTENING an). Bitte dann den Benutzer, mit /mcp neu zu verbinden, oder rufe den Endpunkt direkt auf: speichere den Runner in einer Datei und führe python scripts/fmcp.py script runner.py aus. Für einen Screenshot führe python scripts/fmcp.py shot out.png [richtung] aus.
Konventionen
- Arbeite in mm über
wslib(P(),box(),cyl_y(), …). Nur rohe API-Aufrufe sehen Fusions cm, überwslib.MM. - Modelliere mit temporärem B-Rep (
wslib.tbm()und denunion/cut/intersect-Helfern), dann committe mitadd_bodies. Dies ist schnell, benötigt keine Timeline und funktioniert sowohl in parametrischen als auch in direkten Designs. - Jeder Build löscht und erstellt die Komponenten der obersten Ebene
Enclosure(Shell, Cap) undRefsneu.Refsenthält Geisterkörper (PlugGhost, SpeakerGhost) für Teile, für die wir kein CAD haben. Sie existieren nur für Kollisionsprüfungen und werden nie exportiert. Wenn ein neues gekauftes Teil für die Passform wichtig ist, füge einen Geist dafür hinzu. - Rahmen: die Platine als importiertes STEP. +Y ist die Blickrichtung, die Glasfront liegt bei y=2,78, die USB-C-Öffnung zeigt in -X, und der Schreibtisch liegt unter -Z, geneigt um
base_tilt(30°), sodass der Bildschirm auf den Benutzer zeigt (derived()['down']). - Platinen-Fakten stammen aus der Vermessung des STEP. Messe mit einem Skript und dokumentiere sie in
CLAUDE.md, anstatt sie aus dem PDF zu erraten. - Lasse Ausnahmen propagieren. Der Traceback ist das einzige Fehlersignal, das der MCP zurückgibt.