difference: aushöhlen
Ein massiver Block hält keine Karten. Jetzt kommt die wichtigste Operation in OpenSCAD: difference zieht einen Körper von einem anderen ab — und macht aus dem Klotz eine Schale.
Vom Block zur Schale
difference() {
cube([85, 55, 40]); // 1. bleibt
translate([2, 2, 2]) // 2 mm Wand & Boden
cube([81, 51, 40]); // 2. wird abgezogen
}Außenbox minus Innenbox = offene Schale, 2 mm Wand
Die innere Box ist auf jeder Seite 2 mm kleiner und um [2, 2, 2] verschoben — so bleiben ringsum 2 mm Wand und 2 mm Boden. Wichtig: Der Innenkörper ist genauso hoch (sogar etwas höher), damit er oben durchstößt und die Box offen bleibt.
Warum eigentlich? — Warum difference das Herzstück ist
Fast jedes nützliche Teil hat Hohlräume, Löcher oder Aussparungen — Schraubenlöcher, Kabelkanäle, Griffmulden. Alle entstehen durch difference(): erst den vollen Körper bauen, dann das Negativ abziehen. Wer difference verstanden hat, kann den Großteil aller Druckteile modellieren.
Häufiger Denkfehler — Die zwei klassischen difference-Fehler
Deckel statt offene Box: Ist der Innenkörper genauso hoch und exakt auf gleicher Z-Höhe, bleibt oben eine dünne Haut stehen. Lass den Cutter oben 1–2 mm überstehen (oder fang ihn weiter unten an), damit er sauber durchschneidet. Reihenfolge: Das erste Kind ist der Körper, alles danach wird abgezogen — vertauscht man das, bleibt nichts übrig.
Tiefer rein — Die drei Boolean-Operationen
union() verschmilzt Körper zu einem. difference() zieht ab. intersection() behält nur die Schnittmenge — den Bereich, den alle Körper gemeinsam haben. Mit diesen drei Mengen-Operationen plus Grundkörpern lässt sich erstaunlich viel bauen — das ist die ganze Idee hinter CSG.