diff --git a/cad/openscad/.gitkeep b/cad/openscad/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/cad/openscad/wortfolie.scad b/cad/openscad/wortfolie.scad new file mode 100644 index 0000000..1abb113 --- /dev/null +++ b/cad/openscad/wortfolie.scad @@ -0,0 +1,72 @@ +// Wortfolie der Wortuhr (11 Spalten x 10 Zeilen) für IKEA SANNAHED +// Die Buchstaben sind Aussparungen in der (schwarzen) Folie. +// Export als 2D: F6 rendern, dann Datei -> Export -> als DXF / SVG. + +// ---------- Einstellungen ---------- +// Rahmengröße (Bildfläche des SANNAHED): 25, 35 oder 50 (cm) +rahmen_cm = 25; // [25, 35, 50] + +spiel_mm = 1; // Luft pro Seite zwischen Folie und Rahmen-Innenmaß +rand_mm = 15; // freier Rand von der Folienkante bis zum Buchstabenfeld + // (Rahmenfalz verdeckt ca. 1 cm der Bildfläche) +buchstaben_anteil = 0.62; // Buchstabenhöhe relativ zum Zellenabstand +schrift = "Liberation Sans:style=Bold"; +minutenpunkte = true; // 4 Punkte in den Ecken für die Minuten +punkt_d_anteil = 0.18; // Punktdurchmesser relativ zum Zellenabstand +dicke_mm = 0; // 0 = flache 2D-Ausgabe (für Laser/DXF), >0 = 3D-Vorschau + +// ---------- Buchstabenraster ---------- +// Ein String pro Zeile, jeweils 11 Zeichen (Füllbuchstaben beliebig). +raster = [ + "ESKISTAFÜNF", + "ZWANZIGZEHN", + "VIERTELTVOR", + "HALBXKDNACH", + "NEUNZBGFÜNF", + "ZWEIKMBEINS", + "DREIPXTVIER", + "ACHTRLSECHS", + "SIEBENZWÖLF", + "UHRMELFZEHN" +]; + +// ---------- Berechnung ---------- +spalten = 11; +zeilen = len(raster); + +folie = rahmen_cm * 10 - 2 * spiel_mm; // Kantenlänge der Folie in mm +feld = folie - 2 * rand_mm; // Kantenlänge des Buchstabenfelds +raster_a = feld / spalten; // Zellenabstand (quadratische Zellen) +buch_h = raster_a * buchstaben_anteil; // Buchstabengröße + +// Mittelpunkt der Zelle (Spalte s, Zeile z), Ursprung = Folienmitte, y nach oben +function zx(s) = (s - (spalten - 1) / 2) * raster_a; +function zy(z) = ((zeilen - 1) / 2 - z) * raster_a; + +module buchstaben() { + for (z = [0 : zeilen - 1], s = [0 : spalten - 1]) + translate([zx(s), zy(z)]) + text(raster[z][s], size = buch_h, font = schrift, + halign = "center", valign = "center"); +} + +module punkte() { + if (minutenpunkte) + for (sx = [-1, 1], sy = [-1, 1]) + translate([sx * (folie / 2 - rand_mm / 2), sy * (folie / 2 - rand_mm / 2)]) + circle(d = raster_a * punkt_d_anteil, $fn = 32); +} + +module folie_2d() { + difference() { + square(folie, center = true); + buchstaben(); + punkte(); + } +} + +if (dicke_mm > 0) linear_extrude(dicke_mm) folie_2d(); +else folie_2d(); + +echo(str("Folie ", folie, " x ", folie, " mm, Zellenabstand ", raster_a, + " mm, Buchstabenhöhe ", buch_h, " mm"));