Habilidad de Ingeniería Inversa Analítica 3MF / STL a Fusion 360
Cuando se le pida copiar, hacer ingeniería inversa o recrear un archivo .3mf o .stl en Autodesk Fusion 360, siga este proceso analítico determinista.
EL MANDATO DE INGENIERÍA INVERSA CAD
[!IMPORTANT] ESTRICTAMENTE PROHIBIDO: Nunca use la función integrada "Convertir malla en sólido" de Fusion 360 (
MeshToBREPobRepBodies.addByMesh).Convertir facetas de malla directamente en BRep crea decenas de miles de caras triangulares planas que congelan la ventana gráfica, no se pueden redondear ni chaflanar, rompen el CAM/dibujos posteriores y destruyen toda la intención paramétrica del diseño.
OBLIGATORIO: Diseccione la malla matemáticamente ("rebane y corte"), extraiga sus secciones transversales 2D y primitivas geométricas (ranuras, agujeros circunscritos, avellanados, perfiles torneados, patrones rectangulares) y construya cuerpos sólidos paramétricos 100% nativos en la línea de tiempo de Fusion 360 usando bocetos, parámetros de usuario directores, extrusiones, revoluciones y operaciones de patrón.
Fase 0: Control de Seguridad Prevuelo (Obligatorio)
Antes de procesar archivos, verifique que Autodesk Fusion 360 y su servidor MCP estén activos:
-
Sonda Canaria: Llame a la herramienta
fusion-mcpexecute_api_script:def run(context): import adsk.core, adsk.fusion app = adsk.core.Application.get() if not app: raise RuntimeError("Instancia de la aplicación Autodesk Fusion 360 no encontrada.") design = adsk.fusion.Design.cast(app.activeProduct) if not design: raise RuntimeError("No hay ningún documento de diseño de Fusion 360 activo.") print("FUSION_MCP_READY") -
Regla de Aborto Inmediato:
- Si la llamada falla o expira, DETÉNGASE inmediatamente.
- No ejecute scripts de extracción ni comandos CAD.
- Indique al usuario que abra Fusion 360, asegúrese de que el complemento esté iniciado y abra un documento activo.
Fase 1: Rebane, Corte y Clasifique (Motor de Metrología)
[!IMPORTANT] Regla de Aislamiento del Espacio de Trabajo: Nunca genere archivos de extracción en la raíz principal del repositorio (por ejemplo,
./extracted_cadestá prohibido). Asegúrese siempre de que exista una carpeta de modelo dedicada bajomodels/<NN>_<Nombre_Del_Modelo>/(andamie conscaffold_text_model.py "<Nombre_Del_Modelo>"si es nuevo), y dirija todas las salidas de rebanado/corte amodels/<NN>_<Nombre_Del_Modelo>/workspace/extracted_cad.
-
Ejecute el motor de metrología profunda en el espacio de trabajo aislado del modelo:
python3 <ruta_hacia_habilidades>/3mf-to-fusion/scripts/inspect_3mf.py <ruta_al_archivo.3mf_o_stl> --out-dir models/<NN>_<Nombre_Del_Modelo>/workspace/extracted_cad -
Lea
models/<NN>_<Nombre_Del_Modelo>/workspace/extracted_cad/manifest.json. -
Verifique el
archetypey las características detectadas para cada pieza:- Tipo A: CAD Prismático/Escalonado: Extrusión base plana + cortes de bolsillo + matrices de agujeros.
- Tipo T: Torneado/Axisimétrico: Cortes circulares colineales a lo largo del eje Z. Modele usando un solo boceto de medio perfil +
RevolveFeaturede 360°. - Tipo B: Recinto Multicapa/Cáscara: Planos de construcción escalonados + extrusiones de pared delgada + cáscara.
- Tipo C: Escultura Orgánica de Forma Libre: Alta curvatura no plana ($> 15$ niveles). Informe inmediatamente al usuario:
"Esta pieza es una escultura orgánica continua sin caras planas discretas ni bocetos prismáticos. Reconstruirla usando bocetos planos generará una aproximación escalonada en lugar de una escultura orgánica suave."
-
Presente una tabla resumen al usuario:
ID de Pieza Arquetipo Caja Delimitadora ($X \times Y \times Z\text{ mm}$) Niveles Primitivas/Patrones Clave Detectados
Fase 2: Matemáticas y Reglas de Metrología
- Conversión de Unidades (
cm = mm / 10.0) :- La base de datos interna de Fusion 360 (
adsk.core.ValueInput.createByReal()) usa estrictamente centímetros (cm). - Defina al inicio de cada script:
def mm(val): return adsk.core.ValueInput.createByReal(float(val) / 10.0)
- La base de datos interna de Fusion 360 (
- Compensación del Círculo Circunscrito (Error de Cuerda) :
- Las teselaciones STL aproximan los agujeros circulares con polígonos inscritos cuyos bordes se cortan hacia adentro a lo largo de las cuerdas.
- Nunca use el diámetro mínimo interior. Use siempre
radius_mmdemanifest.json["primitives"]["circles"](radio circunscrito del percentil 95) redondeado al $0.05\text{ mm}$ más cercano.
- Reconocimiento de Ranura/Obround :
- Cuando los bucles tengan dos líneas rectas paralelas y dos extremos semicirculares, modelelos como una ranura semilla (
sketchLines+sketchArcs) en lugar de un polígono de múltiples segmentos.
- Cuando los bucles tengan dos líneas rectas paralelas y dos extremos semicirculares, modelelos como una ranura semilla (
- Reconocimiento de Patrones (Cuadrícula/Polar) :
- Cuando
manifest.json["patterns"]detecte un paso regular ($\Delta X, \Delta Y$), modele un corte de semilla maestro y duplíquelo usandocomp.features.rectangularPatternFeatures. No dibuje geometría repetitiva idéntica a mano.
- Cuando
Fase 3: Reconstrucción Paramétrica Pura en Fusion 360
Ejecute la generación CAD mediante execute_api_script. Reconstruya cada pieza usando operaciones limpias de la línea de tiempo:
Paso 1: Ocurrencia y Parámetros de Usuario
transform = adsk.core.Matrix3D.create()
occ = root.occurrences.addNewComponent(transform)
comp = occ.component
comp.name = nombre_pieza
# Agregar Parámetros Directores
params = design.userParameters
params.add(f"{nombre_pieza}_ancho", mm(ancho_mm), "mm", "Ancho base")
params.add(f"{nombre_pieza}_largo", mm(largo_mm), "mm", "Largo base")
params.add(f"{nombre_pieza}_alto", mm(alto_mm), "mm", "Alto base")
Paso 2: Geometría Sólida Primaria
- Si Tipo T (Torneado) : Dibuje medio perfil en
comp.xZConstructionPlaney llame acomp.features.revolveFeatures.add(prof, comp.zConstructionAxis, adsk.fusion.FeatureOperations.NewBodyFeatureOperation). - Si Tipo A/B (Prismático) : Dibuje el contorno base en
comp.xYConstructionPlane(centrado en el origen) y extruya el sólido base.
Paso 3: Cortes Secundarios y Patrones
- Dibuje el corte semilla maestro (ranura, avellanado o bolsillo).
- Aplique
comp.features.extrudeFeatures.addconadsk.fusion.FeatureOperations.CutFeatureOperation. - Aplique
comp.features.rectangularPatternFeatures.adda lo largo decomp.xConstructionAxisycomp.yConstructionAxis.
Paso 4: Toques Finales
- Aplique redondeos de esquina (
comp.features.filletFeatures) y chaflanes (comp.features.chamferFeatures).
Fase 4: Superposición Fantasma de Referencia e Inspección en CAD
Para verificar la alineación matemática y dimensional sin contaminar el modelo final:
- Malla de Referencia Fantasma (Opcional) :
Si se necesita una alineación visual detallada, importe la malla sin procesar en una ocurrencia de referencia temporal separada:
# Importar malla como fondo de referencia ref_occ = root.occurrences.addNewComponent(transform) ref_occ.component.name = "Referencia_Malla_Fantasma" # Establecer estilo visual transparente - Inspección Visual y de Interferencia :
- Verifique que el sólido paramétrico envuelva completamente y se alinee con la envolvente de la malla.
- Una vez verificado, oculte o elimine
ref_occ.
Fase 5: Salud de la Línea de Tiempo y Control de Verificación Visual Automática
- Verificación de Operaciones en la Línea de Tiempo:
Asegúrese de que no existan cuerpos de malla en la pieza reconstruida:
assert comp.bRepBodies.count > 0, "¡No se produjeron cuerpos sólidos!" assert comp.meshBodies.count == 0, "¡Se detectó MeshBody prohibido en el componente!" assert comp.sketches.count > 0, "¡No se encontraron bocetos en la línea de tiempo!" - Inspección Visual:
Llame a
get_screenshot(view="iso-arriba-derecha", width=1024, height=1024)para verificar visualmente el modelo sólido paramétrico limpio y el árbol de la línea de tiempo limpio.