CommunityProgramación y desarrollogithub.com

3mf-to-fusion

Motor de ingeniería inversa CAD avanzada para archivos 3MF y STL. Rebane, corte e inspeccione matemáticamente mallas en bruto (secciones transversales, radios de círculos circunscritos reales, ranuras obround, hexágonos, perfiles torneados y matrices de patrones), y sintetice cuerpos sólidos paramétricos BRep completamente nativos y editables en Autodesk Fusion 360 a través del servidor MCP de Fusion 360.

¿Qué es 3mf-to-fusion?

Esta habilidad ('3mf-to-fusion') permite a un agente de IA realizar ingeniería inversa analítica de archivos 3MF o STL y reconstruirlos como modelos paramétricos nativos en Autodesk Fusion 360. Está diseñada para agentes como Claude Code, Cursor o Codex que tengan acceso al servidor MCP de Fusion 360. En lugar de usar la conversión directa de malla a sólido (que genera modelos pesados e ineditables), la habilidad ejecuta un flujo de trabajo en cinco fases: verificación previa (canary probe), análisis metrológico profundo (rebanado, corte y clasificación geométrica), construcción paramétrica pura (con bocetos, extrucciones, revoluciones y matrices), superposición fantasma para verificación visual, y comprobación final de salud de la línea de tiempo. El resultado es un modelo CAD editable con parámetros de usuario, sin cuerpos de malla, y con todas las operaciones en la línea de tiempo de Fusion 360. Es compatible con plataformas que ejecuten scripts de Python en Fusion 360 a través del protocolo MCP.

Compatible con~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 Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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 (MeshToBREP o bRepBodies.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:

  1. Sonda Canaria: Llame a la herramienta fusion-mcp execute_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")
    
  2. 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_cad está prohibido). Asegúrese siempre de que exista una carpeta de modelo dedicada bajo models/<NN>_<Nombre_Del_Modelo>/ (andamie con scaffold_text_model.py "<Nombre_Del_Modelo>" si es nuevo), y dirija todas las salidas de rebanado/corte a models/<NN>_<Nombre_Del_Modelo>/workspace/extracted_cad.

  1. 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
    
  2. Lea models/<NN>_<Nombre_Del_Modelo>/workspace/extracted_cad/manifest.json.

  3. Verifique el archetype y 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 + RevolveFeature de 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."

  4. Presente una tabla resumen al usuario:

    ID de PiezaArquetipoCaja Delimitadora ($X \times Y \times Z\text{ mm}$)NivelesPrimitivas/Patrones Clave Detectados

Fase 2: Matemáticas y Reglas de Metrología

  1. 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)
      
  2. 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_mm de manifest.json["primitives"]["circles"] (radio circunscrito del percentil 95) redondeado al $0.05\text{ mm}$ más cercano.
  3. 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.
  4. 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 usando comp.features.rectangularPatternFeatures. No dibuje geometría repetitiva idéntica a mano.

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.xZConstructionPlane y llame a comp.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.add con adsk.fusion.FeatureOperations.CutFeatureOperation.
  • Aplique comp.features.rectangularPatternFeatures.add a lo largo de comp.xConstructionAxis y comp.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:

  1. 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
    
  2. 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

  1. 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!"
    
  2. 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.

Individual skills in this repo

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

Skills relacionados