31 dicembre 2018

Polilinee : tipi e conversione

Ma perché esistono diversi tipi di polilinea ?


Forse non te ne sei mai accorto. Oppure le hai notate quando ti sei imbattuto in qualche disegno derivato da rilievi topografici o riaprendo un vecchio disegno. O, ancora, quando hai avuto a che fare con un disegno prodotto da  software per la gestione del CAM.

Quelle che per te normalmente si chiamano Polilinee, in quei disegno assumono il nome di Polilinea 2D o Polilinea 3D.

selezionando la polilinea nella finestra delle proprieta viene mostrato il tipo di oggetto

È facile intuire che una polilinea 3D congiunge dei punti aventi coordinate Z differenti... ma che differenza c'è tra Polilinea (in inglese LWPolyline) e Polilinea 2D  (2D Polyline) ?

Scoprimo quali sono le caratteristiche e differenze tra questi tipi di polilinee.

I 3 tipi

Polilinea 2D (2D Polyline)

Sono le polilinee originarie, quelle presenti sin dalle prime versioni di AutoCAD. Sono polilinee i cui vertici giacciono tutti alla stessa quota.

Se le ispezioniamo con il comando LISTA si nota come nella struttura di dati le informazioni, per ogni singolo vertice, siano ridondanti.

POLILINEA  Layer: "0"
                            Spazio: Spazio modello
                     Gestore = 242
            Aperta
  larghezza iniziale    0.0000
  larghezza finale    0.0000
              area 382407.9247
            lunghezza 2372.4751

                  VERTICE   Layer: "0"

                            Spazio: Spazio modello
                     Gestore = 243
                al punto, X=2032.7092  Y=3152.4706  Z=   0.0000
  larghezza iniziale    0.0000
  larghezza finale    0.0000

                  VERTICE   Layer: "0"

                            Spazio: Spazio modello
                     Gestore = 245
                al punto, X=3746.9614  Y=3216.9185  Z=   0.0000
  larghezza iniziale    0.0000
  larghezza finale    0.0000

                 FINE DELLA SEQUENZA  Layer: "0"

                            Spazio: Spazio modello
                     Gestore = 247

Infatti per ogni vertice c’è l’informazione del layer, quella del gestore (handent) e quella dello spazio.
In aggiunta è presente un dato di chiusura chiamato “Fine della sequenza” anche’esso con le stesse informazioni.
Tutti questi dati sono inutili, perché già assegnate all'oggetto principale polilinea.

È questo il motivo per cui -  con la versione 14 di AutoCAD - fu introdotto un nuovo tipo di polilinea, la Lwpolyline o, in italiano, semplicemente Polilinea.

Polilinea (LWPolyline)

Il prefisso LW è la contrazione di Lite Weigth, peso leggero. Infatti queste polilinee memorizzano le informazioni riguardo ai vertici che la compongono in  maniera ottimizzata, migliorando il ‘peso’ in termini di kb del file DWG.

Esplorando sempre con il comando LISTA  questo tipo di polilinea otteniamo:


LWPOLYLINE  Layer: "0"  Spazio: Spazio modello
                     Gestore = 241
            Aperta
larghezza costante    0.0000
              area   366224.5450
         lunghezza   2311.9461
          al punto  X=2087.0221  Y=2680.9835  Z=   0.0000
          al punto  X=2748.9611  Y=2050.0727  Z=   0.0000
          al punto  X=4130.5466  Y=1839.7690  Z=   0.0000

Come si vede, per ogni vertice, si memorizzano solo le coordinate X e Y.

Viene visualizzato anche il valore della coordinata Z , per completezza, ma questo corrisponde al valore dell’Elevazione posseduta dalla Polilinea e, nei dati interni dell’oggetto, non c'è traccia del valore Z dei vertici (parola di programmatore :-) ).

Dalla versione 14 dunque il programma tende a creare sempre Polilinee ottimizzate, le LWPolyline.

Polilinea 3D (3D Polyline)

Sono polilinee che possono contenere solo segmenti lineari e  i vertici che la rappresentano possono avere coordinata Z diversa. Queste polilinee non supportano la proprieta “Larghezza”.

Anche queste sono memorizzate con una struttura di dati ridondante. Nel risultato prodotto dal comando LISTA si nota come, in questo caso,  il valore delle coordinata Z sia variabile.

POLILINEA  Layer: "0"
                            Spazio: Spazio modello
                     Gestore = 24f
            Aperta spazio
              area 150475.0474
            lunghezza 1139.2070

                  VERTICE   Layer: "0"

                            Spazio: Spazio modello
                     Gestore = 251
                            al punto, X=1614.9188  Y=2128.5643  Z=  33.0000

                  VERTICE   Layer: "0"

                            Spazio: Spazio modello
                     Gestore = 254
                            al punto, X=2517.8715  Y=1874.1648  Z=  42.0000
