Il formato DXF #LegaNerd
9

Salve salvino!
Approfitto del fatto che per lavoro mi sto documentando sull’argomento, per buttare giù un post separato dalla rubrica Colorama, sul formato DXF.

Molti di voi saranno sicuramente, grafici o disegnatori che conoscono Autocad. Altri saranno programmatori abituati a lavorare con i files.
Questo articolo cerca di porsi a metà strada tra entrambi i campi, fornendo ai primi un’infarinatura di “cosa c’è sotto al cofano” dei loro disegni, e ai secondi alcune nozioni di base su come vengono rappresentati a livello di codice.

Cos’è un file DXF


Il formato DXF è lo standard più utilizzato per lo scambio di dati tra i diversi programmi di disegno e di grafica vettoriale.
Inizialmente nato per AutoCAD, è divenuto rapidamente uno standard de facto, adottato in modo universale nel campo della grafica tecnica.

I file DXF sono normali file di testo che possono essere aperti e modificati con semplici editor ASCII (come il bRocco note di Windows, per capirci).

Mostra Approfondimento ∨

Di seguito useremo, come nel gergo del disegno tecnico, la parola “entità” per indicare tutti gli elementi GRAFICI del disegno, e la parola “oggetti” per tutti gli altri elementi NON GRAFICI.

I group codes


Il file è strutturato come una sequenza di coppie di valori, ognuno su una riga separata.
Il primo valore e’ chiamato codice di gruppo, e specifica a quale tipo di dati appartiene il secondo valore (stringa, intero, valore a virgola mobile, eccetera).

Mostra Approfondimento ∨

Oltre a rappresentare il tipo di dati, ALCUNI particolari codici di gruppo (non tutti), sono fixed, associati a significati fissi ben precisi. Ecco quindi che il codice 2 diventa un id per il nome degli oggetti e delle entità, l’8 per il layer, il 6 per l’ltype (tipo di linea, o tratteggio), il 39 per lo spessore, il 62 per il colore, eccetera.

Alcuni codici acquisiscono un significato fisso solo all’interno di una particolare sezione. Ad esempio il codice 0 rappresenta semplicemente una stringa, ma se usato dentro alla sezione ENTITIES, come vedremo, indica il tipo di entità geometrica che si sta descrivendo, e funge da tag di apertura del gruppo.

Le sezioni


Un file dxf è articolato in 7 sezioni.

Mostra Approfondimento ∨

Non è necessaria la presenza di tutte le sezioni. La sezione HEADER ad esempio può essere omessa se non ci interessa specificare nel file nessuna impostazione particolare. Allo stesso modo possiamo omettere la sezione BLOCKS se non utilizziamo blocchi, la sezione TABLES se non usiamo nessuna delle tabelle in essa contenute, e così via.

Mostra Approfondimento ∨

Non è necessaria nemmeno la presenza di tutte le entità del disegno.
Ad esempio, se si utilizza l’opzione “Seleziona oggetti” del comando “Salva” o “Salva come”, la sezione ENTITIES del file dxf risultante conterrà solo le entità selezionate.

Le entità geometriche


La sezione ENTITIES, come abbiamo visto, contiene le entità geometriche che compongono il disegno.

Ciascuna entità geometrica è definita da una serie di coppie di valori, che inizia con un codice 0 seguito dal nome dell’entità, e termina col codice 0 della serie successiva, oppure con un tag ENDSEC di fine sezione.

All’interno di ciascuna serie, l’ordine e il significato dei codici dipende dall’entità che si sta rappresentando. Ognuna ha la sua sintassi particolare, ma in generale, alcuni codici di base sono in comune tra tutte.

Mostra Approfondimento ∨

Vediamo in approfondimento un semplice DXF di esempio basato sulla sola sezione ENTITIES.

Mostra Approfondimento ∨

I blocchi


Per complicare le cose, anche i blocchi (rappresentati nella sezione BLOCKS) sono composti da entità geometriche, che seguono la stessa sintassi di gruppo di quelli della sezione ENTITIES.

Ogni blocco ha un oggetto INSERT posto nella sezione ENTITIES che funge da puntatore al pezzo di codice corrispondente nella sezione BLOCKS.

Mostra Approfondimento ∨

Chiudiamo qua questa breve panoramica, per forza di cose tutt’altro che esauriente.
Le entità e gli oggetti di Autocad sono tantissimi, ed è praticamente impossibile conoscere tutti i codici di gruppo e tutte le sintassi.
L’idea alla base di questo post era solo di fornire una visione introduttiva all’argomento. Potrete poi approfondire sui manuali ufficiali della Autodesk.

A presto ! :)

Fonti:
Autodesk DXF Reference
Esempio parser DXF in VB

Aree Tematiche
Grafica & Design Programmazione
Tag
giovedì 23 giugno 2011 - 19:39
Edit

Lega Nerd Podcast

Lega Nerd Live

LN Panic Mode - Premi "P" per tornare a Lega Nerd