Nota importante: este projeto havia sido reativado em setembro de 2013. Ele tinha sido "re-garfado" do LibreDWG. No entanto, desde março de 2015 nenhuma atualização foi publicada e ele foi abandonado de novo.
Eis uma biblioteca que possibilita ler os dados de um arquivo DWG. Trata-se de uma aquisição muito importante, que aumenta a capacidade da comunidade de código livre em desenvolver capacidades interessantes no campo do desenho industrial (CAD).
A biblioteca está codificada em C e assim ela se faz útil a uma maior audiência de usuários (em particular programadores, obviamente). Alguém de pronto pergunta: Por que não foi usado C++?. É simples: Porque eu não conheço. Bem, agora sério: Quem programa em C++ pode usar facilmente uma biblioteca em C, mas o inverso não é válido. Então, por isso é recomendável usar C para criar bibliotecas mais populares.
A estrutura do DWG é muito complicada, de modo algum seria trivial de se usar, parece que foi feita para que ninguém a entendesse mesmo. Por isso não recomendamos sua aplicação irrestrita, e por isso também não disponibilizamos capacidade de escrita através dessa biblioteca. Que se aplique a biblioteca LibDWG principalmente para ler dados de tais arquivos, filtrando-os para outro formato, mais aberto e fácil de se usar.
No momento inicial (começo de 2009), não existia nenhum projeto similar a este aqui, sua unicidade vinha da linguagem de programação usada (C) e também do estado de quase monopólio, com relação a aplicativos de CAD. Sendo assim, a LibDWG se tornaria uma chave para abrir um portão fechado por práticas desleais de mercado, que impossibilitavam que empresas da área de informática concorressem nesse campo.
Outra interessante característica é a aplicação do Esperanto para codificar a biblioteca. Mas isso é outra batalha... mas nós desistimos disso, para aproveitar o desenvolvimento recebido desde que ela fora portada para o inglês.
A última versão (0.6) é capaz de ler arquivos DWG sob os formatos R13 (não testado), R14, R2000 e R2004.
Ela disponibiliza um utilitário chamado "dwg-dump" para extrair informação do arquivo DWG, para um formato de texto legível. E também outro, chamado "dwg-dxf", para converter ao formato DXF R2000.
Eis alguns objetos interessantes, disponíveis para serem usados no DWG.
LAYOUT: model-space, paper-space, enfim, espaços para os vários leiautes.
LAYER: camada.
LINE: linha.
LWPOLYLINE: linha poligonal "leve".
CIRCLE: círculo.
ELLIPSE: elipse.
ARC: arco.
TEXT: texto simples.
MTEXT: caixa de texto.
RAY: raio.
POINT: ponto.
BLOCK, SEQEND: definição de bloco, fim de sequencia, etc.
ATTDEF: definição de texto simples, que aparece dentro de blocos.
INSERT: ponto de inserção para blocos.
ATTRIB: texto simples, que aparece dentro de blocos inseridos.
Dados estendidos não são lidos, porque eles dependem de outros aplicativos para serem interpretados, então ficam sendo totalmente inúteis. Assim, os objetos XDATA são simplesmente ignorados durante o escaneamento da base de dados.
Eis uma simples pesquisa sobre outros formatos mais adequados a aplicativos CAD livres.
Depois dessa lista, pode-se facilmente "adivinhar" nossa intenção de criar algo como um filtro, o qual receba um DWG e o transforme em uma (ou várias) das alternativas livres. No entanto, é um caminho longo até se atingir esse objetivo. E mais, outras pessoas já trabalham em cima disso: VectorSection
Outra capacidade interessante para tal filtro seria criar arquivos de imagem, como PNG, SVG, EPS e até PDF, por exemplo.