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