Skill de Texto para CAD Paramétrico Puro no Fusion 360
Quando o usuário descreve um objeto mecânico, peça, modificação, bandeja de acessórios, especificação de fixadores, montagem explodida ou animação cinemática em linguagem natural sem fornecer arquivos 3D de referência (.3mf/.stl → use 3mf-to-fusion) ou mídia visual (.png/.mp4 → use media-to-fusion), siga este fluxo de trabalho CAD determinístico de 6 fases.
MANDATO CAD ESTRITO:
- Reconstrua toda a geometria usando Sketches nativos, Planos de Construção, Parâmetros de Usuário e Recursos de Extrusão/Revolução/Junta na linha do tempo do Fusion 360. Nunca gere corpos de malha brutos (
root.meshBodies.add) ou conversões de malha facetadas. - Todo o código deve ser executado corretamente dentro de
execute_api_scriptusando centímetros (cm = mm / 10.0). - Sempre verifique visualmente cada corpo gerado ou modificado usando
get_screenshot.
Fase 0: Sonda de Pré-voo e Alinhamento do Workspace
-
Verificar Sessão Ativa do Fusion 360 MCP: Execute sonda canário via ferramenta
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("Nenhum documento de design do Fusion 360 ativo aberto.") print("FUSION_MCP_READY")Regra de Falha Rápida: Se a sonda falhar, pare e instrua o usuário a abrir o Autodesk Fusion 360.
-
Roteamento do Workspace e Monorepo:
- Repositório primário: Monorepo CAD ativo ou raiz do projeto (
CAD_MONOREPO_ROOTou workspace atual). - Garantia de Isolamento Estrito: Nunca crie arquivos temporários, scripts ou renders na raiz do repositório nem modifique
shared/. - Se iniciar um modelo novo, crie sua pasta dedicada:
python3 <caminho_para_skills>/text-to-fusion/scripts/scaffold_text_model.py "<Nome_do_Modelo>" - Armazene scripts do modelo em
models/<NN>_<Nome_do_Modelo>/scripts/, renders visuais emmodels/<NN>_<Nome_do_Modelo>/renders/e arquivos intermediários do workspace emmodels/<NN>_<Nome_do_Modelo>/workspace/. - Importe helpers CAD universais de
../../shared/(fusion_client,cad_primitives,hardware_library,scene_animator).
- Repositório primário: Monorepo CAD ativo ou raiz do projeto (
-
Referências de Domínio: Consulte a biblioteca de referência local antes de escrever geometria personalizada:
references/prompt-to-geometry-patterns.md— Traduz linguagem natural em restrições paramétricas de sketch.references/exploded-view-guidelines.md— Vetores de explosão, guias douradas e enquadramento ortográfico.references/assembly-animation-pipeline.md— Animação de transformação de ocorrência Matrix3D e compilação de GIF.references/variant-management-and-undo.md— Vitrine segura de variantes A/B e ocultação não destrutiva.
Fase 1: Desambiguação e Especificação Paramétrica
Quando os usuários descrevem geometria conversacionalmente, identifique e formalize as restrições de engenharia ausentes:
- Envoltório e Dimensões Críticas:
- Caixa delimitadora geral ($W \times D \times H$ em mm).
- Espessura mínima de parede (padrão
2.0 - 2.5 mmpara peças estruturais,1.6 mmpara divisórias internas). - Limite da cama da impressora 3D (ex.
220 × 220 × 250 mm).
- Registrar Parâmetros Mestres de Usuário (
design.userParameters) : Sempre exponha dimensões críticas como parâmetros de usuário para que o usuário possa redimensionar com um clique: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: Preparação de Variantes e Exploração Reversível
Quando o usuário pedir opções de design (