EAGLE Help

UL_POLYGON


Data members

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