Skill de Engenharia Reversa Analítica de 3MF / STL para Fusion 360
Quando solicitado a copiar, fazer engenharia reversa ou recriar um arquivo .3mf ou .stl no Autodesk Fusion 360, siga este pipeline analítico determinístico.
O MANDATO DE ENGENHARIA REVERSA CAD
[!IMPORTANT] ESTRITAMENTE PROIBIDO: Nunca usar a ferramenta "Converter Malha em Sólido" (
MeshToBREPoubRepBodies.addByMesh) do Fusion 360.Converter facetas de malha diretamente em BRep cria dezenas de milhares de faces triangulares planas que congelam a janela de visualização, não podem ser filetadas ou chanfradas, quebram CAM/desenhos downstream e destroem toda a intenção paramétrica do design.
OBRIGATÓRIO: Dissecar a malha matematicamente ("fatie e divida"), extrair suas seções transversais 2D e primitivas geométricas (rasgos, furos circunscritos, contra-furos, perfis torneados, padrões retangulares) e construir corpos sólidos paramétricos 100% nativos na linha do tempo do Fusion 360 usando esboços, parâmetros de direção, extrusões, operações de revolução e padrões.
Fase 0: Portão de Segurança Pré-Voo (Obrigatório)
Antes de processar arquivos, verifique se o Autodesk Fusion 360 e seu servidor MCP estão ativos:
-
Sonda Canário: Chame a ferramenta
fusion-mcpexecute_api_script:def run(context): import adsk.core, adsk.fusion app = adsk.core.Application.get() if not app: raise RuntimeError("Instância do aplicativo Autodesk Fusion 360 não encontrada.") design = adsk.fusion.Design.cast(app.activeProduct) if not design: raise RuntimeError("Nenhum documento de design ativo no Fusion 360.") print("FUSION_MCP_READY") -
Regra de Aborto Rápido:
- Se a chamada falhar ou exceder o tempo limite, PARE imediatamente.
- Não execute scripts de extração ou comandos CAD.
- Instrua o usuário a abrir o Fusion 360, garantir que o complemento esteja iniciado e abrir um documento ativo.
Fase 1: Fatie, Divida e Classifique (Motor de Metrologia)
[!IMPORTANT] Regra de Isolamento do Espaço de Trabalho: Nunca emita arquivos de extração na raiz principal do repositório (por exemplo,
./extracted_cadé proibido). Sempre garanta que uma pasta de modelo dedicada exista emmodels/<NN>_<Nome_do_Modelo>/(scaffold comscaffold_text_model.py "<Nome_do_Modelo>"se for novo) e roteie todas as saídas de fatias/divisões paramodels/<NN>_<Nome_do_Modelo>/workspace/extracted_cad.
-
Execute o motor de metrologia profundo no espaço de trabalho isolado do modelo:
python3 <caminho_para_skills>/3mf-to-fusion/scripts/inspect_3mf.py <caminho_para_arquivo.3mf_ou_stl> --out-dir models/<NN>_<Nome_do_Modelo>/workspace/extracted_cad -
Leia
models/<NN>_<Nome_do_Modelo>/workspace/extracted_cad/manifest.json. -
Verifique o
archetypee as características detectadas para cada peça:- Tipo A: CAD Prismático / Escalonado: Extrusão de base planar + cortes de cavidade + matrizes de furos.
- Tipo T: Torneado / Axissimétrico: Fatias circulares colineares ao longo do eixo Z. Modelado usando um único esboço de meio perfil +
RevolveFeaturede 360°. - Tipo B: Invólucro / Casca Multinível: Planos de construção escalonados + extrusões de parede fina + casca.
- Tipo C: Escultura Orgânica de Forma Livre: Alta curvatura não planar ($> 15$ níveis). Alerte imediatamente o usuário:
"Esta peça é uma escultura orgânica contínua sem faces planas discretas ou esboços prismáticos. Reconstruí-la usando esboços planos gerará uma aproximação em escada, em vez de uma escultura orgânica suave."
-
Apresente uma tabela de resumo ao usuário:
ID da Peça Arquétipo Caixa Envolvente ($X \times Y \times Z\text{ mm}$) Níveis Primitivas / Padrões Chave Detectados
Fase 2: Matemática de Metrologia e Regras
- Conversão de Unidades (
cm = mm / 10.0):- O banco de dados interno do Fusion 360 (
adsk.core.ValueInput.createByReal()) usa estritamente centímetros (cm). - Defina no topo de cada script:
def mm(val): return adsk.core.ValueInput.createByReal(float(val) / 10.0)
- O banco de dados interno do Fusion 360 (
- Compensação de Círculo Circunscrito (Erro de Corda):
- As tesselações STL aproximam furos circulares com polígonos inscritos cujas arestas cortam para dentro ao longo das cordas.
- Nunca use o diâmetro mínimo interno. Sempre use
radius_mmdemanifest.json["primitives"]["circles"](raio circunscrito do percentil 95) arredondado para o $0,05\text{ mm}$ mais próximo.
- Reconhecimento de Rasgo / Obround:
- Quando os loops têm duas linhas retas paralelas e duas extremidades semicirculares, modele-as como um rasgo semente (
sketchLines+sketchArcs) em vez de um polígono de vários segmentos.
- Quando os loops têm duas linhas retas paralelas e duas extremidades semicirculares, modele-as como um rasgo semente (
- Reconhecimento de Padrão (Grade / Polar):
- Quando
manifest.json["patterns"]detecta um passo regular ($\Delta X, \Delta Y$), modele um recorte semente mestre e duplique-o usandocomp.features.rectangularPatternFeatures. Não desenhe geometria repetitiva idêntica manualmente.
- Quando
Fase 3: Reconstrução Paramétrica Pura no Fusion 360
Execute a geração CAD via execute_api_script. Reconstrua cada peça usando recursos limpos da linha do tempo:
Passo 1: Ocorrência e Parâmetros do Usuário
transform = adsk.core.Matrix3D.create()
occ = root.occurrences.addNewComponent(transform)
comp = occ.component
comp.name = nome_da_peca
# Adicionar Parâmetros de Direção
params = design.userParameters
params.add(f"{nome_da_peca}_width", mm(largura_mm), "mm", "Largura da base")
params.add(f"{nome_da_peca}_length", mm(comprimento_mm), "mm", "Comprimento da base")
params.add(f"{nome_da_peca}_height", mm(altura_mm), "mm", "Altura da base")
Passo 2: Geometria Sólida Primária
- Se Tipo T (Torneado): Esboce meio perfil em
comp.xZConstructionPlanee chamecomp.features.revolveFeatures.add(prof, comp.zConstructionAxis, adsk.fusion.FeatureOperations.NewBodyFeatureOperation). - Se Tipo A/B (Prismático): Esboce o contorno da base em
comp.xYConstructionPlane(centralizado na origem) e extrude o sólido da base.
Passo 3: Recortes e Padrões Secundários
- Desenhe o recorte semente mestre (rasgo, contra-furo ou cavidade).
- Aplique
comp.features.extrudeFeatures.addcomadsk.fusion.FeatureOperations.CutFeatureOperation. - Aplique
comp.features.rectangularPatternFeatures.addao longo decomp.xConstructionAxisecomp.yConstructionAxis.
Passo 4: Toques Finais
- Aplique filetes de canto (
comp.features.filletFeatures) e chanfros (comp.features.chamferFeatures).
Fase 4: Sobreposição Fantasma de Referência e Inspeção no CAD
Para verificar o alinhamento matemático e dimensional sem poluir o modelo final:
- Malha de Referência Fantasma (Opcional):
Se for necessário alinhamento visual detalhado, importe a malha bruta em uma ocorrência de referência temporária separada:
# Importar malha como fundo de referência ref_occ = root.occurrences.addNewComponent(transform) ref_occ.component.name = "Reference_Mesh_Ghost" # Definir estilo visual transparente - Inspeção Visual e de Interferência:
- Verifique se o sólido paramétrico envolve completamente e se alinha com o envelope da malha.
- Uma vez verificado, oculte ou remova
ref_occ.
Fase 5: Saúde da Linha do Tempo e Portão de Autoverificação Visual
- Verificação de Recursos da Linha do Tempo:
Garanta que não existam corpos de malha na peça reconstruída:
assert comp.bRepBodies.count > 0, "Nenhum corpo sólido produzido!" assert comp.meshBodies.count == 0, "MeshBody proibido detectado no componente!" assert comp.sketches.count > 0, "Nenhum esboço encontrado na linha do tempo!" - Inspeção Visual:
Chame
get_screenshot(view="iso-top-right", width=1024, height=1024)para verificar visualmente o modelo sólido paramétrico limpo e a árvore da linha do tempo limpa.