text-to-fusion

Traduit des descriptions en langage naturel, des ajustements mécaniques, des demandes de nomenclature de fixations, des vues éclatées et des animations cinématiques en modèles CAO 3D paramétriques 100% natifs dans Autodesk Fusion 360 via le serveur MCP Fusion 360.

Qu'est-ce que text-to-fusion ?

Cette compétence d'agent IA (skill) est un pipeline déterministe en six phases qui transforme les descriptions en langage naturel d'objets mécaniques en modèles CAO 3D paramétriques natifs dans Autodesk Fusion 360. Elle s'appuie sur le serveur MCP Fusion 360 pour exécuter des scripts Python directement dans l'API de Fusion, garantissant que toute la géométrie est construite à l'aide de fonctionnalités natives de la chronologie (esquisses, plans de construction, paramètres utilisateur, extrusions/révolutions/articulations) plutôt que de maillages bruts. La compétence gère un large éventail de cas d'utilisation : spécifications dimensionnelles exactes, exploration non destructive de variantes A/B, synthèse de nomenclature de fixations standard (vis DIN, écrous hexagonaux), génération de vues éclatées avec tiges de guidage, et animation assemblée fluide pour GIF. La compétence comprend également une vérification mathématique automatique des limites d'accouplement, la synchronisation de la mémoire de travail dans un référentiel CAO monorepo, et la journalisation des nouvelles règles de tolérance ou astuces d'API dans un fichier CHANGELOG. Elle est conçue pour les développeurs et les utilisateurs d'agents IA qui ont besoin d'un contrôle précis et reproductible de la CAO sans intervention manuelle, en prenant en charge les plates-formes compatibles avec le protocole MCP et le serveur Fusion 360 MCP.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Kamish76/To-Fusion-Skill-Sets/tree/HEAD/skills/text-to-fusion

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Compétence CAO Paramétrique Pure Texte vers Fusion 360

Lorsque l'utilisateur décrit un objet mécanique, une pièce, une modification, un plateau accessoire, une spécification de fixation, un assemblage éclaté ou une animation cinématique en langage naturel sans fournir de fichiers 3D de référence (.3mf/.stl $ ightarrow$ utiliser 3mf-to-fusion) ou de support visuel (.png/.mp4 $ ightarrow$ utiliser media-to-fusion), suivez ce flux de travail CAO déterministe en 6 phases.

MANDAT CAO STRICT :

  • Reconstruisez toute la géométrie à l'aide d'esquisses natives, de plans de construction, de paramètres utilisateur et de fonctionnalités Extrusion/Révolution/Articulation dans la chronologie de Fusion 360. Ne générez jamais de corps maillés bruts (root.meshBodies.add) ou de conversions de maillage facetté.
  • Tout le code doit s'exécuter proprement à l'intérieur de execute_api_script en utilisant des centimètres (cm = mm / 10.0).
  • Vérifiez toujours visuellement chaque corps généré ou modifié à l'aide de get_screenshot.

Phase 0 : Sonde Pré-Vol & Alignement de l'Espace de Travail

  1. Vérifier la Session Active Fusion 360 MCP : Exécutez la sonde canari via l'outil fusion-mcp execute_api_script :

    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("Aucun document de conception Fusion 360 actif ouvert.")
        print("FUSION_MCP_READY")
    

    Règle d'Échec Rapide : Si la sonde échoue, arrêtez-vous et demandez à l'utilisateur d'ouvrir Autodesk Fusion 360.

  2. Espace de Travail & Routage Monorepo :

    • Dépôt principal : Monorepo CAO actif ou racine du projet (CAD_MONOREPO_ROOT ou espace de travail actuel).
    • Garantie d'Isolation stricte : Ne créez jamais de fichiers temporaires, de scripts ou de rendus dans la racine du dépôt et ne mute pas shared/.
    • Si vous démarrez un tout nouveau modèle, créez son dossier dédié :
      python3 <chemin_vers_skills>/text-to-fusion/scripts/scaffold_text_model.py "<Nom_Modèle>"
      
    • Stockez les scripts du modèle dans models/<NN>_<Nom_Modèle>/scripts/, les rendus visuels dans models/<NN>_<Nom_Modèle>/renders/, et les fichiers d'espace de travail intermédiaires dans models/<NN>_<Nom_Modèle>/workspace/.
    • Importez les aides CAO universels depuis ../../shared/ (fusion_client, cad_primitives, hardware_library, scene_animator).
  3. Références de Domaine : Consultez la bibliothèque de références locales avant d'écrire une géométrie personnalisée :

    • references/prompt-to-geometry-patterns.md — Traduit le langage naturel en contraintes d'esquisse paramétriques.
    • references/exploded-view-guidelines.md — Vecteurs d'explosion, tiges de guidage dorées et cadrage orthographique.
    • references/assembly-animation-pipeline.md — Animation de transformation d'occurrence Matrix3D et compilation GIF.
    • references/variant-management-and-undo.md — Présentation sécurisée des variantes A/B et masquage non destructif.

