3mf-to-fusion

Moteur avancé de rétro-ingénierie CAO pour fichiers 3MF et STL. Découpe, analyse et inspecte mathématiquement les maillages bruts (coupes transversales, rayons de cercles circonscrits, fentes oblongues, poches hexagonales, profils tournés et réseaux de motifs) et synthétise des corps solides paramétriques BRep entièrement natifs et modifiables dans Autodesk Fusion 360 via le serveur MCP Fusion 360.

Qu'est-ce que 3mf-to-fusion ?

Cette compétence transforme des fichiers maillés 3MF ou STL en modèles CAO paramétriques natifs dans Autodesk Fusion 360. Contrairement à la conversion de maillage en surface (MeshToBREP), qui produit des faces triangulaires rigides et non modifiables, elle suit un pipeline d'analyse déterministe : découpage du maillage en sections 2D, identification des primitives géométriques (cercles circonscrits, fentes oblongues, poches hexagonales, profils tournés, réseaux de motifs), puis reconstruction de corps solides pleinement paramétriques à l'aide de sketches, d'extrusions, de révolutions et de fonctions de répétition. La compétence intègre une vérification de disponibilité du serveur Fusion 360 MCP, une isolation des espaces de travail par modèle, et une étape de validation visuelle et structurelle du timeline. Elle est recommandée pour les fichiers CAO mécaniques prismatiques ou axisymétriques, mais déconseillée pour les sculptures organiques libres.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Kamish76/To-Fusion-Skill-Sets/tree/HEAD/skills/3mf-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 de rétro-ingénierie analytique 3MF / STL vers Fusion 360

Lorsqu'il vous est demandé de copier, de rétro-concevoir ou de recréer un fichier .3mf ou .stl dans Autodesk Fusion 360, suivez ce pipeline analytique déterministe.

LE MANDAT DE RÉTRO-INGÉNIERIE CAO

[!IMPORTANT] STRICTEMENT INTERDIT : Ne jamais utiliser la fonction intégrée "Convertir le maillage en solide" (MeshToBREP ou bRepBodies.addByMesh) de Fusion 360.

Convertir directement les facettes du maillage en BRep crée des dizaines de milliers de faces triangulaires planes qui figent la vue, ne peuvent pas être arrondies ou chanfreinées, cassent les opérations de FAO/plans en aval et détruisent toute intention paramétrique de conception.

OBLIGATOIRE : Disséquer mathématiquement le maillage ("trancher et découper"), extraire ses coupes transversales 2D et ses primitives géométriques (fentes, trous circonscrits, lamages, profils tournés, motifs rectangulaires) et construire des corps solides paramétriques 100 % natifs dans l'historique de Fusion 360 en utilisant des esquisses, des paramètres utilisateurs, des extrusions, des révolutions et des fonctions de répétition.


Phase 0 : Porte de sécurité pré-vol (Obligatoire)

Avant de traiter des fichiers, vérifiez qu'Autodesk Fusion 360 et son serveur MCP sont actifs :

  1. Sonde Canary : Appelez l'outil fusion-mcp execute_api_script :

    def run(context):
        import adsk.core, adsk.fusion
        app = adsk.core.Application.get()
        if not app:
            raise RuntimeError("Instance de l'application Autodesk Fusion 360 introuvable.")
        design = adsk.fusion.Design.cast(app.activeProduct)
        if not design:
            raise RuntimeError("Aucun document de conception Fusion 360 actif ouvert.")
        print("FUSION_MCP_READY")
    
  2. Règle d'abandon rapide :

    • Si l'appel échoue ou expire, ARRÊTEZ immédiatement.
    • N'exécutez PAS de scripts d'extraction ou de commandes CAO.
    • Demandez à l'utilisateur d'ouvrir Fusion 360, de s'assurer que le module complémentaire est démarré et d'ouvrir un document actif.

Phase 1 : Trancher, découper et classer (Moteur de métrologie)

[!IMPORTANT] Règle d'isolation de l'espace de travail : Ne jamais sortir les fichiers d'extraction dans la racine du dépôt principal (par exemple ./extracted_cad est interdit). Assurez-vous toujours qu'un dossier modèle dédié existe sous models/<NN>_<Model_Name>/ (structurez avec scaffold_text_model.py "<Model_Name>" si nouveau) et acheminez toutes les sorties de découpe dans models/<NN>_<Model_Name>/workspace/extracted_cad.

  1. Exécutez le moteur de métrologie approfondie dans l'espace de travail isolé du modèle :

    python3 <path_to_skills>/3mf-to-fusion/scripts/inspect_3mf.py <path_to_file.3mf_or_stl> --out-dir models/<NN>_<Model_Name>/workspace/extracted_cad
    
  2. Lisez models/<NN>_<Model_Name>/workspace/extracted_cad/manifest.json.

  3. Vérifiez l'archétype et les fonctionnalités détectées pour chaque pièce :

    • Type A : Prismatique / En gradins CAO : Extrusion de base plane + découpes de poches + réseaux de trous.
    • Type T : Tourné / Axisymétrique : Tranches circulaires colinéaires le long de l'axe Z. Modélisé à l'aide d'une seule esquisse de demi-profil + RevolveFeature 360°.
    • Type B : Boîtier/Coque multi-niveaux : Plans de construction étagés + extrusions à paroi mince + coque.
    • Type C : Sculpture organique libre : Courbure non plane élevée ($> 15$ niveaux). Avertissez immédiatement l'utilisateur :

      "Cette pièce est une sculpture organique continue sans faces planes discrètes ni esquisses prismatiques. La reconstruire à l'aide d'esquisses planes générera une approximation en escalier plutôt qu'une sculpture organique lisse."

  4. Présentez un tableau récapitulatif à l'utilisateur :

    ID PièceArchétypeBoîte englobante ($X \times Y \times Z \text{ mm}$)NiveauxPrimitives / Motifs clés détectés

