OpenSCAD-Vorlage fuer Wortfolie (SANNAHED 25/35/50 cm umschaltbar)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
eb0c0f5325
commit
71d865caf7
2 files changed
+72
No files matched your search
Whitespace-only changes.
@@ -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"));
|
||||
Reference in new issue
Block a user