Hallo,
beim Verarbeiten von Polygonen im ULP würde ich gerne die Methode
verwenden, wie sie im Handbuch vorgeschlagen ist. Dabei hat das UL_POLYGON
den Loop-Members "contours()", welcher durch alle Konturen eines
freigerechneten Polygons iteriert. Verwendet man den contours()-Member mit
einem positiven Parameter, dann wird durch die einzelnen positiven
Teil-Stücke des Polygons iteriert. Das Beispiel aus dem Handbuch dazu:
board(B) {
B.signals(S) {
S.polygons(P) {
// handle only the "positive" polygons:
int i = 1;
int active;
do {
active = 0;
P.contours(W, i) {
active = 1;
// do something with the wire
}
i++;
} while (active);
}
}
}
Das erfüllt genau seinen Zweck und funktioniert sehr gut. Der Parameter
"i" gibt das zu iterierende Teilstück an. Die Gesamtanzahl der Teilstücke
ist unbekannt, deshalb führt die Variable "active" Buch, ob die Iteration
überhaupt gestartet wurde.
DAS PROBLEM:
Wenn diese Routine auf nicht freigerechneten Polygonen (->Ratsnest)
angewendet wird, läuft sie in eine Endlosschleife. Scheinbar hat der
Parameter des contour(i)-Members keine Auswirkung bei nicht freigerechneten
Polygonen, so dass bei jedem Wert das gesamte Polygon iteriert wird. Die
Prüfung auf "active" ist dann immer erfolgreich, so dass die Schleife
nicht verlassen wird.
Ich sehe keinen Weg, herauszufinden, ob das Polygon freigerechnet wurde.
Das wäre aber nötig, um eine andere Strategie zu fahren.
Hat hierzu jemand Vorschläge?
Vielen Dank!
Grüße
Janos
--
Browser-Zugang zu den CadSoft-Support-Foren auf http://www.eaglecentral.ca