Phase 2 : Mathématiques de métrologie et règles

  1. Conversion d'unité (cm = mm / 10.0) :
    • La base de données interne de Fusion 360 (adsk.core.ValueInput.createByReal()) utilise strictement les centimètres (cm).
    • Définissez en haut de chaque script :
      def mm(val): return adsk.core.ValueInput.createByReal(float(val) / 10.0)
      
  2. Compensation du cercle circonscrit (Erreur de corde) :
    • Les tessellations STL approximent les trous circulaires avec des polygones inscrits dont les bords sont coupés vers l'intérieur le long des cordes.
    • N'utilisez jamais le diamètre minimum intérieur. Utilisez toujours radius_mm de manifest.json["primitives"]["circles"] (rayon circonscrit au 95e percentile) arrondi au $0.05\text{ mm}$ le plus proche.
  3. Reconnaissance de fente / oblongue :
    • Lorsque les boucles ont deux lignes droites parallèles et deux extrémités semi-circulaires, modélisez-les comme une fente de base (sketchLines + sketchArcs) plutôt que comme un polygone multi-segments.
  4. Reconnaissance de motifs (Grille / Polaire) :
    • Lorsque manifest.json["patterns"] détecte un pas régulier ($\Delta X, \Delta Y$), modélisez une découpe maître de base et dupliquez-la à l'aide de comp.features.rectangularPatternFeatures. Ne dessinez pas de géométrie répétitive identique à la main.

Phase 3 : Reconstruction Fusion 360 purement paramétrique

Générez la CAO via execute_api_script. Reconstruisez chaque pièce à l'aide de fonctions d'historique propres :

Étape 1 : Occurrence et paramètres utilisateur

transform = adsk.core.Matrix3D.create()
occ = root.occurrences.addNewComponent(transform)
comp = occ.component
comp.name = part_name

# Ajouter des paramètres pilotes
params = design.userParameters
params.add(f"{part_name}_width", mm(width_mm), "mm", "Largeur de base")
params.add(f"{part_name}_length", mm(length_mm), "mm", "Longueur de base")
params.add(f"{part_name}_height", mm(height_mm), "mm", "Hauteur de base")

Étape 2 : Géométrie solide primaire

  • Si Type T (Tourné) : Esquissez le demi-profil sur comp.xZConstructionPlane et appelez comp.features.revolveFeatures.add(prof, comp.zConstructionAxis, adsk.fusion.FeatureOperations.NewBodyFeatureOperation).
  • Si Type A/B (Prismatique) : Esquissez le contour de base sur comp.xYConstructionPlane (centré à l'origine) et extrudez le solide de base.

Étape 3 : Découpes et motifs secondaires

  • Dessinez la découpe maître de base (fente, lamage ou poche).
  • Appliquez comp.features.extrudeFeatures.add avec adsk.fusion.FeatureOperations.CutFeatureOperation.
  • Appliquez comp.features.rectangularPatternFeatures.add le long de comp.xConstructionAxis et comp.yConstructionAxis.

Étape 4 : Finitions

  • Appliquez des congés d'angle (comp.features.filletFeatures) et des chanfreins (comp.features.chamferFeatures).

Phase 4 : Superposition fantôme de référence et inspection dans la CAO

Pour vérifier l'alignement mathématique et dimensionnel sans polluer le modèle final :

  1. Maillage de référence fantôme (Optionnel) : Si un alignement visuel détaillé est nécessaire, importez le maillage brut dans une occurrence de référence temporaire distincte :
    # Importer le maillage comme arrière-plan de référence
    ref_occ = root.occurrences.addNewComponent(transform)
    ref_occ.component.name = "Reference_Mesh_Ghost"
    # Définir le style visuel transparent
    
  2. Inspection visuelle et d'interférence :
    • Vérifiez que le solide paramétrique englobe et s'aligne complètement avec l'enveloppe du maillage.
    • Une fois vérifié, masquez ou supprimez ref_occ.

Phase 5 : Santé de l'historique et porte de vérification visuelle automatique

  1. Vérification des fonctions de l'historique : Assurez-vous qu'aucun corps maillé n'existe dans la pièce reconstruite :
    assert comp.bRepBodies.count > 0, "Aucun corps solide produit !"
    assert comp.meshBodies.count == 0, "Corps maillé (MeshBody) détecté dans le composant !"
    assert comp.sketches.count > 0, "Aucune esquisse trouvée dans l'historique !"
    
  2. Inspection visuelle : Appelez get_screenshot(view="iso-top-right", width=1024, height=1024) pour vérifier visuellement le modèle solide paramétrique propre et l'arbre d'historique propre.

Individual skills in this repo

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

Skills associés