Como Ler um Desenho AutoCAD Sem o Próprio AutoCAD
Imagine a seguinte situação: você precisa extrair dados de um desenho de engenharia antigo ou automatizar a geração de diagramas, mas seu orçamento não permite comprar licenças do AutoCAD, e SDKs proprietários custam tanto quanto uma asa de avião. O formato DWG é uma verdadeira "caixa preta" do mundo da engenharia. É fechado, binário e muda a cada poucos anos. Fazer parsing manualmente é um prazer duvidoso que pode se arrastar por meses.
É aqui que o LibreDWG entra em cena. Esta é uma biblioteca C gratuita que faz parte do projeto GNU e tem um objetivo ambicioso: fornecer aos desenvolvedores uma ferramenta completa para ler e escrever arquivos DWG sem dependência de fornecedor.
Sobre o Projeto
O LibreDWG surgiu de um fork do LibDWG. Ironicamente, o motivo da divisão foi o idioma: o projeto original usava esperanto em seu código e documentação. A comunidade decidiu que o inglês era melhor para atrair contribuidores, e assim o LibreDWG nasceu.
Hoje, é provavelmente a solução Open Source mais séria para trabalhar com o formato DWG. A biblioteca consegue decodificar praticamente todas as versões de arquivos. A escrita é um pouco mais complicada (especialmente para versões mais recentes que o R2004), mas o projeto está em desenvolvimento ativo. Se você só precisa ler dados, extrair texto ou converter um desenho para SVG — esta é exatamente a ferramenta que você estava procurando.
Recursos da Biblioteca
Os desenvolvedores não apenas lançaram o código da biblioteca, mas também a equiparam com uma série de utilitários úteis. Estes são ótimos exemplos de como usar a API na prática.
Convertendo para Vetor e JSON
Usando dwgread, você pode transformar um desenho binário em algo legível. JSON, DXF e até GeoJSON são suportados. Isso abre a porta para visualização web: passe o arquivo pelo conversor, obtenha JSON e renderize no Canvas ou SVG.
Buscando em Desenhos
O utilitário dwggrep permite buscar strings de texto dentro de arquivos DWG usando expressões regulares. Se você tem um arquivo com mil desenhos e precisa encontrar um nó ou especificação específica, esta ferramenta vai economizar horas do seu tempo.
Manipulação de Camadas
Através de dwglayers, você pode rapidamente obter uma lista de todas as camadas. Isso é útil para sistemas automatizados de verificação de conformidade ou apenas para entender a estrutura de um projeto complexo.
Gerando Desenhos do Zero
A ferramenta dwgadd é a maneira mais fácil de criar um arquivo DWG programaticamente. Ela aceita comandos simples para criar entidades e suas propriedades. Não é preciso mergulhar nas complexidades do formato binário — basta descrever o que você quer ver no desenho.
Fundamentos Técnicos
A biblioteca é escrita em C99, o que a torna altamente portátil. Ela se sente em casa no Linux e no Windows (via MSYS2 ou Visual Studio 2019+).
Um ponto interessante está relacionado a codificações. Versões antigas do DWG usavam cerca de 30 páginas de código diferentes. O LibreDWG lida com todo o trabalho pesado de converter esse zoológico para UTF-8. Internamente, usa UTF-8 (mais precisamente, WTF8, já que o UCS-2 do Windows tem suas próprias peculiaridades com pares substitutos), o que elimina problemas com "texto corrompido" em nomes de camadas ou textos.
Para quem não quer programar em C puro, bindings para Python e Perl estão disponíveis via SWIG. Isso permite criar rapidamente um script para processar desenhos, usando toda a energia das linguagens de alto nível.
Para Quem É Indicado
Vejo vários cenários onde o LibreDWG será indispensável:
- Automação de fluxo de documentos. Quando você precisa extrair automaticamente dados de carimbos de desenhos e inseri-los em um banco de dados.
- Serviços web para engenheiros. Criar visualizadores online ou conversores sem usar software pesado no servidor.
- Geração de relatórios. Se você precisa anexar um diagrama de layout de equipamentos a um relatório gerado em PDF ou PostScript.
- Integração GIS. Graças ao suporte a GeoJSON, dados de desenhos podem ser direcionados diretamente para sistemas de informação geográfica.
Vale a Pena Tentar
Você precisa entender que trabalhar com DWG é sempre caminhar na corda bamba. O formato é proprietário, e a engenharia reversa nem sempre acompanha as atualizações do AutoCAD. Por exemplo, escrever arquivos das versões R2010-R2018 ainda pode resultar em erros de soma de verificação (CRC).
No entanto, para tarefas de leitura e conversão, o LibreDWG é uma ferramenta poderosa e, o mais importante, gratuita. Se você já precisou processar desenhos programaticamente, comece explorando os exemplos na pasta examples. Lá existe um arquivo load_dwg.c — este é um excelente esqueleto para sua futura aplicação.
O projeto está vivo, commits estão chegando, e a documentação nos formatos Texinfo e Doxygen vai ajudá-lo a navegar pelas profundezas da API. Se você está pronto para tolerar algumas limitações ao escrever novos formatos, o LibreDWG se tornará um ótimo complemento para seu toolkit.
Projetos relacionados