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" (
MeshToBREPoubRepBodies.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 :
-
Sonde Canary : Appelez l'outil
fusion-mcpexecute_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") -
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_cadest interdit). Assurez-vous toujours qu'un dossier modèle dédié existe sousmodels/<NN>_<Model_Name>/(structurez avecscaffold_text_model.py "<Model_Name>"si nouveau) et acheminez toutes les sorties de découpe dansmodels/<NN>_<Model_Name>/workspace/extracted_cad.
-
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 -
Lisez
models/<NN>_<Model_Name>/workspace/extracted_cad/manifest.json. -
Vérifiez l'
archétypeet 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 +
RevolveFeature360°. - 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."
-
Présentez un tableau récapitulatif à l'utilisateur :
ID Pièce Archétype Boîte englobante ($X \times Y \times Z \text{ mm}$) Niveaux Primitives / Motifs clés détectés
Phase 2 : Mathématiques de métrologie et règles
- 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)
- La base de données interne de Fusion 360 (
- 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_mmdemanifest.json["primitives"]["circles"](rayon circonscrit au 95e percentile) arrondi au $0.05\text{ mm}$ le plus proche.
- 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.
- Lorsque les boucles ont deux lignes droites parallèles et deux extrémités semi-circulaires, modélisez-les comme une fente de base (
- 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 decomp.features.rectangularPatternFeatures. Ne dessinez pas de géométrie répétitive identique à la main.
- Lorsque
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.xZConstructionPlaneet appelezcomp.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.addavecadsk.fusion.FeatureOperations.CutFeatureOperation. - Appliquez
comp.features.rectangularPatternFeatures.addle long decomp.xConstructionAxisetcomp.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 :
- 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 - 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
- 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 !" - 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.