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.

difference() behält das erste Kind und schneidet alle folgenden davon ab. Hier: äußere Box minus eine etwas kleinere innere Box = Wände + Boden bleiben stehen.

Vom Block zur Schale

SCADschale.scad
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.