cg-Cad

CADTrek »Itinerario 4

Tipi di Linea complessi in Autocad (2)

...non capisco i file .shx come si creano cosa devono contenere e come si fa a leggerli...

Tracks è un esempio di tipo di linea complesso (presente nel file acad.lin). Un tipo di linea complesso è una linea che incorpora dei simboli (forme o testi).

Tracks

Tracks è così definito:
*TRACKS,Tracks -|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
A,.15,[TRACK1,ltypeshp.shx,s=.25],.15


I tipi di linea complessi possono includere forme ed oggetti di testo
La sintassi per i descrittori di forme è:
nome,file.shx[,trasformazione]

La sintassi per i descrittori di testo è:
"stringa",stile[,trasformazione]

Trasformazione è opzionale e sta per:
r=numero decimale (rotazione relativa)
a=num. dec. (rotazione assoluta)
s=num. dec. (scala)
x=num. dec. (sfalsamento X)
y=num. dec. (sfalsamento Y)
Ad esempio [esempio,esempio.shx,s=2,r=10,x=0.5]

La sintassi che definisce il tipo complesso deve essere racchiusa all'interno di parentesi quadre.
Il numero massimo di descrittori che è possibile utilizzare per definire un tipo di linea complesso è 6, il minimo è 2.
Ad esempio Tracks è definito da un tipo di linea semplice con all'interno la definizione di tipo di linea complesso TRACK1 con 3 descrittori: nome_forma, nome_file.shx, rapporto di scala.
A,.15,[TRACK1,ltypeshp.shx,s=.25],.15

Con il comando LINETYPE non è possibile modificare o aggiungere nuovi tipi di linea complessi ad un file LIN.
Si deve intervenire direttamente sul file LIN.
Apri il file ACAD.LIN copia (e incolla) le due stringhe di definizione di Tracks in fondo al file, quindi aggiungi il descrittore R:
*TRACKS2,tracks
A,.15,[TRACK1,ltypeshp.shx,s=.25,r=10],.15

Con LINETYPE (TLINEA) carica e rendi corrente Tracks2 e disegna una linea...
Modifica in ACAD.LIN tracks2:
*TRACKS2,tracks
A,.15,[TRACK1,ltypeshp.shx,s=.25,r=30],.15

Con LINETYPE (TLINEA) carica e rendi corrente Tracks2 e disegna una linea...

Tracks2

Non è possibile cambiare il nome della forma se il nuovo nome non è presente nel file .shx.

Shx è il file compilato del file di definizione delle forme .shp. Nel caso contingente il file è ltypeshp.shp.
La definizione di Tracks nel file .shp è:
*130,6,TRACK1
014,002,01C,001,01C,0

Il primo rigo è identificato da un asterisco e da un numero univoco, compreso tra 1 e 258. E' il numero della forma.
(I font di testo richiedono numeri specifici che corrispondono al valore del carattere rappresentato dal codice ASCII).
Il secondo numero indica il numero di byte di dati necessari per descrivere la forma (limite massimo 2000 byte per forma).
Il terzo campo del primo rigo indica il nome della forma (nel caso in specie TRACK1).
Il secondo rigo è una serie di byte di specifica.
Ogni byte di specifica rappresenta un codice che definisce la lunghezza e la direzione del vettore oppure uno dei codici speciali.
Un byte di specifica può essere espresso sia come valore decimale che esadecimale.

codici di direzione del vettoreOgni codice è una stringa di tre caratteri. Il primo carattere è 0 (per valori esadecimali), il secondo carattere indica la lunghezza del vettore in unità (valori esadecimali compresi tra 1 e F = 1 a 15). Il terzo carattere specifica la direzione del vettore.
I codici speciali sono usati oltre che per definire vettori, anche per creare forme e indicare azioni da eseguire.
Per utilizzare un codice speciale il secondo carattere della stringa deve essere 0 ovvero la stringa si riduce ad un carattere, esempio 000=0.


Lista dei codici speciali

000 (0) fine della definizione
001 (1) penna abbassata
002 (2) penna sollevata
003 (3) divide le lunghezze del vettore per il byte successivo
004 (4) moltiplica le lungh. del v. per il byte successivo
005 (5) salva la posizione corrente
006 (6) ripristina la posizione corrente
007 (7) disegna la forma secondaria con il numero fornito dal byte successivo
008 (8) spostamento x-y fornito dai 2 byte succ.
009 (9) spostamenti x-y che terminano con 0,0
00A (A) arco ottante definito dai 2 byte succ.
00B (B) arco frazionario definito dai 5 byte succ.
00C (C) arco definito dallo spostamento x-y e dalla curvatura
00D (D) + archi specificati da curve
00E (E) elabora il comando succ. se il testo è verticale

Ad esempio la definizione di Tracks è:
*130,6,TRACK1
014,002,01C,001,01C,0

014 -> disegna un vettore unitario con verso 4.
002 -> penna sollevata.
01C -> si sposta al centro (verso C).
001 -> penna abbassata.
01C -> disegna un vettore unitario con verso C.
000 -> fine azione.

Adesso creo un tipo di linea complesso, questo è il codice:
*200,6,LISCA
015,002,01D,001,01B,0

Apro il blocco note di Win scrivo il codice e salvo il file con il nome lisca.shp.
In Autocad compilo il file lisca.shp con il comando COMPILE (COMPILA).
Compilazione riuscita. Il file di output C:\Documenti\lisca.shx contiene 49 bytes.
Adesso sposto il file lisca.shx nella cartella SUPPORT di Autocad, e nel file ACAD.LIN scrivo le seguenti righe:
*LISCA,lisca ->->->->->->->->->
A,.15,[LISCA,lisca.shx,s=.25],.15

Rendo corrente il tipo e disegno una linea...

lisca

CADTrek »Itinerario 4