From f2252f2d46251127df640239408224f120e208ea Mon Sep 17 00:00:00 2001 From: Mirek Kratochvil Date: Thu, 28 Aug 2025 20:49:59 +0200 Subject: [PATCH] optimize some stuff --- LS47.scad | 60 ++++++++++++++++++++++++++++++++++++------------------- README.md | 2 +- 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]) + } + 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(x), font=font2, size=tilesize*.2, - halign="center", valign="center"); - color(c) - translate([tilesize/2, tilesize*.14, tileheight*.76]) - 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