Habilidad de Texto a CAD Paramétrico Puro en Fusion 360
Cuando el usuario describe un objeto mecánico, pieza, modificación, bandeja de accesorios, especificación de fijaciones, ensamblaje explosionado o animación cinemática en lenguaje natural sin proporcionar archivos 3D de referencia (.3mf/.stl $
ightarrow$ usa 3mf-a-fusion) o medios visuales (.png/.mp4 $
ightarrow$ usa media-a-fusion), sigue este flujo de trabajo CAD determinista de 6 fases.
MANDATO CAD ESTRICTO:
- Reconstruye toda la geometría utilizando Bocetos, Planos de Construcción, Parámetros de Usuario y Operaciones de Extruir/Revolucionar/Unir nativos en la línea de tiempo de Fusion 360. Nunca generes cuerpos de malla sin procesar (
root.meshBodies.add) ni conversiones de malla facetada. - Todo el código debe ejecutarse limpiamente dentro de
execute_api_scriptusando centímetros (cm = mm / 10.0). - Verifica siempre visualmente cada cuerpo generado o modificado usando
get_screenshot.
Fase 0: Sonda de Pre-Vuelo y Alineación del Espacio de Trabajo
-
Verificar Sesión Activa de Fusion 360 MCP: Ejecuta una sonda canaria a través de la herramienta
fusion-mcpexecute_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("No hay un documento de diseño de Fusion 360 activo abierto.") print("FUSION_MCP_READY")Regla de Fracaso Inmediato: Si la sonda falla, detente e indica al usuario que abra Autodesk Fusion 360.
-
Enrutamiento del Espacio de Trabajo y Monorepositorio:
- Repositorio principal: Monorepositorio CAD activo o raíz del proyecto (
CAD_MONOREPO_ROOTo espacio de trabajo actual). - Garantía de Aislamiento Estricto: Nunca crees archivos temporales, scripts o renderizados en la raíz del repositorio ni modifiques
shared/. - Si se comienza un modelo nuevo, crea su carpeta dedicada:
python3 <ruta_a_las_habilidades>/texto-a-fusion/scripts/scaffold_text_model.py "<Nombre_del_Modelo>" - Almacena los scripts del modelo en
models/<NN>_<Nombre_del_Modelo>/scripts/, los renderizados visuales enmodels/<NN>_<Nombre_del_Modelo>/renders/, y los archivos de espacio de trabajo intermedios enmodels/<NN>_<Nombre_del_Modelo>/workspace/. - Importa las ayudas CAD universales desde
../../shared/(fusion_client,cad_primitives,hardware_library,scene_animator).
- Repositorio principal: Monorepositorio CAD activo o raíz del proyecto (
-
Referencias de Dominio: Consulta la biblioteca de referencia local antes de escribir geometría personalizada:
references/patrones-de-geometria-a-partir-de-texto.md— Traduce lenguaje natural en restricciones de boceto paramétricas.references/directrices-de-vista-explosionada.md— Vectores de explosión, guías de varilla doradas y encuadre ortográfico.references/tuberia-de-animacion-de-ensamblaje.md— Animación de transformación de ocurrencias Matrix3D y compilación de GIF.references/gestión-de-variantes-y-deshacer.md— Exhibición segura de variantes A/B y ocultación no destructiva.
Fase 1: Desambiguación y Especificación Paramétrica
Cuando los usuarios describen geometría de manera conversacional, identifica y formaliza las restricciones de ingeniería faltantes:
- Contorno y Dimensiones Críticas:
- Caja delimitadora general ($W \times D \times H$ en mm).
- Espesor mínimo de pared (por defecto
2.0 - 2.5 mmpara piezas estructurales,1.6 mmpara divisores internos). - Límite de la cama de la impresora 3D (por ejemplo,
220 × 220 × 250 mm).
- Registrar Parámetros de Usuario Maestros (
design.userParameters): Siempre expón las dimensiones críticas como parámetros de usuario para que el usuario pueda reescalar con 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 )
Fase 2: Escenificación de Variantes y Exploración Reversible
Cuando el usuario solicite opciones de diseño (