Voraussetzungen
Du brauchst OpenSCAD und die Grundlagen aus Teil 1 des Kurses.
Im ersten Teil unseres OpenSCAD-Einsteigerkurses haben wir bereits unser erstes 3D-Modell erstellt und gelernt, wie OpenSCAD grundsätzlich arbeitet.
Unsere einfache Grundplatte bestand nur aus einer einzigen Zeile:
cube([80, 50, 5]);
Für sehr einfache Modelle reicht das bereits aus.
Sobald Modelle aber größer oder häufiger verändert werden sollen, ist es sinnvoll, feste Zahlen durch Variablen zu ersetzen.
In dieser Lektion beschäftigen wir uns deshalb mit der grundlegenden Syntax von OpenSCAD, Kommentaren, Variablen und einfachen Berechnungen.
Lernziel: Nach dieser Lektion kannst du OpenSCAD-Code sauber strukturieren, Kommentare verwenden, eigene Variablen definieren und einfache parametrische Abhängigkeiten aufbauen.
Aufbau eines OpenSCAD-Befehls
Ein einfacher OpenSCAD-Befehl kann beispielsweise so aussehen:
cube([80, 50, 5]);
Dieser Befehl besteht aus mehreren Elementen:
| Bestandteil | Bedeutung |
|---|---|
cube |
Name des Befehls |
( ) |
enthält die Parameter des Befehls |
[ ] |
enthält eine Liste mehrerer Werte |
80, 50, 5 |
Werte für X, Y und Z |
; |
beendet den Befehl |
Die drei Werte entsprechen der Größe des Quaders in X-, Y- und Z-Richtung.
Das Semikolon
Viele Anweisungen in OpenSCAD enden mit einem Semikolon.
Beispiel:
cube([80, 50, 5]);
Wird das Semikolon vergessen, kann OpenSCAD den Code unter Umständen nicht korrekt interpretieren.
Beispiel mit Fehler:
cube([80, 50, 5])
Beim Aktualisieren der Vorschau zeigt OpenSCAD eine Fehlermeldung an.
Typische Syntaxfehler sind:
-
fehlendes Semikolon
-
fehlende Klammer
-
falsche Klammer
-
fehlendes Komma
-
Schreibfehler im Befehlsnamen
Gerade als Anfänger gehören solche Fehler ganz normal zum Arbeiten mit OpenSCAD.
Kommentare verwenden
Kommentare helfen dabei, den eigenen Code verständlich zu halten.
Sie werden von OpenSCAD ignoriert und beeinflussen das Modell nicht.
Einzeilige Kommentare
Ein einzeiliger Kommentar beginnt mit zwei Schrägstrichen:
// Meine erste Grundplatte
cube([80, 50, 5]);
Alles hinter // wird in dieser Zeile als Kommentar behandelt.
Kommentare eignen sich beispielsweise für:
-
kurze Erklärungen
-
Hinweise zu Parametern
-
Versionsinformationen
-
Notizen
-
Gliederungen innerhalb des Codes
Mehrzeilige Kommentare
Für längere Kommentare können wir folgende Schreibweise verwenden:
/*
Grundplatte für die Übung
Breite: 80 mm
Tiefe: 50 mm
Höhe: 5 mm
*/
cube([80, 50, 5]);
Alles zwischen /* und */ wird als Kommentar behandelt.
Warum Variablen?
Unser bisheriges Modell verwendet direkt feste Zahlen:
cube([80, 50, 5]);
Das funktioniert, ist aber bei komplexeren Modellen unpraktisch.
Stattdessen können wir Werte in Variablen speichern:
breite = 80;
tiefe = 50;
hoehe = 5;
cube([breite, tiefe, hoehe]);
Das Ergebnis ist identisch.
Der Unterschied liegt im Aufbau des Modells.
Statt direkt mit festen Zahlen zu arbeiten, verwenden wir jetzt benannte Parameter.
Dadurch lässt sich der Code wesentlich leichter lesen und verändern.
Parameter ändern
Möchten wir eine andere Variante der Grundplatte erzeugen, müssen wir jetzt nur noch die Variablen ändern.
Zum Beispiel:
breite = 100;
tiefe = 60;
hoehe = 4;
cube([breite, tiefe, hoehe]);
Nach dem Aktualisieren der Vorschau wird automatisch die neue Variante erzeugt.
Genau darin liegt eine der großen Stärken von OpenSCAD.
Die Geometrie bleibt grundsätzlich gleich, während sich ihre Parameter verändern lassen.
Sinnvolle Variablennamen
Variablen sollten möglichst aussagekräftige Namen besitzen.
Technisch möglich wäre beispielsweise:
b = 80;
t = 50;
h = 5;
Bei kleinen Beispielen kann das ausreichend sein.
Lesbarer ist häufig:
breite = 80;
tiefe = 50;
hoehe = 5;
Gerade bei größeren Projekten ist sofort erkennbar, welche Bedeutung die Werte haben.
Ein guter Variablenname sollte möglichst direkt beschreiben, wofür der Wert verwendet wird.
Beispiele:
breite = 80;
wandstaerke = 3;
lochdurchmesser = 5;
rand = 8;
Welche Einheit verwendet OpenSCAD?
OpenSCAD schreibt grundsätzlich keine feste Einheit vor.
Für Modelle, die später für den 3D-Druck verwendet werden, wird üblicherweise in Millimetern gearbeitet.
Wenn wir schreiben:
breite = 80;
behandeln wir diesen Wert daher normalerweise als:
80 mm
Die Einheit selbst wird nicht in den Code geschrieben.
Nicht so:
breite = 80mm;
sondern:
breite = 80;
Mit Variablen rechnen
Variablen können nicht nur feste Zahlen enthalten.
Sie können auch aus anderen Variablen berechnet werden.
Beispiel:
breite = 80;
halbe_breite = breite / 2;
Der Wert von halbe_breite beträgt automatisch 40.
Ändern wir später:
breite = 100;
wird halbe_breite automatisch zu 50.
Diese Abhängigkeiten sind die Grundlage für parametrisches Konstruieren.
Grundrechenarten
OpenSCAD unterstützt natürlich die grundlegenden mathematischen Operationen.
| Operation | Zeichen | Beispiel |
|---|---|---|
| Addition | + |
breite + 10 |
| Subtraktion | - |
breite - 10 |
| Multiplikation | * |
breite * 2 |
| Division | / |
breite / 2 |
Beispiele:
doppelte_breite = breite * 2;
halbe_breite = breite / 2;
gesamtbreite = breite + 20;
innenbreite = breite - 10;
Abhängige Maße
Besonders interessant wird es, wenn Maße voneinander abhängen.
Nehmen wir an, unsere Grundplatte besitzt einen Rand von 5 mm:
breite = 80;
tiefe = 50;
rand = 5;
Die Innenbreite können wir dann automatisch berechnen:
innenbreite = breite - 2 * rand;
Warum 2 * rand?
Weil sich sowohl auf der linken als auch auf der rechten Seite ein Rand befindet.
Für die Tiefe gilt entsprechend:
innentiefe = tiefe - 2 * rand;
Der komplette Bereich sieht damit so aus:
breite = 80;
tiefe = 50;
hoehe = 5;
rand = 5;
innenbreite = breite - 2 * rand;
innentiefe = tiefe - 2 * rand;
cube([breite, tiefe, hoehe]);
Noch verwenden wir innenbreite und innentiefe nicht direkt für eine sichtbare Geometrie.
Später können wir solche Werte beispielsweise für:
-
Ausschnitte
-
Bohrungen
-
Gehäuseinnenräume
-
Lochabstände
-
Wandstärken
verwenden.
Code sinnvoll strukturieren
Bei größeren Modellen lohnt es sich, den Code bereits von Anfang an übersichtlich aufzubauen.
Eine mögliche Struktur ist:
// -------------------------
// Parameter
// -------------------------
breite = 80;
tiefe = 50;
hoehe = 5;
rand = 5;
// -------------------------
// Berechnungen
// -------------------------
innenbreite = breite - 2 * rand;
innentiefe = tiefe - 2 * rand;
// -------------------------
// Modell
// -------------------------
cube([breite, tiefe, hoehe]);
Eine solche Struktur ist keine feste Vorgabe.
Sie hilft aber enorm dabei, größere Modelle später noch nachvollziehen und verändern zu können.
Parametrisch statt feste Werte
Vergleichen wir beide Varianten noch einmal.
Feste Werte
cube([80, 50, 5]);
Parametrische Variante
breite = 80;
tiefe = 50;
hoehe = 5;
cube([breite, tiefe, hoehe]);
Beide erzeugen zunächst dasselbe Modell.
Die zweite Variante lässt sich aber wesentlich einfacher anpassen und erweitern.
Damit haben wir den ersten wichtigen Schritt vom einfachen OpenSCAD-Modell hin zu einer echten parametrischen Konstruktion gemacht.
Mitmach-Aufgabe
Erstelle eine parametrische Grundplatte mit folgenden Werten:
| Parameter | Wert |
|---|---|
| Breite | 100 mm |
| Tiefe | 60 mm |
| Höhe | 4 mm |
| Rand | 8 mm |
Berechne zusätzlich:
-
Innenbreite
-
Innentiefe
-
halbe Breite
Versuche die Aufgabe zunächst selbst zu lösen.
Musterlösung
Eine mögliche Lösung sieht so aus:
// -------------------------
// Parameter
// -------------------------
breite = 100;
tiefe = 60;
hoehe = 4;
rand = 8;
// -------------------------
// Berechnungen
// -------------------------
innenbreite = breite - 2 * rand;
innentiefe = tiefe - 2 * rand;
halbe_breite = breite / 2;
// -------------------------
// Modell
// -------------------------
cube([breite, tiefe, hoehe]);
Ändere anschließend beispielsweise:
breite = 120;
Die Werte für innenbreite und halbe_breite passen sich automatisch an.
Was haben wir gelernt?
Nach dieser Lektion kennst du bereits weitere wichtige Grundlagen von OpenSCAD:
-
Befehle besitzen eine feste Syntax.
-
Viele Anweisungen enden mit einem Semikolon.
-
//erzeugt einen einzeiligen Kommentar. -
/* ... */erzeugt einen mehrzeiligen Kommentar. -
Werte können in Variablen gespeichert werden.
-
Variablen können sprechende Namen erhalten.
-
Werte können aus anderen Variablen berechnet werden.
-
Modelle lassen sich dadurch parametrisch aufbauen.
Mit diesem Wissen können wir unsere Modelle deutlich sauberer und flexibler gestalten.
Im nächsten Teil
Im dritten Teil beschäftigen wir uns mit den wichtigsten 3D-Grundkörpern in OpenSCAD.
Dazu gehören:
cube();
cylinder();
sphere();
Wir sehen uns an, welche Parameter diese Körper besitzen und wie wir ihre Größe beeinflussen können.
Außerdem beschäftigen wir uns erstmals genauer mit runden Geometrien und der Frage, warum ein Kreis in einem 3D-Modell eigentlich aus vielen kleinen geraden Segmenten besteht.
Am Ende bauen wir daraus ein kleines, druckbares Bauteil.
Passendes Cheatsheet
Im Cheatsheet „Grundbefehle und Syntax“ findest du die Befehle dieser Lektion kompakt zum Nachschlagen. Du kannst das Cheatsheet auch direkt als PDF herunterladen.
