// 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", "HALBNTPNACH", "NEUNAPIFÜNF", "ZWEIRTCEINS", "DREIESPVIER", "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"));