Die Greifmulde: Karten greifen

Die Box hält jetzt Karten — aber sie wieder herauszubekommen ist fummelig, weil die Wände sie verdecken. Die Lösung zeigt das Schöne am Code-Modell: Wir fügen kein neues Konzept hinzu, sondern ziehen einfach eine weitere Form ab.

Jedes Feature einer Box ist entweder „Material dazu" (union) oder „Material weg" (difference). Die Greifmulde ist Material weg — ein halber Zylinder, aus der Vorderwand geschnitten.

Eine neue Form: der Zylinder

Bisher hatten wir nur Quader. Für die runde Mulde brauchen wir einen cylinder:

SCADzylinder.scad
cylinder(h = 40, r = 12, $fn = 64);
// h = Höhe, r = Radius
// $fn = wie viele Segmente → wie rund

Ein Zylinder steht standardmäßig aufrecht (entlang Z). Für die Mulde legen wir ihn mit rotate quer und positionieren ihn mittig in der Vorderwand.

Die Mulde in die Box schneiden

Wir hängen den Zylinder einfach als weiteres Kind in das difference() der Box — alles, was er überlappt, verschwindet:

SCADbox-mit-mulde.scad
karte_b = 85; karte_t = 55;
wand = 2; spiel = 0.5; hoehe = 40;
mulde_r = 12;     // Tiefe der Mulde
mulde_b = 45;     // Breite der Mulde

aussen_b = karte_b + 2 * wand + spiel;
aussen_t = karte_t + 2 * wand + spiel;

difference() {
  cube([aussen_b, aussen_t, hoehe]);          // Außenkörper

  translate([wand, wand, wand])               // Hohlraum
    cube([karte_b + spiel, karte_t + spiel, hoehe]);

  translate([aussen_b / 2, wand, hoehe])      // Greifmulde
    rotate([0, 90, 0])
      cylinder(h = mulde_b, r = mulde_r, center = true, $fn = 64);
}
mulde_rDaumen

Querschnitt: die Mulde in der Vorderwand gibt den Daumen frei

Beachte: Die Mulde nutzt dieselben Variablen wie der Rest. aussen_b / 2 hält sie automatisch mittig — egal, wie breit die Box wird. Genau das ist die Stärke des parametrischen Modells: ein Maß ändern, und alles bleibt stimmig.

Warum eigentlich?Warum aussen_b / 2 statt einer festen Zahl?

Schriebe man hier 42.5, wäre die Mulde nur für genau diese Boxbreite mittig. Sobald du karte_b auf ein anderes Format änderst, säße sie schief. Mit aussen_b / 2 ist die Position eine Beziehung zur Box — sie rechnet sich bei jeder Änderung neu. Das ist der Unterschied zwischen „einmal hingemalt" und „echtes Modell".

Häufiger DenkfehlerKlassische Fehler bei der Mulde

Zylinder steht hochkant: Ohne rotate zeigt er nach oben und schneidet ein rundes Loch nach unten statt einer Mulde — die rotate([0, 90, 0]) legt ihn quer. $fn vergessen: dann ist die Mulde grobkantig statt rund (Standard sind nur wenige Segmente). Mulde zu tief: ist mulde_r größer als der Wandabstand zum Boden, schneidest du die Box durch.

Tiefer reinAndere Mulden-Formen

Ein einzelner Zylinder gibt eine halbrunde Rinne mit geraden Enden. Willst du eine weiche, an beiden Enden gerundete Mulde, nimmst du hull() um zwei Kugeln (sphere) — dann spannt OpenSCAD eine glatte Hülle dazwischen. Eine Kugel statt Zylinder gibt eine runde Daumen-Delle. Dieselbe Idee, anderes Negativ.