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 aplicativos mais 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 estrita, e por isso também não disponibilizamos capacidade de escrita por essa 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.
Até o presente momento (começo de 2009), não existe nenhum projeto similar a este aqui, sua unicidade vem da linguagem de programação usada (C) e também do estado atual de quase monopólio, com relação a aplicativos de CAD. Sendo assim, a LibDWG se torna uma chave para abrir um portão fechado por práticas desleais de mercado, que impossibilitam que empresas da área de informática concorram nesse campo.
Outra interessante característica é a aplicação do Esperanto para codificar a biblioteca. Mas isso é outra batalha... Inclusive, também a documentação sobre a interface de programação só estará disponível nesse idioma. Portanto, prepare-se.
Até agora, eis os objetos que podem ser lidos:
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.
Infelizmente, devemos mostras mais limitações que capacidades. No entanto, esperamos que isso não dure muito tempo assim.
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.