aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMirek Kratochvil <exa.exa@gmail.com>2025-08-28 20:49:59 +0200
committerMirek Kratochvil <exa.exa@gmail.com>2025-08-28 20:49:59 +0200
commitf2252f2d46251127df640239408224f120e208ea (patch)
tree9eadbf5e6fe17dc3fbd1ff9afeacb895e0dbf8b9
parenta5b52ec8ebf57b6b7579e3ea32a2ba1c373c8bc7 (diff)
downloadls47-f2252f2d46251127df640239408224f120e208ea.tar.gz
ls47-f2252f2d46251127df640239408224f120e208ea.tar.bz2
optimize some stuff
-rw-r--r--LS47.scad60
-rw-r--r--README.md2
2 files changed, 40 insertions, 22 deletions
diff --git a/LS47.scad b/LS47.scad
index cc54d1a..c97d45b 100644
--- a/LS47.scad
+++ b/LS47.scad
@@ -18,33 +18,51 @@ off=tilesize*1.1;
//height 1/8"
tileheight=tilesize/8;
fontheight=tileheight*0.5;
+corner=tileheight*2;
//accomodate for Ё
if (alphabet=="ru") {
fontheight=fontheight*0.9;
}
+module arrow(n) {
+ if (n>=1) for(i=[0:n-1]) translate([i-(n-1)/2,0,0]) polygon([[0.45,0],[0,0.7],[-0.45,0]]);
+}
+
//this produces one tile
module tilec(letter, x, y, c) {
+ xx = ((x+3)%7)-3;
+ yy = ((y+3)%7)-3;
+ dx = sign(xx);
+ dy = sign(yy);
translate([x*off,(6-y)*off,0]) {
difference() {
- color(c)
- cube([tilesize,tilesize,tileheight]);
- color(c)
- translate([tilesize*.4,tilesize*.4,tileheight*.51])
+ color(c) union() {
+ cube([tilesize,tilesize-corner,tileheight]);
+ translate([corner, tilesize-corner,0])
+ cube([tilesize-2*corner, corner, tileheight]);
+ translate([corner, tilesize-corner, 0])
+ cylinder(tileheight, corner, corner);
+ translate([tilesize-corner, tilesize-corner, 0])
+ cylinder(tileheight, corner, corner);
+ };
+ color("white") {
+ translate([tilesize*(0.5-dx*0.13),tilesize*(0.275-dy*0.13),tileheight*.51])
linear_extrude (height=tileheight/2)
text(letter, font=font, size=tilesize*.45,
halign="center", valign="baseline");
- color(c)
- translate([tilesize*.83, tilesize/2, tileheight*.76])
- linear_extrude(height=tileheight/4)
- text(str(x), font=font2, size=tilesize*.2,
- halign="center", valign="center");
- color(c)
- translate([tilesize/2, tilesize*.14, tileheight*.76])
+ }
+ color("white")
+ translate([tilesize*(0.5+dx*0.3), tilesize*0.5, tileheight*.76])
+ scale(4*[dx,1,1])
+ rotate([0,0,-90])
+ linear_extrude(height=tileheight/4)
+ arrow(abs(xx));
+ color("white")
+ translate([tilesize*0.5, tilesize*(0.5+dy*0.3), tileheight*.76])
+ scale(4*[1,dy,1])
linear_extrude(height=tileheight/4)
- text(str(y), font=font2, size=tilesize*.2,
- halign="center", valign="center");
+ arrow(abs(yy));
}
}
}
@@ -63,34 +81,34 @@ module tiles(letters) {
if (alphabet=="en") {
// latin variant of tiles
tiles(
- ["_", "A", "B", "C", "D", "E", "F",
+ ["□", "A", "B", "C", "D", "E", "F",
"G", "H", "I", "J", "K", "L", "M",
"N", "O", "P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z", ".",
+ "/", ":", "?", "!", "'", "(", ")",
"0", "1", "2", "3", "4", "5", "6",
- "7", "8", "9", ",", "-", "+", "*",
- "/", ":", "?", "!", "'", "(", ")"]
+ "7", "8", "9", ",", "-", "+", "*"]
);
} else if (alphabet=="ru") {
// variant of tiles thanks to Stas Bushuev
// (see https://github.com/Xitsa/ls47 for other versions)
tiles(
- ["_", "А", "Б", "В", "Г", "Д", "Е",
+ ["□", "А", "Б", "В", "Г", "Д", "Е",
"Ё", "Ж", "З", "И", "Й", "К", "Л",
"М", "Н", "О", "П", "Р", "С", "Т",
"У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ",
- "Ъ", "Ы", "Ь", "Э", "Ю", "Я", "/",
+ "Ъ", "Ы", "Ь", "Э", "Ю", "Я", ".",
"0", "1", "2", "3", "4", "5", "6",
- "7", "8", "9", ".", ",", "?", "!"]
+ "7", "8", "9", "/", ",", "?", "!"]
);
}
//the token
translate([-off/2,off/2,0]) {
color("red") difference() {
- cylinder(h=tileheight, d=tilesize*.7);
+ cylinder(h=tileheight, d=tilesize);
translate([0,0,-.1])
- cylinder(h=tileheight*1.2, d=tilesize*.7-tileheight);
+ cylinder(h=tileheight*1.2, d=tilesize-2*tileheight);
}
}
diff --git a/README.md b/README.md
index ccf8596..2f2c8d3 100644
--- a/README.md
+++ b/README.md
@@ -36,9 +36,9 @@ _ a b c d e f
g h i j k l m
n o p q r s t
u v w x y z .
+/ : ? ! ' ( )
0 1 2 3 4 5 6
7 8 9 , - + *
-/ : ? ! ' ( )
```
Zoomed in, it's very practical to have extra position information written on