Voltar aos trabalhos

EasyTrace5000 - CAM para PCBs no Browser

Cliente-
Ano2025
Desenvolvimento4 meses
EstadoActivo
TipoAplicação Web
IndústriaFabrico de PCBs / Ferramentas Maker
FunçãoImplementação completa que combinou engenharia de backend com design frontend para criar uma interface intuitiva sobre uma arquitectura modular robusta.
Resumo

O EasyTrace5000 pretende ser uma ferramenta minimalista que pode ser usada por qualquer pessoa para rapidamente transformar geometria CAD em código de máquina. Um fluxo de trabalho simples convida até os principiantes a começar a fazer PCBs com fricção mínima, contornando outras alternativas com interfaces complexas e curvas de aprendizagem acentuadas.

Abordagem

O EasyTrace5000 começou como um projecto paralelo para criar uma pipeline de fresagem de isolamento para uso interno mas rapidamente se tornou numa experiência iterativa sobre o que era possível fazer num browser. Os subsistemas de parsing e renderização foram estruturados primeiro o que ajudou a definir as estruturas de dados usadas pelos módulos de geometria. Com operações booleanas, reconstrução de arcos e offset analítico a funcionar, o foco mudou para o planeamento de toolpaths e exportação de G-code. A interface do utilizador foi desenvolvida incrementalmente para expor funcionalidades, mantendo sempre o foco numa experiência de utilização previsível. Assim que os subsistemas funcionaram como um fluxo de trabalho único, todo o backend passou por uma grande refatorização de otimização.

Desafios

Para garantir a compatibilidade cross-platform, a aplicação foi desenhada para correr no browser. Ser client-side reduz os custos de infraestrutura e garante a privacidade do utilizador, mas limita os recursos disponíveis. Apesar destas restrições, preservar a geometria sem perdas em todo o processo foi uma prioridade. O resultado é um processador que, ao contrário da maioria das alternativas, consegue recuperar e exportar arcos G2/G3 virtualmente sem perdas. Isto exigiu afinar cada subsistema:

UX do Fluxo de Trabalho

O plano original envolvia um fluxo de trabalho linear de três estágios: parâmetros de geometria X/Y, movimentos do eixo Z e por fim, avanços, velocidades mais configurações de máquina. À medida que os módulos evoluíram, os parâmetros de máquina transversais ao projeto foram separados numa secção dedicada. A exportação de G-code acabou por exigir um estágio final para lidar com o último conjunto de definições e toggles de output. Para apoiar esta lógica, a Árvore de Navegação aninha estágios da operação sob o ficheiro original. Ao contrário da abordagem de lista de estágios do FlatCAM, isto impõe uma hierarquia pai-filho que mantém os objetos de estado processados ligados ao seu ficheiro original.

Sistema de Visualização

À medida que a funcionalidade da ferramenta crescia, aumentava a complexidade de renderização. Foi fundamental apresentar toda a informação com clareza sem sobrecarregar o utilizador. A geometria operacional usa códigos de cor, incluindo lógica dinâmica para mostrar a relação entre o diâmetro da ferramenta e os tamanhos dos elementos da operação de furação. Assim que o motor de offset começou a gerar múltiplos passes corretamente, os milhares de objetos de trajectória resultantes tornaram o overhead de draw calls individuais num bottleneck significativo. Como o caching é ineficaz durante o panning e zooming, o renderizador foi otimizado com batching de draw calls, escalonamento de nível de detalhe e culling de viewport para ignorar objetos pequenos ou fora do ecrã. Ferramentas complementares de visualização avançada foram também criadas para ajudar no debug do desenvolvimento de outros sistemas.

Análise de Ficheiros

A codificação Gerber, Excellon e SVG está bem documentada, mas existem variações na exportação EDA. Um módulo intermediário de plotagem foi criado para controlar o fluxo de dados para a ferramenta. Antes de ser traduzida para estruturas de dados unificadas, a geometria bruta é interpretada para detetar casos limite. Isto normaliza artefactos como formas obround circulares mal identificadas, "retângulos" obround com cantos arredondados, polígonos implícitos com segmentos fora de ordem e macros repetitivas complexas. Geometria que não seja suportada pelos algoritmos de offset também é interpolada preventivamente.

Motor de Geometria

Os requisitos centrais eram uniões booleanas para a fusão de objetos sobrepostos e offset preciso para geometria de toolpath sem perdas. O Clipper2 WASM foi selecionado para as operações booleanas, complementado por um algoritmo de reconstrução de arcos personalizado para mitigar a poligonização inerente à biblioteca. Como não existia uma solução pronta capaz de processar estas curvas em bruto, foi implementado um sistema analítico leve. Para gerir imprecisões de floating-point inerentes a cálculos sub-milimétricos, foram necessárias múltiplas salvaguardas para prevenir a distorção de arcos. O motor final integra outras funções acessórias essenciais, incluindo pré-processamento de polígonos para Clipper2 e lógica de união para regiões implícitas com segmentos fora de ordem.

Planeamento de Trajectória

A transição para código de máquina exigiu uma estrutura de dados intermédia para guardar representações de movimento espacial da geometria de offset. Lógica de maquinagem é inserida em torno destes objetos sendo depois tudo otimizado para minimizar o tempo de execução. O algoritmo ordena objetos via pesquisa de vizinho mais próximo (nearest-neighbor) e agrupa clusters "staydown" para eliminar movimentos redundantes do eixo Z. Também roda pontos de entrada em loops fechados para alinhar com a aproximação da ferramenta e filtra segmentos colineares sem invalidar definições de arco sensíveis. Isto produz um plano de movimento limpo e agnóstico à máquina que é facilmente serializado para qualquer dialecto de controlador, desde GRBL a Roland RML.

Extensibilidade

A ferramenta foi desenhada com uma arquitetura modular para garantir a manutenção a longo prazo e agilizar a evolução independente dos seus subsistemas. Esta separação de responsabilidades permite a substituição ou adição integrada de novas funções. Para limitar a acumulação de dívida técnica à medida que o desenvolvimento continua, antecipar requisitos futuros ajuda a evitar refatorizações intensivas em recursos. Por exemplo, as fundações de um sistema de gestão de unidades já estão parcialmente implementadas e o futuro pipeline de Laser UV/Fibra pode ser prontamente integrado reutilizando recursos já em uso.

Resultados

  • Aplicação client-side completa sem necessidade de infraestrutura de servidor
  • Parsers nativos para Gerber RS-274X, Excellon e SVG com preservação analítica de curvas
  • Algoritmo personalizado reconstrói arcos G2/G3 a partir de geometria Clipper2 poligonizada
  • Quatro tipos de operação: fresagem de isolamento, furação, limpeza de cobre, corte de placa
  • Estratégia de furação inteligente com ciclo peck automático, fresagem helicoidal ou ranhura em linha central baseada na relação ferramenta-geometria
  • Motor de offset analítico com juntas arredondadas que preservam arcos para passes internos e externos
  • Pipeline de toolpath de três estágios com clustering staydown e optimização por vizinho mais próximo
  • Geração de tabs/pontes para operações de corte com divisão de trajectória compatível com arcos
  • Renderizador canvas limitado a 60fps com batching e culling por LOD/viewport
  • Seis alvos de pós-processador: GRBL (estável), GrblHAL, Marlin, LinuxCNC, Mach3, Roland RML (experimental)

Tecnologias

CAMGeometria ComputacionalOptimização de ToolpathsParsing de FicheirosJavaScriptWebAssemblyCanvas APIG-codeUI/UXDocumentação Técnica
Email copiado!