Como Converter Arquivos STEP em Desenhos Técnicos 2D com Python

Aprenda a converter arquivos STEP em desenhos técnicos 2D com Python usando OpenCASCADE e ezdxf. Automatize projeções ortográficas e HLR em lote.

A criação manual de desenhos técnicos 2D a partir de modelos 3D em formato STEP representa um dos maiores gargalos operacionais em departamentos de engenharia mecânica e manufatura. Projetar vistas ortográficas, calcular linhas ocultas e exportar pranchas padronizadas consome tempo que deveria ser direcionado à inovação de produto. A automação dessa rotina por meio de scripts Python permite processar centenas de arquivos B-Rep em lote, garantindo precisão geométrica e consistência documental.

O Desafio Técnico: Da Representação de Contorno (B-Rep) ao Vetor 2D

O formato STEP (ISO 10303) armazena geometrias tridimensionais complexas utilizando B-Rep (Boundary Representation), composto por vértices, arestas e superfícies analíticas ou NURBS. Para transformar esses dados em um desenho 2D útil para fabricação, o pipeline precisa resolver três problemas fundamentais:

  1. Orientação e Projeção: Definir planos de projeção padronizados (Frontal, Superior, Lateral e Isométrica).
  2. Algoritmo HLR (Hidden Line Removal): Distinguir arestas visíveis de arestas ocultas a partir de uma câmera virtual.
  3. Exportação Vetorial Estruturada: Gravar as curvas projetadas em formatos compatíveis com CAD (como DXF ou SVG), mantendo camadas (layers) e tipos de linha regulamentados (contínua para visível, tracejada para oculta).

Arquitetura da Solução em Python

Para implementar essa automação sem depender de licenças proprietárias pesadas, a abordagem técnica recomendada combina o ecossistema Open CASCADE via pythonocc-core (ou bibliotecas modernas como CadQuery e build123d) integrado ao pacote ezdxf para montagem final do arquivo CAD.

1. Leitura e Validação do Modelo STEP

O primeiro passo envolve carregar o arquivo STEP e validar a integridade topológica do sólido (garantindo que se trata de uma casca fechada/manifóldica):

python
from OCC.Core.STEPControl import STEPControlReader
from OCC.Core.IFSelect import IFSelect
RetDone

def carregarstep(caminhoarquivo: str):
leitor = STEPControlReader()
status = leitor.ReadFile(caminho
arquivo)
if status != IFSelect_RetDone:
raise ValueError(“Falha ao ler o arquivo STEP.”)
leitor.TransferRoots()
return leitor.OneShape()

2. Aplicação de HLR (Hidden Line Removal)

O algoritmo de HLR projeta as curvas 3D no plano bidimensional desejado e classifica os segmentos de linha em conjuntos distintos:

python
from OCC.Core.HLRBRep import HLRBRepAlgo, HLRBRepHLRToShape
from OCC.Core.HLRAlgo import HLRAlgoProjector
from OCC.Core.gp import gp
Ax2, gpPnt, gpDir

def projetarvista2d(forma3d, direcaoprojecao):
# Configura a câmera de projeção ortográfica
eixo = gpAx2(gpPnt(0, 0, 0), gpDir(*direcaoprojecao))
projetor = HLRAlgo_Projector(eixo)

hlr = HLRBRep_Algo()
hlr.Add(forma_3d)
hlr.Projector(projetor)
hlr.Update()
hlr.Hide()

extrator = HLRBRep_HLRToShape(hlr)
arestas_visiveis = extrator.VCompound()
arestas_ocultas = extrator.HCompound()

return arestas_visiveis, arestas_ocultas

3. Geração do Desenho 2D em DXF

Com as arestas classificadas e coordenadas bidimensionais extraídas, utiliza-se a biblioteca ezdxf para compor as entidades geométricas em camadas separadas, permitindo que softwares de corte ou operadores de torno diferenciem linhas de contorno e linhas de referência oculta:

python
import ezdxf

def criardxf(arestasvisiveis, arestasocultas, caminhosaida):
doc = ezdxf.new(dxfversion=”R2010″)
msp = doc.modelspace()

doc.layers.new(name="VISIVEL", dxfattribs={"color": 7, "linetype": "Continuous"})
doc.layers.new(name="OCULTA", dxfattribs={"color": 8, "linetype": "DASHED"})

# Iterar sobre arestas e adicionar primitivas 2D (linhas, arcos, splines)
# Exemplo: msp.add_line((x1, y1), (x2, y2), dxfattribs={"layer": "VISIVEL"})

doc.saveas(caminho_saida)

Otimização de Performance para Grandes Volumes

Ao processar montagens complexas com milhares de faces, o cálculo de HLR pode se tornar computacionalmente intensivo. Como especialista em IA e automação de software de engenharia, estruturo esses fluxos utilizando paralelismo com multiprocessing e simplificação prévia de cascas geométricas não funcionais (defeating automático). Isso reduz o tempo de ciclo de minutos para poucos segundos por componente.

Estruturando um Pipeline Escalável

Para empresas que recebem centenas de pedidos diários de usinagem ou corte a laser, essa automação pode ser acoplada a:

  • Serviços em nuvem que monitoram repositórios de arquivos (AWS S3 / Google Drive).
  • Módulos de cotagem automática baseados em heurísticas geométricas.
  • Extração de metadados para emissão direta de listas de materiais (BOM).

Se sua operação precisa automatizar rotinas de CAD, converter bibliotecas 3D legadas em desenhos 2D ou integrar engenharia de produto com sistemas ERP via código sob medida, entre em contato para estruturarmos uma consultoria técnica dedicada à sua demanda.

Preencha o formulário abaixo para que eu consiga entrar em contato com você.