Text zu Fusion 360 Rein Parametrisches CAD-Skill
Wenn der Benutzer ein mechanisches Objekt, ein Bauteil, eine Modifikation, ein Zubehörfach, eine Verbindungselementspezifikation, eine Explosionszeichnung oder eine kinematische Animation in natürlicher Sprache beschreibt, ohne Referenz-3D-Dateien (.3mf/.stl $\rightarrow$ verwende 3mf-to-fusion) oder visuelle Medien (.png/.mp4 $\rightarrow$ verwende media-to-fusion) bereitzustellen, folge diesem 6-Phasen deterministischen CAD-Workflow.
STRENGES CAD-GEBOT:
- Rekonstruiere die gesamte Geometrie mit nativen Skizzen, Konstruktionsebenen, Benutzerparametern und Extrusions-/Rotations-/Verbindungsmerkmalen in der Fusion 360-Zeitleiste. Erzeuge niemals rohe Netzkörper (
root.meshBodies.add) oder facettierte Netzumwandlungen. - Der gesamte Code muss sauber innerhalb von
execute_api_scriptunter Verwendung von Zentimetern (cm = mm / 10.0) ausgeführt werden. - Überprüfe jeden erzeugten oder modifizierten Körper stets visuell mittels
get_screenshot.
Phase 0: Pre-Flight-Überprüfung & Workspace-Ausrichtung
-
Überprüfung der Live Fusion 360 MCP-Sitzung: Führe einen Canary-Probe mittels des
fusion-mcp-Toolsexecute_api_scriptaus:def run(context): import adsk.core, adsk.fusion app = adsk.core.Application.get() if not app or not adsk.fusion.Design.cast(app.activeProduct): raise RuntimeError("Kein aktives Fusion 360-Konstruktionsdokument geöffnet.") print("FUSION_MCP_READY")Fail-Fast-Regel: Wenn die Prüfung fehlschlägt, stoppe und weise den Benutzer an, Autodesk Fusion 360 zu öffnen.
-
Workspace & Monorepo-Routing:
- Primäres Repository: Aktives CAD-Monorepo oder Projektstamm (
CAD_MONOREPO_ROOToder aktueller Workspace). - Strenge Isolationsgarantie: Erstelle niemals temporäre Dateien, Skripte oder Renderings im Repository-Stamm oder verändere
shared/. - Wenn ein brandneues Modell erstellt wird, richte sein dediziertes Verzeichnis ein:
python3 <pfad_zu_skills>/text-to-fusion/scripts/scaffold_text_model.py "<Modellname>" - Speichere Modellskripte in
models/<NN>_<Modellname>/scripts/, visuelle Renderings inmodels/<NN>_<Modellname>/renders/und temporäre Workspace-Dateien inmodels/<NN>_<Modellname>/workspace/. - Importiere universelle CAD-Helfer aus
../../shared/(fusion_client,cad_primitives,hardware_library,scene_animator).
- Primäres Repository: Aktives CAD-Monorepo oder Projektstamm (
-
Domänenreferenzen: Konsultiere die lokale Referenzbibliothek, bevor du benutzerdefinierte Geometrie schreibst:
references/prompt-to-geometry-patterns.md— Übersetzt natürliche Sprache in parametrische Skizzenbeschränkungen.references/exploded-view-guidelines.md— Explosionsvektoren, goldene Führungsstäbe und orthografische Rahmung.references/assembly-animation-pipeline.md— Matrix3D-Occurrence-Transformationsanimation und GIF-Erstellung.references/variant-management-and-undo.md— Sicheres A/B-Varianten-Showrooming und zerstörungsfreies Ausblenden.
Phase 1: Disambiguierung & Parametrische Spezifikation
Wenn Benutzer Geometrie konversationell beschreiben, identifiziere und formalisiere die fehlenden technischen Randbedingungen:
- Hüllkurve & Kritische Abmessungen:
- Gesamter Begrenzungsrahmen ($B \times T \times H$ in mm).
- Minimale Wandstärke (Standard
2.0 - 2.5 mmfür Strukturteile,1.6 mmfür innere Trennwände). - 3D-Drucker-Bettbegrenzung (z.B.
220 × 220 × 250 mm).
- Master-Benutzerparameter registrieren (
design.userParameters): Setze kritische Abmessungen stets als Benutzerparameter, damit der Benutzer sie mit einem Klick skalieren kann:def set_user_param(design, name, expr_str, units="mm", comment=""): existing = design.userParameters.itemByName(name) if existing: existing.expression = expr_str return existing return design.userParameters.add( name, adsk.core.ValueInput.createByString(expr_str), units, comment )
Phase 2: Varianten-Staging & Reversible Exploration
Wenn der Benutzer nach Designoptionen fragt („zeige mir Option 2“, „versuche eine Version ohne Deckel“):
- Das Showroom-Muster:
- Modelliere experimentelle Optionen in einer dedizierten Komponente (z.B.
Sample_Options_Showroom:1). - Platziere Varianten nebeneinander auf der virtuellen Werkbankfläche (z.B. $Y = -350\text{ mm}$ oder $X = -200\text{ mm}$) mit markanten Erscheinungsbildern (
Rack_Desert_Tan,Rack_Matte_White). - Erstelle eine nebeneinanderliegende Übersichtsaufnahme mit Beschriftungen.
- Modelliere experimentelle Optionen in einer dedizierten Komponente (z.B.
- Zerstörungsfreie Übernahme:
- Wenn der Benutzer einen Gewinner auswählt, klone die ausgewählten Körper in die aktive Baugruppe (
InSitu_Tier3_Option2). - Blende abgelehnte Showroom-Körper mittels
bRepBody.isLightBulbOn = Falseaus. - Rufe niemals
body.deleteMe()auf Objekten auf, die nachgelagerte Zeitleistenverweise unterbrechen könnten.
- Wenn der Benutzer einen Gewinner auswählt, klone die ausgewählten Körper in die aktive Baugruppe (
Phase 3: Standard-Verbindungselemente & Stücklistensynthese
Wenn der Benutzer nach Schrauben, Muttern oder Montagematerial fragt:
- Normteilstandardisierung:
- Standardmäßig DIN 7991 M3 Senkkopfschrauben und DIN 934 M3 Sechskantmuttern für alle Drehpunkte und Strukturverbindungen verwenden.
- Standard-Taschenabmessungen:
- Sechskantmuttertasche: Modelliert über Schlüsselweite (AF) bei
5.70 mm(+0.20 mmFDM-Spielraum über5.50 mmMutter), Tiefe2.50 mm. - Schraubenloch: $\varnothing 3.20\text{ mm}$ Durchgangsloch mit einer 90° konischen Senkbohrung ($\varnothing 6.20\text{ mm} \times 1.80\text{ mm}$).
- Haltescheiben: 3D-gedruckte Scheibe ($\varnothing 9.50\text{ mm}$ AD × $\varnothing 3.20\text{ mm}$ ID ×
1.80 mmdick, 90° Senkung), die die Spitze des Drehpunktzapfens klemmt, während die Verbindungsstange frei drehbar bleibt.
- Sechskantmuttertasche: Modelliert über Schlüsselweite (AF) bei
- Template-Parkregel:
- Master-Vorlagen (
Template_DIN_7991_M3x10,Template_DIN_934_M3) müssenisLightBulbOn = Truegesetzt haben. - Parke Vorlagen weit unterirdisch (
Z = -500.0 cm), sodass die abgeleiteten Instanzen in der Baugruppe sichtbar bleiben, während die Vorlagen vollständig außerhalb des Bildschirms liegen.
- Master-Vorlagen (
Phase 4: Explosionszeichnungen & Technische Illustration
Wenn der Benutzer darstellen möchte, wie Teile zusammengesetzt werden:
- Lineare Explosionsversätze:
- Versetze Verbindungsstangen entlang der Hauptachse nach außen ($+X$ um
35 - 50 mm). - Versetze Strukturständer oder Rahmen entlang $Y$ nach hinten (
+45 - 60 mm). - Versetze modulare Einsätze entlang $Z$ nach oben (
+40 - 50 mm).
- Versetze Verbindungsstangen entlang der Hauptachse nach außen ($+X$ um
- Goldene Ausrichtungsführungsstäbe:
- Extrahiere dünne zylindrische Stäbe ($\varnothing 1.2 - 1.4\text{ mm}$, Erscheinungsbild
Rack_Mustard_YellowoderGold - Polished), die durch jede Schrauben-/Drehpunktachse vom innersten Schraubenkopf bis zur äußersten Mutter verlaufen. - Gruppiere alle Stäbe in einer dedizierten Komponente:
Opened_Explosion_Guides.
- Extrahiere dünne zylindrische Stäbe ($\varnothing 1.2 - 1.4\text{ mm}$, Erscheinungsbild
- Orthografische Kameraeinrichtung:
Setze
cam.cameraType = OrthographicCameraTypemit gezielten Begrenzungsausdehnungen, um parallele Achsen ohne perspektivische Verzerrung zu gewährleisten.
Phase 5: Hochgeschwindigkeits-Baugruppenanimations-Pipeline
Wenn der Benutzer ein animiertes GIF anfordert, das zeigt, wie Teile an ihren Platz animiert werden:
- Occurrence-basiertes Szenengraph-Rigging:
- Gruppiere jede bewegte Baugruppe in ihre eigene dedizierte
Occurrence(Anim_Bars,Anim_Stand,Anim_Fasteners). - Verwende NICHT
features.moveFeatures.add()innerhalb der Bildschleife (verursacht ~2,2 s Zeitleisten-Neuaufbau pro Bild). - Weise direkt
occ.transform = Matrix3Dneu zu (0.005 s/Bild).
- Gruppiere jede bewegte Baugruppe in ihre eigene dedizierte
- Mehrstufiger gestaffelter Smoothstep:
Wende Smoothstep-Easing $s(\tau) = 3\tau^2 - 2\tau^3$ über gestaffelte Unterbaugruppenintervalle an ($t \in [0.0, 1.0]$):
- Stand-Andocken: $t \in [0.00, 0.40]$
- Verbindungsstangensitz: $t \in [0.15, 0.60]$
- Haltescheibensitz: $t \in [0.30, 0.70]$
- Verbindungselementeklemmen: $t \in [0.40, 0.92]$
- Ausblenden der Führungen:
guides_occ.isLightBulbOn = (t < 0.88)
- In-Skript-Batch-Rendering & Ping-Pong-Erstellung:
- Rendere Bilder direkt auf die Festplatte:
vp.saveAsImageFile('/tmp/frames/frame_%03d.png', 800, 800). - Erstelle mit
PIL.Image: 28 Vorwärtsbilder (45 ms) $\to$ 28 Haltebilder montiert (50 ms) $\to$ 26 Rückwärtsbilder (45 ms) $\to$ 20 Haltebilder explodiert (50 ms). - Quantisiere mit 128 adaptiven Farben und Floyd-Steinberg-Dithering (~
2.3 MB). - Verwende einen eindeutigen/versionierten Dateinamen (z.B.
_final.gif), um den Browser-Chat-Bildcache zu umgehen.
- Rendere Bilder direkt auf die Festplatte:
Phase 6: Mathematische Selbstverifikation & DevBrain-Abgleich
- Überprüfe Passflächen mathematisch:
- Wenn ein Teil mit einem unerwarteten Spalt erscheint („sieht nach hinten versetzt aus“), überprüfe die Weltkoordinaten:
delta = target_face.x - moving_face.x. - Wende das exakte mathematische Delta an; nimm niemals Anpassungen durch Raten vor.
- Wenn ein Teil mit einem unerwarteten Spalt erscheint („sieht nach hinten versetzt aus“), überprüfe die Weltkoordinaten:
- Führe Abschluss & Speicherabgleich durch:
- Übertrage die abgegrenzten Änderungen an das aktive CAD-Repository.
- Wenn ein neuer Mechanismus, eine Toleranzregel oder eine API-Eigenheit geknackt wurde, dokumentiere sie in
references/und protokolliere die Änderung inCHANGELOG.md.