FINE DELLA SEQUENZA  Layer: "0"
                            Spazio: Spazio modello
                     Gestore = 250

Risparmio di spazio

Per avere idea di quanto l’utilizzo di Lwpolyline riduca le dimensioni del file DWG, rispetto all'utilizzo delle Polilinee 2D,  ho fatto un test: ho creato 2 disegni, con 600 polilinee ognuna composta da 10 vertici.

Nel primo disegno ho utilizzato le LWPolyline e la sua dimensione finale è stata di 97KB, nel secondo le polyline 2D e la sua dimensione finale è stata di 208KB.

Conversione tra tipi

AutoCAD mette a disposizione un paio di comandi per trasformare le polilinee.


Da Polilinea (LWPolyline) a Polilinea 2D (Polyline) e viceversa.

Il comando CONVERTIPOLI (Convertpoly) permette di cambiare il tipo di polilinea 2D da 'Lite' a
'Heavy' o viceversa.

Può essere utile trasformare una LWPolyline in semplice polilinea quando, per esempio, si utilizzano vecchi programmi AutoLISP che , essendo stati scritti prima della R14, prevedevano di trattare i dati di polilinee 2D.
Oppure qunado bisogna ‘dare in pasto’ il disegno ad un programa di una macchina a controllo numerico, ve ne sono molte ancora con software non aggiornati che non riconoscono le LWpolyline.

Da Polilinea 2D (Polyline) a Polilinea (LWPolyline)

Un altro comando è CONVERTI (Convert) che converte le polilinee 2D selezionate in Lwpolyline.. Questa trasformazione può essere eseguita anche automaticamente, all'apertura del disegno, se si imposta la variabile PLINETYPE a 2.

Da Polilinea 3D (3D Polyline) a Polilinea (LWPolyline)

In  questo caso non ci sono comandi diretti per eseguire la trasformazione. Tra l’altro, per forza di cose, questa è una operazione che fa perdere l’informazione relativa alla coordinata Z di ogni vertice.

Una tecnica che si può adottare è quella di ‘appiattire’ la polilinea, cioè renderla con tutti i vertici giacenti alla stessa quota.

Per farlo bisogna esploderla  (comando Esplodi), trasformandola in semplici linee.

Successivamente  selezionare le linee risultanti (usare l’opzione selezione oggetto ”P”, precedente) e  assegnare a tutti i vertici la stessa Z.
Per assegnare ad ogni linea derivata la stessa Z basta selezionarle tutte e, nelle caselle “Z iniziale” e “Z finale” delle proprietà, inserire il valore 0.


Infine,  ri-trasformarla in polilinea con il comando Unisci o Editapl.

Per chi va di fretta si può utilizzare questo programma free proposto dalla rivista Cadalyst di nome: Pline-3d-2d

Da polilinea 2D a polilinea 3D

Può esserci anche questa esigenza: partire da una polilinea bidimensionale per trasformarla in 3D assegnando in seguito i valori Z ai vari vertici.

Ci sono molti programmi free in rete, segnalo questo di  John W. Anstaettche, si chiama
LW-to-3D.lsp  ed è stato estratto dal forum AUGI.

Creazione di polilinee

Le polilinee si creano con il comando Plinea, ma anche con il comando Anello (Donut), Poligono (Polygon), Rettangolo (Rectangle), Fumettorev (Revcloud), Schizzo (Sketch), Ppoli (Bpoly).

È possibile crearla anche con il comando Ellisse, a condizione che la variabile PELLIPSE sia = a 1.
l'ellisse sulla destra è stata creata con PELLIPSE = a 1, si notano i vertici dei tanti archi che la formano

Una Polilinea si può ottenere anche trasformando una Spline (comando EDITSPLINE). In questo caso valutare l'impostazione della variabile PLINECONVERTMODE : se questa variabile ha valore 0 la Polilinea sarà approssimata tramite linee, se valore 1 tramite archi.

In maniera indiretta si possono creare anche unendo archi e linee tramite il comando EDITPL (Pedit) o UNISCI (Join).
Le polilinee 3D, invece, si ottengono utilizzando il comando 3DPoli (3DPoly).

Se ci fosse la necessità di creare delle polilinee vecchio stile (2D Polyline e non LWpolyline) bisogna impostare la variabile PLINETYPE con il valore pari a 0. Da quel momento, tutte le nuove polilinee create, saranno del tipo Polilinea 2D.



Nessun commento:

Posta un commento