Mit dem Befehl "for ..." gibt es einige Möglichkeiten eine Schleife zu gestalten.
Die wahrscheinlich Beste einer Schleife ist die, mit einer Variablen arbeiten zu können.
Im folgenden Beispiel wird jeder Wert in einem festgelegten Bereich oder Vektor ausgewertet.
Zu Beachten ist, dass die Werte durch Doppelpunkte und nicht durch Kommas getrennt werden.
Für die Bestimmung eines Bereiches können als Parameter eingegeben werden:
Geben wir folgendes ein und drücken F5 :
ergibt in der Konsole:
ECHO: 2
ECHO: 3
ECHO: 4
ECHO: 5
ECHO: 6
Da die Schrittweite optional ist, wurde sie weggelassen. Sie beträgt dadurch automatisch immer "1".
Nun vertauschen wir versuchsweise die Werte :
erscheint in der Konsole zwar die richtige Ausgabe, jedoch mit einer Fehlermeldung.
Der Anfangs-Wert sollte immer kleiner als der Ende-Wert sein!
Gehen wir jetzt zur Erstellung einiger Objekte und geben folgendes ein:
Nach dem Start erscheint dann:
Hier werden Würfel mit den Größen von 2 bis 6 erzeugt. Zusätzlich verschieben sich die Startpunkte zur Erstellung.
Die einzelnen Schritte sind:
Die 1.Schleife erzeugt den Wert a=2
Dies ergibt 1. translate([2,2,0]) und cube(2);
und legt fest: x=2 und y=2 und einen Würfel von 2 Kantenlänge
2. a=3 translate([3,3,0]) und cube(3);
3. a=4 translate([4,4,0]) und cube(4);
4. a=5 translate([5,5,0]) und cube(5);
5. a=6 translate([6,6,0]) und cube(6);
In allen fünf Schritten der Schleife wurde x, y und die Größe von "2" bis "6" jeweils um eins erhöht.
Starten wir mit einer zusätzlichen Eingabe der Schrittweite von "2"
Nach dem Start erscheint dann:
Nun werden Würfel mit den Größen von 3 bis 12 mit einer Schrittweite von "2" erzeugt. Auch die Startpunkte zur Erstellung verschieben sich wieder.
Die einzelnen Schritte sind:
Die 1.Schleife erzeugt den Wert a=3
Dies ergibt:
1. a=3translate([3,3,0]) und cube(3);
und legt fest: x=3 und y=3 und einen Würfel von 3 Kantenlänge
2. a=5 translate([5,5,0]) und cube(5);
3. a=7 translate([7,7,0]) und cube(7);
4. a=9 translate([9,9,0]) und cube(9);
5. a=11 translate([11,11,0]) und cube(11);
Da der nächste Wert "a" = 13 entsprechen würde und somit größer als die ende-Vorgabe "12" ist, wird er nicht mehr ausgeführt und die Schleife dadurch beendet.
Bisher haben wir den Schritt-Wert innerhalb einer Schleife für die Werte X und Y verwendet. Die Schleifen können ebenso verschachtelt werden. Somit kann in einer Schleife der X-Wert und in der anderen Schleife der Y-wert erhöht werden.
Über "a" und "b" sprechen wir jetzt die Werte von X und Y im Befehl "translate" an.
Die Innere Schleife (in blau) erzeugt beim ersten Durchlauf auf der Y-Achse 7 Kugeln.
Diese 7er Reihe wird durch die äußere Schleife (in rot) sieben mal wiederholt.
Beide Schleifen in diesem Beispiel laufen bis zum nächsten Semikolon (;). Da kein weiteres folgt, verwenden beide Schleifen das Gleiche!
Sollten jedoch mehrere Befehle mit Semikolon am Ende zusammen die Schleife durchlaufen, so können diese über zusätzlich geschweifte Klammern zusammen gefasst werden. Alles zwischen diesen geschweiften Klammen wird dann durch die for-Schleife wiederholt.
Wie wäre es mit einem neuen Zifferblatt für die alte Uhr?
for(z=[0:30:360]) beschreibt mit Anfangswert = 0 und Endwert = 360 einen kompletten Kreis um die Z-Achse. Der Schritt-Wert "30" entspricht der 30°-Einteilung des Zifferblattes.
Jetzt werden zwei verschiedene Objekte mit unterschiedlichen "translate"-Befehlen angesteuert.
Es sind demnach 2x ein Semikolon vorhanden. Leider klappt dies nicht ganz!
Daher werden die betreffenden Objekte mit den Befehlen über die geschweiften Klammern { } zusammengefasst. Und schon funktioniert es reibungslos!
Was aus den 49 Lotto-Kugeln geworden ist ...
Bitte nicht reinbeissen!
Nur mittels den zwei geschweiften Klammern { } ist dies möglich, mehrere Objekte zusammen zufassen.
Mit Variablen lässt es sich gut arbeiten. Wie sieht es aber mit Text aus?
Folgender Script gibt die Lösung:
Nachdem der Script gestartet ist, erscheint in der Konsole die rechte Ausgabe:
Also auch Text gelten als Variable, allerdings anders "verpackt".
In der Original-Anleitung von OpenSCAD fand ich dieses wunderschöne Beispiel. Etwas habe ich es jedoch noch abgeändert, damit es in allen sechs Richtungen funktioniert:
Nun geht's ab in alle sechs Richtungen:
Original unter wikibooks .... OpenSCAD zu finden
Auch in der verkürzten Schreibweise kommt es zum gleichen Ergebnis
Nun geht's ab in alle sechs Richtungen:
Original unter wikibooks .... OpenSCAD zu finden
Ebenso fand ich in der Original-Anleitung von OpenSCAD noch ein wunderbares Beispiel. Musste auch dieses noch etwas abändern ...
Über "cube" werden sechs gleichgroße Treppenstufen erzeugt, deren Ansatzpunkt durch die drei Koordinaten bestimmt werden.Alle drei Koordinatenwerte werden schrittweise über "i" an "translate" übergeben. Bitte die geschweiften Klammern beachten!
Original unter wikibooks .... OpenSCAD zu finden