isolate | int |
layer | int |
orphans | int (0=off, 1=on) |
pour | int (POLYGON_POUR_...) |
rank | int |
spacing | int |
thermals | int (0=off, 1=on) |
width | int |
Loop members
contours() | UL_WIRE (siehe Anmerkung) |
fillings() | UL_WIRE |
wires() | UL_WIRE |
Konstanten
POLYGON_POUR_SOLID | solid |
POLYGON_POUR_HATCH | hatch |
Siehe auch UL_BOARD, UL_PACKAGE, UL_SHEET, UL_SIGNAL, UL_SYMBOL
Anmerkung
Die Loop-Member contours() und fillings() gehen durch alle Wires, mit denen das Polygon gezeichnet wird, sofern es zu einem Signal gehört und mit dem Befehl RATSNEST freigerechnet wurde. Das Loop-Member wires() geht immer durch die Wires, die vom Benutzer gezeichnet wurden. Für nicht freigerechnete Signal-Polygone liefert contours() dasselbe Ergebnis wie wires(). Fillings() hat dann keine Bedeutung.
Polygon-Strichstärke
Wenn Sie das Loop-Member fillings() verwenden um die Füll-Linien des Polygons zu erreichen, stellen Sie sicher, dass die Strichstärke width des Polygons nicht null ist (sie sollte etwas über null liegen, bzw. mindestens der Auflösung des Ausgabetreibers mit dem Sie die Zeichnung ausgeben wollen entsprechen). Zeichnen Sie ein Polygon mit Strichstärke = 0, ergibt sich eine riesige Datenmenge, da das Polygon mit der kleinsten Editor-Auflösung von 1/10000mm berechnet wird.
Teilpolygone
Ein berechnetes Polygon kann aus verschiedenen getrennten Teilen (positivePolygone genannt) bestehen, wobei jedes davon Aussparungen (negative Polygone genannt) enthalten kann, die von anderen Objekten, die vom Polygon subtrahiert werden, herrühren. Negative Polygone können wiederum weitere positive Polygone enthalten und so weiter.
Die Wires, die mit contours() erreicht werden, beginnen immer in einem positiven Polygon. Um herauszufinden wo ein Teilpolygon endet und das nächste beginnt, speichern Sie einfach die Koordinate (x1,y1) des ersten Wires und prüfen diese gegenüber (x2,y2) jedes folgenden Wires. Sobald die beiden Werte identisch sind, ist der letzte Wire des Teilpolygons gefunden. Es gilt immer, dass der zweite Punkt (x2,y2) identisch mit dem ersten Punkt (x1,y1) des nächsten Wires in diesem Teilpolygon ist.
Um herauszufinden ob man innerhalb bzw. außerhalb der Polygons ist, nehmen Sie einen beliebigen Umriss-Wire und stellen sich Sie vor, von dessen Punkt (x1,y1) zum Punkt (x2,y2) zu sehen. Rechts vom Wire ist immer innerhalb des Polygons. Hinweis: Wenn Sie einfach ein Polygon zeichnen wollen, brauchen Sie all diese Details nicht.
Beispiel
board(B) { B.signals(S) { S.polygons(P) { int x0, y0, first = 1; P.contours(W) { if (first) { // a new partial polygon is 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 partial polygon, // so the next wire (if any) will be the first wire // of the next partial polygon first = 1; } } } } }
Index | Copyright © 2005 CadSoft Computer GmbH |