arc | UL_ARC |
cap | int (CAP_...) |
curve | real |
layer | int |
style | int (WIRE_STYLE_...) |
width | int |
x1, y1 | int (Anfangspunkt) |
x2, y2 | int (Endpunkt) |
Loop members
pieces() | UL_WIRE (siehe Anmerkung) |
Konstanten
CAP_FLAT | flache Arc-Enden |
CAP_ROUND | runde Arc-Enden |
WIRE_STYLE_CONTINUOUS | durchgezogen |
WIRE_STYLE_LONGDASH | lang gestrichelt |
WIRE_STYLE_SHORTDASH | kurz gestrichelt |
WIRE_STYLE_DASHDOT | Strich-Punkt-Linie |
Siehe auch UL_BOARD, UL_PACKAGE, UL_SEGMENT, UL_SHEET, UL_SIGNAL, UL_SYMBOL, UL_ARC
Wire Style
Bei einem UL_WIRE mit anderem style als WIRE_STYLE_CONTINUOUS, kann über das Loop-Member pieces() auf die individuellen Teile, die z. B. eine gestrichelte Linie darstellen, zugegriffen werden. Wenn pieces() für UL_WIRE mit WIRE_STYLE_CONTINUOUS aufgerufen wird, erhält man ein Segment, das genau dem original UL_WIRE entspricht. Das Loop-Member pieces() kann nicht von UL_WIRE aus aufgerufen werden, wenn dieser selbst schon über pieces() aufgerufen wurde (das würde eine unendliche Schleife verursachen).
Arcs auf Wire-Ebene
Arcs sind zunächst einfach nur Wires, mit einigen zusätzlichen Eigenschaften. In erster Näherung werden Arcs genauso behandelt wie Wires, das heißt sie haben einen Anfangs- und Endpunkt, eine Breite und einen Linientyp. Hinzu kommen auf Wire-Ebene die Parameter cap und curve. cap gibt an ob die Arc-Enden rund oder flach sind, und curve bestimmt die "Krümmung" des Arcs. Der gültige Bereich für curve ist -360..+360, wobei der Wert angibt aus welchem Anteil eines Vollkreises der Arc besteht. Ein Wert von 90 beispielsweise steht für einen Viertelkreis, während 180 einen Halbkreis ergibt. Der maximale Wert von 360 kann nur theoretisch erreicht werden, da dies bedeuten würde, daß der Arc aus einem vollen Kreis besteht, der, weil Anfangs- und Endpunkt auf dem Kreis liegen müssen, einen unendlich großen Durchmesser haben müsste. Positive Werte für curve bedeuten, daß der Arc im mathematisch positiven Sinne (also gegen den Uhrzeigersinn) gezeichnet wird. Falls curve gleich 0 ist, handelt es sich um eine gerade Linie ("keine Krümmung"), was letztlich einem Wire entspricht.
Der cap Parameter ist nur für echte Arcs von Bedeutung und liefert für gerade Wires immer CAP_ROUND.
Ob ein UL_WIRE ein Arc ist oder nicht kann durch Abfragen des booleschen Rückgabewertes des arc Data-Members herausgefunden werden. Falls dieses 0 liefert, liegt ein gerader Wire vor, ansonsten ein Arc. Liefert arc nicht 0 so darf es weiter dereferenziert werden um die für einen UL_ARC spezifischen Parameter Start- und Endwinkel, Radius und Mittelpunkt zu erfragen. Diese zusätzlichen Parameter sind normalerweise nur von Bedeutung wenn der Arc gezeichnet oder anderweitig verarbeitet werden soll, und dabei die tatsächliche Form eine Rolle spielt.
Beispiel
board(B) { B.wires(W) { printf("Wire: (%d %d) (%d %d)\n", W.x1, W.y1, W.x2, W.y2); } }
Index | Copyright © 2005 CadSoft Computer GmbH |