OpenSCAD Basics: Dein erstes 3D-Modell in 10 Minuten
Ich fange mit OpenSCAD immer bei Boxen an. Bevor’s losgeht, kurz zu den Grundlagen — für alle, die noch nie eine Zeile OpenSCAD-Code gesehen haben.
Was ist OpenSCAD?
Anders als in den meisten 3D-Programmen klickt man in OpenSCAD nicht mit der Maus ein Modell zusammen, man schreibt Code. Jede Form, jede Position, jede Bohrung ist eine Zeile Text. Klingt erstmal nach Umweg, hat aber einen großen Vorteil: Ändert man eine Zahl im Code, passt sich das ganze Modell automatisch an — ohne neu zu zeichnen.
OpenSCAD gibt’s kostenlos für Windows, Mac und Linux unter openscad.org. Nach dem Start: links der Code-Editor, rechts die 3D-Vorschau.
Grundformen: die Bausteine
OpenSCAD kennt ein paar einfache 3D-Grundformen. Die wichtigste zum Einstieg ist der Würfel/Quader, aufgerufen mit cube(). In den eckigen Klammern stehen Länge, Breite und Höhe in Millimetern:
cube([40, 30, 20]);
Zeile in den Editor schreiben, F5 drücken — rechts erscheint ein Quader, 40×30×20mm.
Formen verschieben: translate()
Jede Form wird zunächst an derselben Stelle gezeichnet (unten links, bei Koordinate 0,0,0). Um eine zweite Form woanders zu platzieren, braucht man translate(). Es verschiebt alles, was danach in geschweiften Klammern folgt, um die angegebenen X-, Y-, Z-Werte:
translate([10, 0, 0])
cube([5, 5, 5]);
Das verschiebt den kleinen Würfel 10mm entlang der X-Achse.
Formen verrechnen: union() und difference()
Um aus mehreren Formen ein Objekt zu machen, gibt es Verknüpfungen. union() fügt Formen zusammen (wie kleben). difference() zieht eine Form von einer anderen ab (wie ausstanzen) — die erste Form in den Klammern ist die Ausgangsform, jede weitere wird davon abgezogen.
Variablen: Zahlen einmal benennen
Statt Zahlen wie 40 direkt im Code zu verwenden, kann man ihnen am Dateianfang einen Namen geben:
laenge = 40;
Ab da kann man laenge überall im Code statt der Zahl 40 schreiben. Der Vorteil zeigt sich gleich.
Jetzt die Box: zwei Wege
Eine Box besteht aus einem Boden und vier Wänden. Der naheliegende Weg: jedes Teil einzeln bauen und mit union() zusammensetzen — Boden, Wand vorne, Wand hinten, Wand links, Wand rechts, jedes Mal mit eigenem translate(). Fünf Teile, fünf Stellen für Tippfehler, und bei jeder Maßänderung müssen alle fünf neu durchdacht werden.
Der elegantere Weg: einen vollen Würfel nehmen und einen kleineren davon abziehen, mit difference():
laenge = 40; breite = 30; hoehe = 20; wand = 2;
difference() {
cube([laenge, breite, hoehe]);
translate([wand, wand, wand])
cube([laenge - 2*wand, breite - 2*wand, hoehe]);
}
Die innere Box ist an allen Seiten um die Wandstärke kleiner und sitzt dank translate() mittig in der äußeren — ihre Höhe bleibt gleich, damit die Box oben offen bleibt. Zwei Blöcke statt fünf, und weil laenge, breite, hoehe und wand Variablen sind, reicht es, oben eine Zahl zu ändern, um eine komplett andere Box zu bekommen.
Das ist der eigentliche Lerneffekt: In OpenSCAD denkt man in Formen und ihrer Beziehung zueinander, nicht in Einzelteilen.
Export
F6 zum Rendern, dann Datei → Export → STL. Fertig für den Slicer.
Das sind die Grundlagen — Formen, Verschieben, Verknüpfen, Variablen. Wer tiefer rein will (weitere Formen, Schleifen, komplexere Parametrisierung wie bei meiner Herzbox mit drei Größen), dem leg ich unser OpenSCAD-eBook ans Herz, das folgt in Kürze.