From 8ee13b92b4608cc371bf140eb64c4ef53d3ab181 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Sat, 17 Oct 2026 11:45:06 +0200 Subject: [PATCH] OpenSCAD-Vorlage fuer Rueckwand (SANNAHED 25/35/50 cm umschaltbar) Co-Authored-By: Claude Sonnet 5.5 --- cad/openscad/rueckwand.scad | 82 +++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 cad/openscad/rueckwand.scad diff --git a/cad/openscad/rueckwand.scad b/cad/openscad/rueckwand.scad new file mode 100644 index 0000000..7ad08e2 --- /dev/null +++ b/cad/openscad/rueckwand.scad @@ -0,0 +1,82 @@ +// Rückwand der Wortuhr (Trägerplatte für die LEDs) für IKEA SANNAHED +// Vorlage: cad/ALT/Rueckwand-mit-Gravuren.dxf (abgeschrägte Ecke oben links, +// LED-Markierungen als Kreise, Durchführungen für die Kabel, Richtungspfeil). +// Das LED-Raster ist identisch mit wortfolie.scad, damit LEDs und Buchstaben passen. +// +// Export als 2D: F6 rendern, dann Datei -> Export -> als DXF / SVG. +// Für den Laser: erst teil = "schneiden", dann teil = "gravur" exportieren. + +// ---------- Einstellungen ---------- +// Rahmengröße (Bildfläche des SANNAHED): 25, 35 oder 50 (cm) +rahmen_cm = 25; // [25, 35, 50] + +// Welcher Teil soll ausgegeben werden? +teil = "beide"; // ["beide" (Vorschau), "schneiden", "gravur"] + +spiel_mm = 1; // Luft pro Seite zwischen Platte und Rahmen-Innenmaß +rand_mm = 15; // wie in wortfolie.scad (muss gleich bleiben!) +fase_anteil = 0.087; // abgeschrägte Ecke oben links, relativ zur Plattenkante +led_marke_d = 5; // Ø der LED-Markierungen (Gravur) +schlitz_b = 10; // Kabeldurchführung zwischen den Zeilen (Breite) +schlitz_h = 3.5; // und Höhe +pfeil_l = 12; // Länge des Richtungspfeils (Gravur) +dicke_mm = 0; // 0 = flache 2D-Ausgabe (für Laser/DXF), >0 = 3D-Vorschau + +// ---------- Raster ---------- +spalten = 11; +zeilen = 10; + +platte = rahmen_cm * 10 - 2 * spiel_mm; +feld = platte - 2 * rand_mm; +raster_a = feld / spalten; +fase = platte * fase_anteil; + +// Zellenmitte (Spalte s, Zeile z), Ursprung = Plattenmitte, y nach oben +function zx(s) = (s - (spalten - 1) / 2) * raster_a; +function zy(z) = ((zeilen - 1) / 2 - z) * raster_a; + +// ---------- Teile ---------- +module umriss() { + h = platte / 2; + polygon([[-h + fase, h], [h, h], [h, -h], [-h, -h], [-h, h - fase]]); +} + +// Kabeldurchführungen: die LED-Reihen laufen im Zickzack, +// Zeile 0 von links nach rechts, Zeile 1 zurück usw. +module schlitze() { + for (z = [0 : zeilen - 2]) + translate([zx(z % 2 == 0 ? spalten - 1 : 0), (zy(z) + zy(z + 1)) / 2]) + square([schlitz_b, schlitz_h], center = true); +} + +module led_marken() { + for (z = [0 : zeilen - 1], s = [0 : spalten - 1]) + translate([zx(s), zy(z)]) circle(d = led_marke_d, $fn = 32); +} + +// Pfeil in Laufrichtung der ersten Zeile (nach rechts), über Zeile 0 +module pfeil() { + translate([zx(0), zy(0) + raster_a * 0.75]) { + translate([0, -pfeil_l * 0.07]) square([pfeil_l * 0.6, pfeil_l * 0.14]); + translate([pfeil_l * 0.6, 0]) + polygon([[0, -pfeil_l * 0.18], [pfeil_l * 0.4, 0], [0, pfeil_l * 0.18]]); + } +} + +module schnitt() { difference() { umriss(); schlitze(); } } +module gravur() { led_marken(); pfeil(); } + +// "beide" ist nur eine Vorschau: die Gravur erscheint als Aussparung in der Platte. +// Zum Lasern teil = "schneiden" und teil = "gravur" getrennt exportieren. +module ausgabe_2d() { + if (teil == "schneiden") schnitt(); + else if (teil == "gravur") gravur(); + else difference() { schnitt(); gravur(); } +} + +if (dicke_mm > 0) { + linear_extrude(dicke_mm) schnitt(); + if (teil != "schneiden") translate([0, 0, dicke_mm]) linear_extrude(0.2) gravur(); +} else ausgabe_2d(); + +echo(str("Platte ", platte, " x ", platte, " mm, Zellenabstand ", raster_a, " mm"));