Phase 1 : Désambiguïsation & Spécification Paramétrique

Lorsque les utilisateurs décrivent la géométrie de manière conversationnelle, identifiez et formalisez les contraintes d'ingénierie manquantes :

  1. Enveloppe & Dimensions Critiques :
    • Boîte englobante globale ($L \times P \times H$ en mm).
    • Épaisseur de paroi minimale (par défaut 2.0 - 2.5 mm pour les pièces structurelles, 1.6 mm pour les séparateurs internes).
    • Limite du plateau d'impression 3D (par ex. 220 × 220 × 250 mm).
  2. Enregistrer les Paramètres Utilisateur Maîtres (design.userParameters) : Exposez toujours les dimensions critiques en tant que paramètres utilisateur afin que l'utilisateur puisse redimensionner en un clic :
    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 : Mise en Scène des Variantes & Exploration Réversible

Lorsque l'utilisateur demande des options de conception (« donne-moi l'option 2 », « essaie une version sans couvercles ») :

  1. Le Modèle Showroom :
    • Modélisez les options expérimentales dans un composant dédié (par exemple Sample_Options_Showroom:1).
    • Espacez les variantes côte à côte sur le sol de l'espace de travail virtuel (par exemple $Y = -350\text{ mm}$ ou $X = -200\text{ mm}$) avec des apparences distinctives (Rack_Desert_Tan, Rack_Matte_White).
    • Capturez une capture d'écran de vue d'ensemble côte à côte avec des étiquettes.
  2. Adoption Non Destructrice :
    • Lorsque l'utilisateur sélectionne un gagnant, clonez les corps choisis dans l'assemblage actif (InSitu_Tier3_Option2).
    • Masquez les corps du showroom rejetés via bRepBody.isLightBulbOn = False.
    • N'appelez jamais body.deleteMe() sur des objets qui pourraient casser les références en aval de la chronologie.

Phase 3 : Fixations Standard & Synthèse de la Nomenclature Matérielle

