Come leggere un disegno AutoCAD senza AutoCAD stesso
Immaginate questo: dovete estrarre dati da un vecchio disegno tecnico o automatizzare la generazione di diagrammi, ma il vostro budget non permette di acquistare licenze AutoCAD, e gli SDK proprietari costano quanto un'ala di aereo. Il formato DWG è una vera e propria "scatola nera" del mondo dell'ingegneria. È chiuso, binario e cambia ogni pochi anni. Parsificarlo manualmente è un piacere discutibile che può protrarsi per mesi.
È qui che entra in scena LibreDWG. Questa è una libreria C gratuita che fa parte del progetto GNU e si pone un obiettivo ambizioso: fornire agli sviluppatori uno strumento completo per leggere e scrivere file DWG senza vendor lock-in.
Di cosa tratta questo progetto
LibreDWG è nato da un fork di LibDWG. Ironia della sorte, il motivo della separazione fu la lingua: il progetto originale usava l'esperanto nel codice e nella documentazione. La comunità ha deciso che l'inglese era meglio per attirare contributori, e così è nato LibreDWG.
Oggi, è probabilmente la soluzione Open Source più seria per lavorare con il formato DWG. La libreria può decodificare praticamente tutte le versioni dei file. La scrittura è un po' più complicata (specialmente per le versioni più recenti di R2004), ma il progetto è in fase di sviluppo attivo. Se avete solo bisogno di leggere dati, estrarre testo o convertire un disegno in SVG — questa è esattamente ciò che cercavate.
Cosa può fare la libreria
Gli sviluppatori non si sono limitati a rilasciare il codice della libreria, ma l'hanno anche dotata di una serie di utility utili. Queste sono ottimi esempi di come usare l'API in pratica.
Conversione in vettoriale e JSON
Usando dwgread, potete trasformare un disegno binario in qualcosa di leggibile. Sono supportati JSON, DXF e persino GeoJSON. Questo apre le porte alla visualizzazione web: passate il file attraverso il convertitore, ottenete JSON, renderizzatelo su Canvas o SVG.
Ricerca nei disegni
L'utility dwggrep vi permette di cercare stringhe di testo all'interno dei file DWG usando espressioni regolari. Se avete un archivio di mille disegni e dovete trovare un nodo o una specifica particolare, questo strumento vi farà risparmiare ore di vita.
Manipolazione dei layer
Attraverso dwglayers, potete estrarre rapidamente un elenco di tutti i layer. Questo è utile per sistemi automatizzati di verifica della conformità o semplicemente per comprendere la struttura di un progetto complesso.
Generazione di disegni da zero
Lo strumento dwgadd è il modo più semplice per creare programmaticamente un file DWG. Accetta semplici comandi per creare entità e le loro proprietà. Non c'è bisogno di immergersi nelle complessità del formato binario — descrivete semplicemente cosa volete vedere nel disegno.
Fondamenti tecnici
La libreria è scritta in C99, il che la rende massimamente portabile. Si sente a casa su Linux e Windows (via MSYS2 o Visual Studio 2019+).
Un punto interessante riguarda le codifiche. Le vecchie versioni di DWG usavano circa 30 diverse pagine codice. LibreDWG gestisce tutto il lavoro sporco di convertire questo zoo in UTF-8. Internamente usa UTF-8 (più precisamente WTF8, dato che Windows UCS-2 ha le sue particolarità con le coppie surrogate), il che elimina i problemi con il "testo corrotto" nei nomi dei layer o nei testi.
Per chi non vuole scrivere in C puro, sono disponibili binding per Python e Perl tramite SWIG. Questo vi permette di creare rapidamente uno script per elaborare disegni, usando tutta la potenza dei linguaggi di alto livello.
A chi è rivolto
Vedo diversi scenari in cui LibreDWG sarà indispensabile:
- Automazione dei flussi di lavoro documentali. Quando dovete estrarre automaticamente dati dai cartigli dei disegni e inserirli in un database.
- Servizi web per ingegneri. Creare visualizzatori online o convertitori senza usare software server-side pesanti.
- Generazione di report. Se dovete allegare un diagramma del layout delle apparecchiature a un report generato in PDF o PostScript.
- Integrazione GIS. Grazie al supporto GeoJSON, i dati dei disegni possono essere inviati direttamente ai sistemi informativi geografici.
Vale la pena provarlo
Devi capire che lavorare con DWG significa sempre camminare sul filo del rasoio. Il formato è proprietario e il reverse engineering non sempre tiene il passo con gli aggiornamenti di AutoCAD. Ad esempio, la scrittura di file delle versioni R2010-R2018 potrebbe ancora risultare in errori di checksum (CRC).
Tuttavia, per le attività di lettura e conversione, LibreDWG è uno strumento potente e, cosa più importante, gratuito. Se vi siete trovati nella necessità di elaborare disegni programmaticamente, iniziate esplorando gli esempi nella cartella examples. Lì c'è un file load_dwg.c — è un eccellente scheletro per la vostra futura applicazione.
Il progetto è vivo, i commit arrivano regolarmente, e la documentazione in formato Texinfo e Doxygen vi aiuterà a navigare nelle profondità dell'API. Se siete pronti a tollerare alcune limitazioni nella scrittura dei nuovi formati, LibreDWG diventerà un'ottima aggiunta al vostro toolkit.
Progetti correlati