Hüllen, Minkowski-Summe und Rundungen

LektionOpenSCAD: 3D-Körperca. 3 Min. Lesezeit

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

  1. Baue eine Platte mit vier gerundeten Ecken per hull() und danach per offset() – vergleiche die Anzahl der Zeilen.
  2. 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)

Alles zu „OpenSCAD: 3D-Körper“