Un tipo di linea complesso può contenere forme incorporate che vengono salvate in file di forma. I tipi di linea complessi possono indicare utilità, contorni, sagome e così via.
Come per i tipi di linea semplici, le linee complesse vengono disegnate dinamicamente mentre l'utente specifica i vertici. Le forme e gli oggetti di testo incorporati nelle linee sono sempre visualizzati completamente e non risultano mai interrotti.
I descrittori dei modelli dei tipi di linea che includono oggetti forma sono simili a quello utilizzato per i tipi di linea semplici.
La sintassi per le descrizioni degli oggetti Shape in una descrizione di tipo di linea è la seguente:
[shape_name,shape_filename] or [shape_name,shape_filename,transform]
dove transform è facoltativo e può essere una serie qualsiasi dei seguenti elementi (ciascuno preceduto da una virgola):
R=## Rotazione relativa
A=## Rotazione assoluta
U=## Rotazione verticale
S=## Scala
X=## X offset
Y=## Y offset
In questa sintassi, ## è il numero decimale con segno (1, –17, 0.01 e così via), la rotazione è espressa in gradi e le opzioni restanti sono espresse in unità di disegno scalate in base al tipo di linea. Se vengono utilizzate, le lettere transform devono essere seguite da un segno di uguale e da un numero.
La definizione di tipo di linea che segue indica un tipo di linea denominato CON1LINE composto da un modello che si ripete di un segmento di linea, uno spazio e la forma incorporata CON1 del file ep.shx. (Notare che il file ep.shx deve trovarsi nel percorso support affinché l'esempio funzioni correttamente.)
*CON1LINE, --- [CON1] --- [CON1] --- [CON1] A,1.0,-0.25,[CON1,ep.shx],-1.0
Ad eccezione del codice racchiuso tra parentesi quadre, tutti gli altri elementi sono coerente con la definizione di un tipo di linea semplice.
Come è stato illustrato in precedenza, è possibile utilizzare un totale di sei campi per definire una forma come parte di un tipo di linea. I primi due sono obbligatori e dipendono dalla posizione, mentre gli altri quattro sono facoltativi e possono essere ordinati in modo arbitrario. Nei due esempi che seguono vengono illustrate varie voci nel campo di definizione della forma.
[CAP,ep.shx,S=2,R=10,X=0.5]
Il codice sopra riportato disegna la forma CAP definita nel file di forma ep.shx con una scala due volte maggiore della scala dell'unità del tipo di linea, una rotazione tangenziale di 10 gradi in una direzione antioraria e un offset X di 0,5 unità di disegno prima che avvenga l'elaborazione della forma.
[DIP8,pd.shx,X=0.5,Y=1,R=0,S=1]
Il codice sopra riportato disegna la forma DIP8 definita nel file di forma pd.shx con un offset X di 0,5 unità di disegno prima che venga eseguito il disegno della forma e un offset Y di un'unità di disegno al di sopra del tipo di linea, con una rotazione pari a 0 e una scala pari alla scala dell'unità del tipo di linea.
Il formato per l'aggiunta una forma ad una descrizione di tipo di linea è il seguente:
[shape_name,shape_filename,scale,rotate,xoffset,yoffset]
I valori relativi a scala, rotazione, offset X e offset Y devono essere espressi come numeri decimali con segno come 1, -17 e 0.01.
Il nome della forma da disegnare. È necessario includere questo campo. Se viene omesso, non è possibile creare la definizione del tipo di linea. Se shape_name non è disponibile nel file di forma specificato, il tipo di linea viene caricato e può essere utilizzato, ma senza la forma incorporata.
Il nome di un file di definizione della forma compilato (SHX). Se viene omesso, non è possibile creare la definizione del tipo di linea. Se shape_filename non è qualificato (ossia se non è specificato alcun percorso), viene eseguita la ricerca del file nei percorsi di supporto del programma. Se shape_filename è completo e non si trova in quella posizione, il percorso viene rimosso e viene eseguita la ricerca del file nei percorsi di supporto del programma. Se il file non viene trovato, il tipo di linea viene caricato e può essere utilizzato, ma senza la forma incorporata.
Il fattore di scala della forma per il quale viene moltiplicata la scala definita internamente della forma. Il fattore di scala specificato deve essere preceduto dal prefisso S=. Ad esempio, S=0.5 indica un fattore di scala pari a 0.5. Se la scala definita internamente della forma è 0, viene utilizzato solo S= valore come fattore di scala.
L'angolo di rotazione della forma da visualizzare nel tipo di linea. L'angolo di rotazione deve essere preceduto dal prefisso U=, R= o A=.
L'offset della forma nell'asse X del tipo di linea calcolato dall'estremità del vertice della definizione del tipo di linea. L'offset specificato deve essere preceduto dal prefisso X=. Ad esempio, X=0.1 indica un offset di 0.1. Se un offset viene omesso oppure se il suo valore è 0, la forma viene elaborata senza alcun offset. Includere questo campo se si desidera una linea continua con le forme. Questo valore non viene scalato per il fattore di scala definito da S=valore.
L'offset della forma nell'asse Y del tipo di linea calcolato dall'estremità del vertice della definizione del tipo di linea. L'offset specificato deve essere preceduto dal prefisso Y=. Ad esempio, Y=0.1 indica un offset di 0.1. Se un offset viene omesso oppure se il suo valore è 0, la forma viene elaborata senza alcun offset. Includere questo campo se si desidera una linea continua con le forme. Questo valore non viene scalato per il fattore di scala definito da S=valore.