Begriffe vorab
- CSG: Constructive Solid Geometry: Körper entstehen durch Verknüpfung einfacher Körper.
- union: Vereinigung aller Kinder.
- difference: Das erste Kind minus alle weiteren.
- intersection: Nur der gemeinsame Bereich aller Kinder.
- Epsilon: Winzige Überlappung (z. B. 0,01), die Flächen-Zusammenfall verhindert.
Die drei Operationen
- union() bildet die Summe aller Kinder (logisches Oder). Die Vereinigung ist implizit, wenn man sie nicht hinschreibt – aber zwingend nötig, zum Beispiel in
difference(), um mehrere erste Kinder zu einem zu gruppieren. - difference() zieht das zweite und alle weiteren Kinder vom ersten ab („und nicht“).
- intersection() behält nur den Bereich, den alle Kinder gemeinsam haben.
Die wichtigste Regel: keine deckungsgleichen Flächen
Die Doku sagt es klar: Bei Vereinigungen dürfen die äußeren, zu verschmelzenden Flächen nicht deckungsgleich sein. Die Lösung ist eine kleine Überlappung (Epsilon, typisch 0,01). Ohne sie entstehen flackernde Flächen in der Vorschau (Z-Fighting) und im Export unsaubere, nicht geschlossene Oberflächen. Beim Abziehen gilt dasselbe: Der abziehende Körper soll deutlich über die Fläche hinausragen, aus der er etwas herausnimmt.
// Platte mit durchgehendem Loch und Senkung
difference() {
cube([40, 40, 10]);
// Loch: 1 mm länger in beide Richtungen (Epsilon-Prinzip)
translate([20, 20, -1])
cylinder(h = 12, r = 5, $fn = 64);
// Senkung von oben
translate([20, 20, 6])
cylinder(h = 5, r1 = 5, r2 = 9, $fn = 64);
}
// Schnitt: Kugel mit Würfel
translate([60, 0, 0])
intersection() {
sphere(r = 14, $fn = 48);
cube(20, center = true);
}
render()
render(convexity) erzwingt die vollständige Berechnung eines Teilbaums, auch in der Vorschau. Die Doku warnt, dass das die Vorschau sehr langsam machen kann. Der Parameter convexity gibt an, wie viele Flächen ein Strahl höchstens durchdringt – 10 funktioniert laut Doku in den meisten Fällen.
Denkweise
Zerlege jedes Bauteil in „Material hinzufügen“ (union) und „Material wegnehmen“ (difference). Die Reihenfolge bei difference ist wichtig: Das erste Kind ist immer das, wovon abgezogen wird.
Faustregel: Schneidkörper immer länger machen als das Bauteil und um mindestens 0,01 überlappen lassen.
Zum Selbermachen
- Bohre vier Löcher in eine Platte und prüfe in F5, dass an den Lochrändern nichts flackert.
- Vereinige zwei Würfel, die sich genau an einer Fläche berühren, und dann mit 0,01 Überlappung – vergleiche das Ergebnis.
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): Definitionen von union (implizit), difference und intersection, die Regel gegen deckungsgleiche Flächen mit Epsilon 0,01 sowie render() inklusive Convexity-Wert und Geschwindigkeitswarnung wurden gegen die Seiten „CSG Modelling“ und „FAQ“ 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 – CSG Modelling (en.wikibooks.org/wiki/OpenSCAD_User_Manual/CSG_Modelling)
- OpenSCAD User Manual – FAQ (en.wikibooks.org/wiki/OpenSCAD_User_Manual/FAQ)
- OpenSCAD Cheat Sheet (openscad.org/cheatsheet, bezieht sich auf Version 2021.01)