Złożone rodzaje linii mogą zawierać osadzone symbole zapisywane w plikach symboli. Złożone rodzaje linii mogą oznaczać media, obwiednie, kontury itp.
Podobnie jak w przypadku prostych rodzajów linii, złożone linie rysowane są dynamicznie, w miarę podawania przez użytkownika kolejnych wierzchołków. Symbole i obiekty tekstowe osadzone na liniach są zawsze wyświetlane w całości; nigdy nie są ucinane.
Deskryptory wzoru rodzaju linii, zawierające obiekty symboli, są podobne do deskryptorów dla prostych rodzajów linii.
Składnia deskryptorów symboli w opisie rodzaju linii jest następująca:
[shape_name,shape_filename] or [shape_name,shape_filename,transform]
gdzie element przekształcenie jest opcjonalny i może być ciągiem następujących elementów (każdy poprzedzony przecinkiem):
R=## Względny obrót
A=## Obrót bezwzględny
U=## Obrót pionowy
S=## Skala
X=## Przesunięcie X
Y=## Przesunięcie Y
W tej składni ## jest liczbą dziesiętną ze znakiem (1, -17, 0.01 itp.), kąt obrotu jest podawany w stopniach, a pozostałe opcje wyrażone są w jednostkach rysunku, przeskalowanych zgodnie ze skalą rodzaju linii. Za literami oznaczającymi przekształcenie (gdy jest ono stosowane) musi znajdować się znak równości i liczba.
Podana niżej definicja rodzaju linii o nazwie CON1LINE złożona jest z powtarzającego się wzoru segmentu liniowego, spacji i osadzonego symbolu CON1 z pliku ep.shx. (Dla poprawności tego przykładu plik ep.shx musi znajdować się w odpowiedniej ścieżce dostępu).
*CON1LINE, --- [CON1] --- [CON1] --- [CON1] A,1.0,-0.25,[CON1,ep.shx],-1.0
Z wyjątkiem kodu ujętego w nawiasy kwadratowe wszystkie elementy są zgodne z definicją prostego rodzaju linii.
Jak opisano poprzednio, do zdefiniowania symbolu jako części rodzaju linii można łącznie wykorzystać sześć pól. Pierwsze dwa pola są wymagane, a ich kolejność jest ustalona; pozostałe cztery pola są opcjonalne i mogą być umieszczane w dowolnej kolejności. Poniżej przedstawiono dwa różne przykłady pól definicji symbolu.
[CAP,ep.shx,S=2,R=10,X=0.5]
W przykładzie tym rysowany jest symbol CAP zdefiniowany w pliku symboli ep.shx ze współczynnikiem skali dwukrotnie większym od współczynnika skali rodzaju linii, obrotem o 10 stopni w kierunku przeciwnym do ruchu wskazówek zegara względem stycznej, oraz przesunięciem wstępnym, przed przetworzeniem symbolu, w kierunku X o 0.5 jednostki rysunku.
[DIP8,pd.shx,X=0.5,Y=1,R=0,S=1]
Powyższy przykład przetwarza symbol DIP8 zdefiniowany w pliku symboli pd.shx z przesunięciem wstępnym przed przetwarzaniem symbolu o 0.5 jednostki rysunku w kierunku X i przesunięciem Y o 1 jednostkę powyżej rodzaju linii, ze skalą równą jednostkowej skali rodzaju linii i kątem obrotu równym 0.
Format służący do dodawania kształtu w opisie rodzaju linii jest następujący:
[shape_name,shape_filename,scale,rotate,xoffset,yoffset]
Wartości: skala, obrót, odsunięcie X i odsunięcie Y muszą być wyrażone jako liczby dziesiętne ze znakiem, na przykład 1, -17 lub 0,01.
Nazwa symbolu do narysowania. To pole jest wymagane. W przypadku jego pominięcia rodzaj linii nie zostanie zdefiniowany. Jeśli pole nazwa_kształtu nie występuje w podanym pliku kształtu, rodzaj linii jest ładowany i można go używać bez osadzonego kształtu.
Nazwa skompilowanego pliku definicji symboli (SHX). W przypadku jego pominięcia rodzaj linii nie zostanie zdefiniowany. Jeśli w polu nazwa_pliku_kształtu nie podano ścieżki dostępu, wówczas przeszukiwane są ścieżki dodatkowe programu. Jeśli w polu nazwa_pliku_kształtu podano pełną ścieżkę dostępu, a plik nie został znaleziony w podanym miejscu, wówczas jest ona pomijana i przeszukiwane są ścieżki dodatkowe programu. W przypadku nieznalezienia pliku zostanie wczytany rodzaj linii, którego można użyć, ale bez osadzonego kształtu.
Współczynnik skali, jaki ma być używany w odniesieniu do kształtu, czyli przez który mnożona jest zdefiniowana wewnętrznie skala. Współczynnik skali musi być poprzedzony przedrostkiem S=, na przykład S=0,5 oznacza współczynnik skali 0,5. Jeśli wewnętrznie zdefiniowana skala kształtu jest równa 0, jako skala wykorzystywana jest sama wartość S= .
Kąt obrotu kształtu, który będzie wyświetlany w rodzaju linii. Kąt obrotu musi być poprzedzony przedrostkiem U=, R= lub A=.
Wartość może zostać uzupełniona o przyrostek
Określa przesunięcie symbolu w kierunku osi X rodzaju linii, liczone od końcowego wierzchołka w definicji rodzaju linii. Odsunięcie musi być poprzedzone przedrostkiem X=, na przykład X=0,1 oznacza odsunięcie 0,1. Jeśli odsunięcie jest pominięte lub równe 0, wówczas kształt rysowany jest bez przesunięcia. Pole to należy dołączyć wtedy, gdy potrzebna jest linia ciągła z symbolami. Wartość ta nie jest skalowana o współczynnik skali zdefiniowany przez S=wartość.
Określa przesunięcie symbolu w kierunku osi Y rodzaju linii, liczone od końcowego wierzchołka w definicji rodzaju linii. Odsunięcie musi być poprzedzone przedrostkiem Y=, na przykład Y=0,1 oznacza odsunięcie 0,1. Jeśli odsunięcie jest pominięte lub równe 0, wówczas kształt rysowany jest bez przesunięcia. Pole to należy dołączyć wtedy, gdy potrzebna jest linia ciągła z symbolami. Wartość ta nie jest skalowana o współczynnik skali zdefiniowany przez S=wartość.