Lorsque l'utilisateur demande des vis, écrous ou quincaillerie d'assemblage :

  1. Standardisation du Matériel :
    • Par défaut, utilisez des vis à tête fraisée DIN 7991 M3 et des écrous hexagonaux DIN 934 M3 pour tous les pivots et joints structurels.
  2. Dimensions Standard des Pockets :
    • Pocket pour écrou hexagonal : Modélisé sur les plats (AF) à 5.70 mm (+0.20 mm de jeu FDM par rapport à l'écrou 5.50 mm), profondeur 2.50 mm.
    • Alésage de vis : $ riangle$ 3.20\text{ mm}$ de passage avec un pocket conique à 90° pour tête fraisée ($ riangle$ 6.20\text{ mm} \times 1.80\text{ mm}$).
    • Rondelles de retenue : Rondelle imprimée 3D ($ riangle$ 9.50\text{ mm}$ DE × $ riangle$ 3.20\text{ mm}$ DI × 1.80 mm d'épaisseur, fraisure à 90°) serrant l'extrémité du bossage de pivot tout en laissant la barre de liaison libre de tourner.
  3. Règle de Stationnement des Modèles :
    • Les modèles de matériel maître (Template_DIN_7991_M3x10, Template_DIN_934_M3) doivent avoir isLightBulbOn = True.
    • Garez les modèles loin sous terre (Z = -500.0 cm) afin que les instances enfants dans l'assemblage restent visibles tandis que les modèles restent complètement hors écran.

Phase 4 : Vues Éclatées & Illustration Technique

Lorsque l'utilisateur demande à illustrer comment les pièces s'assemblent :

  1. Décalages d'Explosion Linéaires :
    • Décaler les barres de liaison vers l'extérieur le long de l'axe principal ($+X$ de 35 - 50 mm).
    • Décaler les supports structurels ou les cadres vers l'arrière le long de $Y$ (+45 - 60 mm).
    • Décaler les inserts modulaires vers le haut le long de $Z$ (+40 - 50 mm).
  2. Tiges de Guidage d'Alignement Dorées :
    • Extruder de fines tiges cylindriques ($ riangle$ 1.2 - 1.4\text{ mm}$, apparence Rack_Mustard_Yellow ou Or - Poli) traversant chaque axe de vis/pivot de la tête de vis la plus interne à l'écrou le plus externe.
    • Grouper toutes les tiges dans un composant dédié : Opened_Explosion_Guides.
  3. Configuration de Caméra Orthographique : Définir cam.cameraType = OrthographicCameraType avec des étendues de boîte englobante ciblées pour garantir des axes parallèles sans distorsion de perspective.

Phase 5 : Pipeline d'Animation d'Assemblage à Haute Vitesse

Lorsque l'utilisateur demande un GIF animé montrant les pièces s'animant en place :

  1. Griffage du Graphe de Scène Basé sur les Occurrences :
    • Grouper chaque assemblage mobile dans sa propre Occurrence dédiée (Anim_Bars, Anim_Stand, Anim_Fasteners).
    • N'UTILISEZ PAS features.moveFeatures.add() dans la boucle d'image (causer une reconstruction de la chronologie ~2,2 s par image).
    • Réaffecter directement occ.transform = Matrix3D (0,005 s/image).
  2. Smoothstep Échelonné Multi-Étapes : Appliquer l'assouplissement smoothstep $s(\tau) = 3\tau^2 - 2\tau^3$ sur des intervalles de sous-assemblage échelonnés ($t \in [0,0, 1,0]$) :
    • Amarrage du support : $t \in [0,00, 0,40]$
    • Mise en place des barres de liaison : $t \in [0,15, 0,60]$
    • Mise en place des rondelles de retenue : $t \in [0,30, 0,70]$
    • Serrage des fixations : $t \in [0,40, 0,92]$
    • Disparition des guides : guides_occ.isLightBulbOn = (t < 0.88)
  3. Rendu par Lots Intégré au Script & Compilation Ping-Pong :
    • Rendre les images directement sur le disque : vp.saveAsImageFile('/tmp/frames/frame_%03d.png', 800, 800).
    • Compiler à l'aide de PIL.Image : 28 images avant (45 ms) $\to$ 28 images de pause assemblée (50 ms) $\to$ 26 images arrière (45 ms) $\to$ 20 images de pause éclatée (50 ms).
    • Quantifier avec 128 couleurs adaptatives et tramage Floyd-Steinberg (~2,3 MB).
    • Utiliser un nom de fichier unique/versionné (par exemple _final.gif) pour vider le cache d'images du chat du navigateur.

Phase 6 : Auto-Vérification Mathématique & Synchronisation DevBrain

  1. Vérifier Mathématiquement les Limites d'Accouplement :
    • Si une pièce apparaît avec un espace inattendu (« semble à la traîne »), inspectez les coordonnées mondiales : delta = target_face.x - moving_face.x.
    • Appliquez le delta mathématique exact ; ne devinez jamais les ajustements.
  2. Exécuter le Bilan & la Synchronisation Mémoire :
    • Validez les modifications de portée dans le dépôt CAO actif.
    • Si un nouveau mécanisme, une règle de tolérance ou une bizarrerie d'API a été résolu, enregistrez-le dans references/ et consignez la modification dans CHANGELOG.md.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills associés