>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
C

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:

  1. Automazione dei flussi di lavoro documentali. Quando dovete estrarre automaticamente dati dai cartigli dei disegni e inserirli in un database.
  2. Servizi web per ingegneri. Creare visualizzatori online o convertitori senza usare software server-side pesanti.
  3. Generazione di report. Se dovete allegare un diagramma del layout delle apparecchiature a un report generato in PDF o PostScript.
  4. 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