OpenSCAD für Anfänger · Teil 9TutorialEinsteiger

OpenSCAD

OpenSCAD für Anfänger – Teil 9: Richtig parametrisch konstruieren

Leite Maße und Positionen aus Hauptparametern ab und konstruiere Modelle, die sich bei Änderungen automatisch anpassen.

Veröffentlicht am · Aktualisiert am

3 Minuten Lesezeit · 1 PDF-Download

Ein parametrisches OpenSCAD-Modell leitet abhängige Maße und Positionen aus wenigen Hauptparametern ab. In diesem Tutorial konstruierst du eine Montageplatte, deren Bohrungen auch nach einer Größenänderung den vorgesehenen Randabstand behalten.

Voraussetzungen

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

Parametrisches Konstruieren ist eine der größten Stärken von OpenSCAD.

Dabei reicht es allerdings nicht aus, feste Zahlen lediglich durch Variablennamen zu ersetzen.

Ein gutes parametrisches Modell bildet logische Beziehungen zwischen seinen Abmessungen ab.

Lernziel:
Nach dieser Lektion kannst du Hauptparameter von berechneten Größen unterscheiden und Modelle so aufbauen, dass abhängige Geometrien automatisch an der richtigen Position bleiben.


Nur Variablen sind noch nicht parametrisch genug

Beispiel:

breite = 80;

cube([breite, 40, 6]);

translate([10, 20, -1])
    cylinder(h=8, d=5);

translate([70, 20, -1])
    cylinder(h=8, d=5);

Die Breite ist zwar variabel.

Die zweite Bohrung bleibt jedoch bei X = 70 mm.

Wird die Platte breiter, stimmt ihre Position nicht mehr.


Parametrische Maße in OpenSCAD voneinander ableiten

Besser:

breite = 80;
rand = 10;

links_x = rand;
rechts_x = breite - rand;

Dadurch bleibt der Abstand zur Außenkante immer gleich.


Parameter und Berechnungen trennen

Eine sinnvolle Struktur lautet:

// Parameter

breite = 80;
tiefe = 40;
hoehe = 50;
wand = 6;

bohrung_d = 5;
rand = 10;

// Berechnungen

bohrung_y = tiefe / 2;

bohrung_links_x = rand;
bohrung_rechts_x = breite - rand;

„Magische Zahlen“ vermeiden

Eine Angabe wie:

translate([37, 18, 6])

funktioniert zwar, ihre Bedeutung ist aber nicht offensichtlich.

Besser:

translate([
    breite / 2,
    tiefe / 2,
    wand
])

Damit ist sofort nachvollziehbar, wie die Position entsteht.


Parametrische Modelle testen

Ein Modell sollte mit deutlich veränderten Parametern getestet werden.

Beispielsweise:

breite = 150;
tiefe = 80;
wand = 10;

Bleibt die Konstruktion korrekt, sind die Abhängigkeiten wahrscheinlich sinnvoll aufgebaut.


Praxisprojekt: parametrische Montageplatte

Wir erstellen eine Platte mit vier Befestigungsbohrungen.

Parameter

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

bohrung_d = 5;

rand_x = 10;
rand_y = 10;

ueberstand = 1;

Berechnete Positionen

x1 = rand_x;
x2 = breite - rand_x;

y1 = rand_y;
y2 = tiefe - rand_y;

Dadurch ergeben sich vier Kombinationen:

x1 / y1
x2 / y1
x1 / y2
x2 / y2

Vollständiges Modell

difference() {

    cube([
        breite,
        tiefe,
        dicke
    ]);

    translate([x1, y1, -ueberstand])
        cylinder(
            h=dicke + 2 * ueberstand,
            d=bohrung_d,
            $fn=64
        );

    translate([x2, y1, -ueberstand])
        cylinder(
            h=dicke + 2 * ueberstand,
            d=bohrung_d,
            $fn=64
        );

    translate([x1, y2, -ueberstand])
        cylinder(
            h=dicke + 2 * ueberstand,
            d=bohrung_d,
            $fn=64
        );

    translate([x2, y2, -ueberstand])
        cylinder(
            h=dicke + 2 * ueberstand,
            d=bohrung_d,
            $fn=64
        );
}

Warum schreiben wir die vier Bohrungen noch einzeln?

Die vier fast identischen Codebereiche wirken bereits unnötig lang.

Das ist Absicht.

Im nächsten Teil lernen wir mit for() eine Möglichkeit kennen, wiederkehrende Geometrien automatisch zu erzeugen.

Dann wird dieser Code deutlich kürzer.


Mitmach-Aufgabe

Erstelle folgende Montageplatte:

Parameter Wert
Breite 120 mm
Tiefe 70 mm
Dicke 5 mm
Bohrungsdurchmesser 6 mm
Rand X 12 mm
Rand Y 12 mm

Musterlösung

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

bohrung_d = 6;

rand_x = 12;
rand_y = 12;

ueberstand = 1;

x1 = rand_x;
x2 = breite - rand_x;

y1 = rand_y;
y2 = tiefe - rand_y;

difference() {

    cube([breite, tiefe, dicke]);

    translate([x1, y1, -ueberstand])
        cylinder(
            h=dicke + 2 * ueberstand,
            d=bohrung_d,
            $fn=64
        );

    translate([x2, y1, -ueberstand])
        cylinder(
            h=dicke + 2 * ueberstand,
            d=bohrung_d,
            $fn=64
        );

    translate([x1, y2, -ueberstand])
        cylinder(
            h=dicke + 2 * ueberstand,
            d=bohrung_d,
            $fn=64
        );

    translate([x2, y2, -ueberstand])
        cylinder(
            h=dicke + 2 * ueberstand,
            d=bohrung_d,
            $fn=64
        );
}

Was haben wir gelernt?

Ein robustes parametrisches Modell:

  • besitzt wenige zentrale Eingabeparameter

  • berechnet abhängige Maße automatisch

  • vermeidet unnötige feste Zahlen

  • bleibt auch bei größeren Maßänderungen konsistent

  • trennt Parameter, Berechnungen und Geometrie übersichtlich voneinander

Damit endet Kapitel 2 – Richtig konstruieren.


Häufige Fragen

Was macht ein OpenSCAD-Modell parametrisch?

Die Geometrie wird durch Parameter und ihre Beziehungen beschrieben. Beispielsweise ergibt sich die rechte Bohrungsposition aus breite - rand, statt als feste Zahl im Code zu stehen.

Wie prüfe ich ein parametrisches Modell?

Ändere Hauptparameter wie Breite, Tiefe und Randabstand einzeln und kontrolliere die Vorschau. Prüfe dabei, ob Bohrungen innerhalb des Bauteils bleiben und genügend Material zu den Außenkanten vorhanden ist.

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