Begriffe vorab
- Rezept: Kompakte, wiederverwendbare Lösung für ein typisches Problem.
- Hüllenkette: Mehrere hull()-Aufrufe zwischen aufeinanderfolgenden Objekten.
- Fillet: Rundung einer Innenkante.
- Lineares Muster: Wiederholung eines Objekts entlang einer Linie.
- Bounding Box: Umschließender Quader eines Objekts.
Rezept 1: Lineare und rechteckige Muster
Für Bohrungsreihen und Lüftungsschlitze genügt eine for-Schleife mit einer Formel für die Position. Mehrere Schleifenvariablen (for (x = …, y = …)) erzeugen Raster.
// Lüftungsgitter: Platte mit Schlitzen
difference() {
cube([50, 30, 3]);
for (i = [0 : 7])
translate([5 + i * 5, 5, -1]) cube([2, 20, 5]);
}
Rezept 2: Weiche Übergänge mit Hüllenketten
Die Doku beschreibt das Muster aus „Tips and Tricks“: Mit for (i = [1 : n]) erzeugst du hull()-Segmente zwischen aufeinanderfolgenden, verschobenen Objekten. Ergebnis sind glatte Bahnen und Rohre entlang beliebiger Punktfolgen.
// Rohr entlang einer Punktfolge: hull() zwischen aufeinanderfolgenden Kugeln
pfad = [[0,0,0], [20,0,10], [40,15,10], [60,15,30]];
for (i = [1 : len(pfad) - 1])
hull() {
translate(pfad[i - 1]) sphere(r = 3, $fn = 16);
translate(pfad[i]) sphere(r = 3, $fn = 16);
}
Rezept 3: Verrundungen
In 2D rundest du mit offset (Round und Fillet, siehe Lektion „Hüllen, Minkowski-Summe und Rundungen“). In 3D rundest du außen mit minkowski() und einer Kugel: minkowski() { children(); sphere(r); }. Innenrundungen entstehen entsprechend durch Abziehen eines vergrößerten Körpers.
Rezept 4: Mit Listen konstruieren
Punktlisten für polygon erzeugst du mit List Comprehensions, Bauteillisten mit Funktionen wie map-ähnlichen Ausdrücken: [ for (x = eingabe) f(x) ], Filter mit [ for (x = eingabe) if (bedingung(x)) x ]. Fehlende Funktionsargumente werden zu undef – Standardwerte schützen davor.
// Gestufter Turm aus einer Liste von Radien
radien = [14, 12, 10, 8, 6, 4];
module turm(liste, stufe = 6) {
for (i = [0 : len(liste) - 1])
translate([0, 0, i * stufe]) cylinder(h = stufe, r = liste[i], $fn = 48);
}
turm(radien);
// Nur Radien über 8 behalten
grosse = [ for (r = radien) if (r > 8) r ];
echo(grosse);
Rezept 5: Tap-Muster für echo
Ein praktisches Muster aus der Doku: Eine Funktion gibt einen Wert per echo aus und liefert ihn unverändert zurück. So kannst du Zwischenwerte mitten in einer Berechnung sichtbar machen, ohne die Berechnung umzubauen.
function tap(x, name = "wert") = let (u = echo(name, x)) x;
abstand = tap(norm([3, 4]), "abstand"); // gibt 5 aus und liefert 5
cylinder(h = abstand, r = 2, $fn = 24);
Das Muster eignet sich für Ketten: a = tap(f(tap(g(x)))) zeigt dir beide Zwischenstände.
Sammle eigene Rezepte als kleine Module in einer Bibliotheksdatei – jedes gelöste Problem spart dir beim nächsten Projekt Zeit.
Zum Selbermachen
- Baue das Lüftungsgitter so um, dass Anzahl und Abstand der Schlitze Parameter sind.
- Erzeuge eine Spirale aus Hüllenkette und Winkelfunktionen.
Verwandte Themen
OpenSCAD → Die übrigen Lektionen dieser Themenwelt; Informatik: Grundlagen → „Algorithmen und Berechenbarkeit“ für das Denken in Schritten.
Prüfstatus: Belegt (Stand 1. Oktober 2026): Die Rezepte stützen sich auf die in „Tips and Tricks“ beschriebenen Muster (Hüllenketten, Minkowski-Rundung, Offset-Rundung, List-Comprehension-Filter, Standardwerte gegen undef, echo-Tap) und die zugehörigen Sprachseiten. Alle Codebeispiele dieser Lektion wurden mit OpenSCAD 2026.09.18 (lokale Installation) ausgeführt und liefen ohne Fehler und Warnungen. Nicht einzeln belegt: die konkreten Beispiele (eigene Konstruktionen; das Tap-Muster ist in der Doku nur beschrieben, die hier gezeigte Umsetzung ist meine). Außerdem nicht einzeln belegt: die Erklärungen in eigenen Worten, die Beispiele als solche (konstruiert) und die Wertungen.
Quellen
- OpenSCAD User Manual – Tips and Tricks (en.wikibooks.org/wiki/OpenSCAD_User_Manual/Tips_and_Tricks)
- OpenSCAD User Manual – List Comprehensions (en.wikibooks.org/wiki/OpenSCAD_User_Manual/List_Comprehensions)
- OpenSCAD Cheat Sheet (openscad.org/cheatsheet, bezieht sich auf Version 2021.01)