| hatched | int (0=off, 1=on) |
| isola | int |
| layer | int |
| orphans | int (0=off, 1=on) |
| pour | int (POLYGON_POUR_...) |
| rank | int |
| spaziatura | int |
| thermals | int (0=off, 1=on) |
| thermalWidth | int |
| width | int |
| contours() | UL_WIRE (vedere nota) |
| fillings() | UL_WIRE (vedere nota) |
| wires() | UL_WIRE |
Vedere anche UL_SIGNAL
Il membro di sequenza chiusa contours() scorre in sequenza i fili che vengono utilizzati per disegnare i contorni dei dati di riempimento del pour poligono. Il membro di sequenza chiusa fillings() scorre in sequenza i fili utilizzati per disegnare il pour poligono quando è impostato il membro dati hatched. Se il membro dati hatched non è impostato, fillings() non esegue alcuna operazione. Il membro di sequenza chiusa wire() scorre sempre in sequenza i fili del poligono mentre vengono disegnati dall'utente.
I risultati del riempimento di un pour poligono possono essere costituiti da diverse figure chiuse distinte (chiamate contornature poligono positive), ciascuna delle quali può contenere vuoti/fori (contornature poligono negative) risultanti da altri oggetti sottratti dalla contornatura positiva. I contorni negativi possono contenere a loro volta altri contorni positivi e così via.
Se il membro di sequenza chiusa contours() viene chiamato senza un secondo parametro, scorre in sequenza tutti i fili di contornatura, a prescindere che appartengano ad una contornatura poligono positiva o ad un foro di una contornatura poligono negativa. In questo caso, i fili lavorati in sequenza chiusa con contours() iniziano sempre con una contornatura poligono positiva. Se si desidera ottenere separatamente i fili di contornatura positiva e negativa, è possibile chiamare contours() con un parametro intero aggiuntivo (vedere il secondo esempio di seguito). Il segno di tale parametro determina se verrà restituito una contornatura poligono positiva o negativa e il valore indica l'indice di tale contornatura. Se non è presente alcun contorno poligono con l'indice specificato, l'istruzione non verrà eseguita. Il vantaggio di questo metodo è che non è necessario determinare l'inizio e la fine di un particolare contorno poligono (confrontando le coordinate). Per un dato indice, l'istruzione verrà eseguita per tutti i fili di tale contorno poligono. Se si sostituisce il secondo parametro con 0, si otterrà lo stesso comportamento che si ottiene non utilizzando un secondo parametro.
I fili di un contorno poligono sono diretti alle estremità. Per determinare dove termina un contorno e inizia quello successivo, è sufficiente memorizzare le coordinate (x1,y1) del primo filo e confrontarle con (x2,y2) per ogni filo seguente. Quando questi punti sono equivalenti, significa che si è trovato l'ultimo filo del contorno del poligono.
I contorni poligono positivi (che formano i bordi esterni) sono orientati in senso orario, mentre quelli negativi (che formano i bordi dei fori) sono orientati in senso antiorario. Per determinare "l'interno" e "l'esterno" del pour poligono, immaginare di osservare lungo un qualsiasi filo del contorno dal punto (x1,y1) a (x2,y2). La "parte interna" del pour poligono è sempre sul lato destro del filo.
board(B) {
B.signals(S) {
S.polypours(P) {
int x0, y0, first = 1;
P.contours(W) {
if (first) {
// a new polygon contouris starting
x0 = W.x1;
y0 = W.y1;
}
// ...
// do something with the wire
// ...
if (first)
first = 0;
else if (W.x2 == x0 && W.y2 == y0) {
// this was the last wire of the polygon contour,
// so the next wire (if any) will be the first wire
// of the next polygon contour
first = 1;
}
}
}
}
}
board(B) {
B.signals(S) {
S.polypours(P) {
// process only the "positive" polygon contours:
int i = 1;
int active;
do {
active = 0;
P.contours(W, i) {
active = 1;
// do something with the wire
}
i++;
} while (active);
}
}
}