i

Programmieren mit OpenSCAD

OpenSCAD als Programmiersprache

Wie du bisher gesehen hast, hat OpenSCAD ähnliche Strukturen wie eine Programmiersprache.

Aufgabe: Was kennst du schon?

Welche programmiersprachlichen Elemente gibt es auch in OpenSCAD? Schreibe in das jeweilige Kästchen die richtige Antwort.

Kontrollstruktur: Wiederholung

Die folgenden Darstellungen sind beweglich - probiere es aus!

Eine weitere Kontrollstruktur, die es in OpenSCAD gibt, taucht in der Aufgabe oben noch nicht auf, weil wir sie bisher noch nicht hatten: Wiederholungen

Einfache Wiederholungen

Mit for(variable=[startwert:schrittweite:endwert]) kann man eine Wiederholung erzeugen. Ist die Schrittweite 1, dann kann man diesen Wert auch weglassen. Durch folgenden Code werden somit nebeneinander 10 Zylinder erzeugt. Die Variable i wird auch als Laufvariable bezeichnet. Sie nimmt nacheinander alle Werte von 0 bis 10 an, so dass insgesamt 11 Zylinder erzeugt werden, die erst um 0 in x-Richtung, dann um 1 in x-Richtung, dann um 2 in x-Richtung, ... und schließlich um 10 in x-Richtung verschoben werden.

for(i=[0:10]){
    translate([i,0,0])cylinder(h=1, r=0.4);
}
Openscad

Durch folgenden Code wird von den 11 Zylindern nur jeder Dritte erzeugt - genauer: Die Zylinder, die verschoben wurden um 0, um 3, um 6 und um 9.

for(i=[0:3:10]){
    translate([i,0,0])cylinder(h=1, r=0.4);
}
Openscad

Die Laufvariable kann nicht nur für die Verschiebung sondern z.B. auch für Größenänderungen verwendet werden. Der folgende Code erzeugt größer werdende Zylinder auf dem Graphen einer Potenzfunktion 4. Grades.

for (i=[1:6]){
  translate([i*2.9,0.01*i^4,0]) cylinder(h=0.5*i, r=0.3*i);
}
Openscad

Verschachtelte Wiederholungen

Wenn du Wiederholungen verschachtelst, dann kannst du "Wiederholungen wiederholen". Dadurch entsteht in unserem Fall ein Quadrat aus lauter Zylindern. (Beachte, dass OpenSCAD beim Rendern jetzt ganz schön viel zu tun hat und das Rendern ziemlich lange benötigt...)

for(i=[0:10]){
  for (j=[0:10]){
    translate([i,j,0]) cylinder(h=1, r=0.4);
  }
}
Openscad

Kontrollstruktur: Bedingung

Eine weitere Kontrollstruktur, die du bereits aus der Programmierung kennst: Bedingungen. Sie können z.B. innerhalb einer Wiederholung sinnvoll sein.

Wenn du aus dem "Zylinder-Quadrat" oben die Diagonale entfernen möchtest, dann kannst du mit einem vorgeschalteten if(i!=j) dafür sorgen, dass nur die Zylinder dargestellt werden, bei denen nicht i=j gilt.

for(i=[0:10]){
  for (j=[0:10]){
    if(i!=j) translate([i,j,0]) cylinder(h=1, r=0.4);
  }
}
Openscad

Suche

14.4.3.4
schuljahr.inf-schule.de/aktuell/informatiksysteme/3d_druck/grundlage_cad/programmieren
schuljahr.inf-schule.de/aktuell/14.4.3.4
schuljahr.inf-schule.de/aktuell/@/page/11lqGIluWV0bVEjI

Rückmeldung geben