OpenSCAD für Anfänger · Teil 10TutorialEinsteiger

OpenSCAD

OpenSCAD für Anfänger – Teil 10: Wiederholungen mit for()

Erzeuge wiederkehrende Geometrien mit for(), verwende Wertebereiche und Listen und automatisiere Bohrungsmuster.

Veröffentlicht am · Aktualisiert am

3 Minuten Lesezeit · 1 PDF-Download

Mit einer for-Schleife wiederholst du in OpenSCAD Geometrien an mehreren Positionen. Du lernst Wertebereiche und Listen kennen und erstellst daraus Lochreihen sowie ein zweidimensionales Bohrungsraster.

Voraussetzungen

Du brauchst OpenSCAD und die Grundlagen aus Teil 9 des Kurses.

Kapitel 3 – OpenSCAD automatisieren

Mit diesem Teil beginnt das dritte Kapitel unseres OpenSCAD-Kurses.

Bisher haben wir Geometrien hauptsächlich einzeln beschrieben.

Bei wiederkehrenden Elementen führt das schnell zu doppeltem Code.

Mit:

for()

kann OpenSCAD eine Anweisung automatisch mehrfach ausführen.

Lernziel:
Nach dieser Lektion kannst du mit for() einfache Reihen und Raster erzeugen und wiederkehrende Geometrien deutlich kompakter beschreiben.


Die erste for-Schleife in OpenSCAD

for (x = [0, 20, 40, 60])
    translate([x, 0, 0])
        cube([10, 10, 10]);

OpenSCAD erzeugt vier Würfel.

Die Variable x nimmt nacheinander folgende Werte an:

0
20
40
60

Bereiche verwenden

Die gleiche Folge kann kompakter geschrieben werden:

for (x = [0:20:60])
    translate([x, 0, 0])
        cube([10, 10, 10]);

Die Syntax lautet:

[start : schrittweite : ende]

Beispiel:

[0:10:50]

ergibt:

0, 10, 20, 30, 40, 50

Lochreihe erzeugen

difference() {

    cube([100, 40, 5]);

    for (x = [10:20:90])
        translate([x, 20, -1])
            cylinder(
                h=7,
                d=5,
                $fn=64
            );
}

Mit nur einem Zylinderbefehl entstehen mehrere Bohrungen.


Werte parametrisch definieren

breite = 100;
tiefe = 40;
dicke = 5;

bohrung_d = 5;

start_x = 10;
abstand = 20;
ende_x = 90;

Dann:

for (x = [start_x:abstand:ende_x])

Damit lässt sich beispielsweise der Abstand aller Bohrungen über einen einzigen Parameter verändern.


Verschachtelte Schleifen

Besonders leistungsfähig wird for(), wenn mehrere Schleifen kombiniert werden.

for (x = [10, 90])
    for (y = [10, 50])
        translate([x, y, -1])
            cylinder(
                h=7,
                d=5,
                $fn=64
            );

Die Kombinationen sind:

10 / 10
10 / 50
90 / 10
90 / 50

Dadurch entstehen vier Bohrungen.


Montageplatte aus Teil 9 verbessern

In Teil 9 haben wir vier Bohrungen einzeln erzeugt.

Jetzt definieren wir ihre Positionen als Listen:

x_pos = [
    rand_x,
    breite - rand_x
];

y_pos = [
    rand_y,
    tiefe - rand_y
];

Dann:

for (x = x_pos)
    for (y = y_pos)
        translate([x, y, -ueberstand])
            cylinder(
                h=dicke + 2 * ueberstand,
                d=bohrung_d,
                $fn=64
            );

Damit ersetzt ein einziger Zylinder vier einzelne Codeblöcke.


Vollständige Montageplatte

breite = 120;
tiefe = 70;
dicke = 5;

bohrung_d = 6;

rand_x = 12;
rand_y = 12;

ueberstand = 1;

x_pos = [
    rand_x,
    breite - rand_x
];

y_pos = [
    rand_y,
    tiefe - rand_y
];

difference() {

    cube([
        breite,
        tiefe,
        dicke
    ]);

    for (x = x_pos)
        for (y = y_pos)
            translate([
                x,
                y,
                -ueberstand
            ])
                cylinder(
                    h=dicke + 2 * ueberstand,
                    d=bohrung_d,
                    $fn=64
                );
}

Lochraster erzeugen

Mit zwei Bereichen können ganze Raster entstehen:

for (x = [10:20:90])
    for (y = [10:20:50])
        translate([x, y, 0])
            cylinder(
                h=5,
                d=4,
                $fn=32
            );

Damit lassen sich beispielsweise erzeugen:

  • Lochplatten

  • Lüftungsgitter

  • Montageraster

  • Noppen

  • Stifte

  • wiederkehrende Strukturen


Mitmach-Aufgabe

Erstelle eine Lochplatte mit:

Parameter Wert
Breite 100 mm
Tiefe 60 mm
Dicke 5 mm
Bohrungsdurchmesser 5 mm
X-Positionen 10 bis 90 mm in 20-mm-Schritten
Y-Positionen 15 mm und 45 mm

Musterlösung

breite = 100;
tiefe = 60;
dicke = 5;

bohrung_d = 5;
ueberstand = 1;

x_pos = [10:20:90];
y_pos = [15, 45];

difference() {

    cube([
        breite,
        tiefe,
        dicke
    ]);

    for (x = x_pos)
        for (y = y_pos)
            translate([
                x,
                y,
                -ueberstand
            ])
                cylinder(
                    h=dicke + 2 * ueberstand,
                    d=bohrung_d,
                    $fn=64
                );
}

Was haben wir gelernt?

Mit for() können wir:

  • Code automatisch wiederholen

  • feste Listen durchlaufen

  • Bereiche mit Start, Schrittweite und Ende erzeugen

  • Lochreihen erstellen

  • verschachtelte Schleifen verwenden

  • zweidimensionale Raster erzeugen

  • parametrische Modelle deutlich kompakter schreiben

Damit beginnt OpenSCAD, nicht mehr nur wie ein textbasiertes CAD-System zu wirken, sondern auch wie ein kleines Werkzeug zur automatisierten Konstruktion.


Im nächsten Teil

Im nächsten Teil lernen wir:

if()

Damit können wir Entscheidungen in unser Modell einbauen.

Beispielsweise:

  • Bohrung ein- oder ausschalten

  • Beschriftung optional erzeugen

  • zwischen verschiedenen Varianten wählen

  • zusätzliche Verstärkungen nur bei Bedarf anzeigen


Häufige Fragen

Wie definiere ich den Abstand einer Lochreihe?

Verwende einen Wertebereich wie [0 : 20 : 100]: Der mittlere Wert ist die Schrittweite. Hier entstehen Positionen von 0 bis 100 in Abständen von 20 Modelleinheiten.

Wie erzeuge ich mit for ein zweidimensionales Lochraster?

Verschachtele eine Schleife für die X-Positionen mit einer Schleife für die Y-Positionen. Mit translate([x, y, z]) positionierst du den Schneidkörper an jeder Kombination der beiden Koordinaten.

Passendes Cheatsheet

Im Cheatsheet „Schleifen, Bedingungen und Module“ findest du ergänzende Grundlagen zum Nachschlagen. Du kannst das Cheatsheet auch direkt als PDF herunterladen.

Weiterlernen