Begriffe vorab
- hull: Konvexe Hülle: kleinste konvexe Form, die alle Kinder umschließt.
- minkowski: Minkowski-Summe: Eine Form wird an der Oberfläche einer anderen entlanggeführt.
- offset: Verbreitert oder verkleinert eine 2D-Form.
- fill: Entfernt Löcher aus 2D-Formen.
- Fillet: Rundung einer Innenkante.
hull()
hull() berechnet die konvexe Hülle seiner Kinder – wie ein Gummiband, das um alle Teile gespannt wird. Die Doku nennt eine Besonderheit: Die Hülle von 2D-Objekten nutzt deren Projektionen (Schatten) auf die xy-Ebene und liefert ein Ergebnis in dieser Ebene. Effizienztipp: Wenn möglich, erst 2D-Formen hüllen und dann extrudieren, statt 3D-Körper zu hüllen. Ein klassisches Rezept sind abgerundete Quader: vier Zylinder in den Ecken, darum hull().
minkowski()
minkowski() bildet die Minkowski-Summe der Kinder; für die Addition wird der Ursprung des zweiten Objekts verwendet. Praktisch: Eine Kugel mit Radius r an einem Körper entlangzuführen, rundet alle Außenkanten und -ecken ab (das Rezept minkowski() { children(); sphere(r); } steht auf der Seite „Tips and Tricks“). Die Doku warnt: Bei hohen $fn-Werten können Rechenzeit und Speicher stark wachsen, weil jedes Kind mit allen Teilen der anderen kombiniert wird. Zusammengesetzte Eingaben kann OpenSCAD getrennt behandeln – fasse sie vorher mit union() zusammen.
offset() (2D)
offset(r = …) verbreitert eine 2D-Form mit gerundeten Ecken, offset(delta = …) mit spitzen Ecken; mit chamfer = true werden Ecken bei delta abgeschrägt. Negative Werte verkleinern. Zwei Kombinationen aus der Doku: Fillet (Innenecken runden): offset(r = -3) offset(delta = +3); Round (Außenecken runden): offset(r = +3) offset(delta = -3).
fill()
fill() entfernt Löcher aus Polygonen, ohne den Umriss zu ändern. Bei konvexen Polygonen entspricht das Ergebnis hull().
// 1) Abgerundete Platte per hull() aus vier Zylindern
module runde_platte(b, t, h, r) {
hull()
for (x = [r, b - r], y = [r, t - r])
translate([x, y, 0]) cylinder(h = h, r = r, $fn = 48);
}
runde_platte(40, 25, 4, 5);
// 2) Rundungen per offset(): Rechteck mit gerundeten Außenecken, dann extrudiert
translate([0, 40, 0])
linear_extrude(4)
offset(r = 4, $fn = 48) offset(delta = -4) square([40, 25]);
// 3) Abgerundeter Würfel per minkowski()
translate([60, 0, 0])
minkowski() {
cube([14, 14, 14]);
sphere(r = 3, $fn = 24);
}
Das hull() bekommt mehrere Zylinder aus einer for-Schleife; die Schleife erzeugt die vier Eckpositionen, hull() verbindet sie zu einer Platte mit runden Ecken.
Rundungen sind keine Eigenschaft einzelner Kanten, sondern entstehen durch Operationen auf der ganzen Form – plane sie früh ein.
Zum Selbermachen
- Baue eine Platte mit vier gerundeten Ecken per hull() und danach per offset() – vergleiche die Anzahl der Zeilen.
- Probiere minkowski() mit unterschiedlichen $fn-Werten und beobachte die Rechenzeit.
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): Beschreibung und Warnungen zu hull, minkowski (Ursprung des zweiten Objekts, Rechenaufwand, union-Hinweis), fill sowie offset (r, delta, chamfer, Fillet- und Round-Rezepte) wurden gegen die Seiten „Transformations“ und „Tips and Tricks“ geprüft. Alle Codebeispiele dieser Lektion wurden mit OpenSCAD 2026.09.18 (lokale Installation) ausgeführt und liefen ohne Fehler und Warnungen. Nicht einzeln belegt: die Erklärungen in eigenen Worten, die Beispiele als solche (konstruiert) und die Wertungen.
Quellen
- OpenSCAD User Manual – Transformations (en.wikibooks.org/wiki/OpenSCAD_User_Manual/Transformations)
- OpenSCAD User Manual – Tips and Tricks (en.wikibooks.org/wiki/OpenSCAD_User_Manual/Tips_and_Tricks)
- OpenSCAD Cheat Sheet (openscad.org/cheatsheet, bezieht sich auf Version 2021.01)