^
brixelweb.de OpenSCAD-Menu
[ https://openscad.org/ ]



Polygon

Um ein Polygon zu erstellen, werden Punkte im Koordinaten-System zum Verbinden benötigt. Da diese nur in der X- und Y-Achse liegen, kommen auch nur pro Punkt zwei Zahlen zum Einsatz.

// polygon_test_1.scad
polygon(
 points=[
 [0,0],    // Punkt 0
 [100,0],  // Punkt 1
 [135,50], // Punkt 2
 [35,50]   // Punkt 3
],
 paths=[
 [0,1,2,3] // 4 Verbindungen
]
);

Typisch Computer: die zählweise beginnt bei 0!

Die Angaben für X und Y werden nur durch ein Komma getrennt - umgeben von einer eckigen Klammer. Durch Komma werden weitere Punkte aufgeführt. Eine weitere eckige Klammer trennt die X und Y Werte von den Verbindungen. Diese werden ebenso durch zweimalige eckige Klammern zusammen gefasst:
polygon( points=[ [x1,y1] , [x2,y2] , [ weitere x,y] ] , paths=[ [ Verbindungen ] ] );

Die unterschiedliche Farbgebung der Klammern im Script soll ihre Zusammgehörigkeit verdeutlichen.


Die Reihenfolge der Zahlen

Die Punkte:
Die Reihenfolge der Zahlen ist willkürlich. Es ist jedem selbst überlassen, wo er mit welcher Zahl zu Zählen beginnt.
Das Programm übernimmt bei der Aufzählung der Punkte automatisch dessen Reihenfolge.

Die Verbindungen:
Bei der Abfolge der Verbindungen verhält es sich wie folgt: [[0,1,2,3]] oder [[1,2,3,0]] oder [[3,0,1,2]] kommt immer zum gleichen Ergebnis. Hier kommt es nur auf die Abfolge der Zahlen an, dass nach der letzten Verbindung die erste wiederum genannt wird. So werden die Verbindungen als eine geschlossenen Form dargestellt.
Sollte dies einmal nicht so sein, kann es zu unschönen Pannen kommen, wie unten zu sehen ist:

// polygon_falsch_test.scad
polygon(
 points=[
 [0,0],    // Punkt 0
 [100,0],  // Punkt 1
 [135,50], // Punkt 2
 [35,50]   // Punkt 3
],
 paths=[
 [0,2,3,1]// 4 Verbindungen
]
);


Ein Dreieck wird abgezogen

Die erste Zahlenkolonne im [[1,1]] bildet das geschlossene Element.
Alle nachfolgende Elemente nach [[1,1]], also [[1,1],[2,2],[n,n]] werden davon abgezogen!

// polygon_test_3.scad
polygon(
 points=[
 [0,0],    // Punkt 0
 [100,0],  // Punkt 1
 [135,50], // Punkt 2
 [35,50],// Punkt 3
[40,40]  // Punkt 4
[115,40], // Punkt 5
[90,10]   // Punkt 6
],
 paths=[
 [0,1,2,3], // 4 Verb. Außenform
 [4,5,6]    // 3 Verb. Innen 3-Eck
 ]
);

Es werden die Punkte (points) erweiter mit:, [40,40], [115,40], [90,10] . Desgleichen werden die Verbindungen (paths) ergänzt um: , [4,5,6] . Das entstandene Dreieck zwischen den Punkten 4 bis 6 wird abgezogen, so entsteht ein dreieckiges Loch!


Noch ein Ausschnitt

Es kommen weitere Punkte hinzu:, [30,10], [50,10], [50,20], [30,20] .

Weiterhin werden die Verbindungen (paths) ergänzt um: , [7,8,9,10] .

Auch dieses entstandene Viereck zwischen den Punkten 7 bis 10 wird abgezogen, so entsteht ein weiteres Loch!

// polygon_test_4.scad
polygon(
 points=[
 [0,0],    // Punkt 0
 [100,0],  // Punkt 1
 [135,50], // Punkt 2
 [35,50],  // Punkt 3
 [40,40],  // Punkt 4
[115,40],  // Punkt 5
[90,10], // Punkt 6
[30,10],  // Punkt 7
[50,10],  // Punkt 8
[50,20],  // Punkt 9
[30,20]   // Punkt 10
],
 paths=[
 [0,1,2,3],     // 4 Verb. Außenform
 [4,5,6],     // 3 Verb. Innen 3-Eck
 [7,8,9,10]   // 4 Verb. Innen Rechteck
 ]
);


Der symetrische Pfeil entsteht

Mit zehn Ausgangspunkten wurde als Außenform ein symetrischer Pfeil erstellt.

// polygon_test_5.scad
polygon(
 points=[
[10,10],   // Punkt 0
[10,0],    // Punkt 1
[20,0],    // Punkt 2
[50,40],   // Punkt 3
[60,10],   // Punkt 4
[80,80],   // Punkt 5
[10,60],   // Punkt 6
[40,50],   // Punkt 7
[0,20],    // Punkt 8
[0,10]     // Punkt 9
],
 paths=[
 [0,1,2,3,4,5,6,7,8,9]   // 10 Verb. Au├čenform
 ]
);