chiark / gitweb /
bike-lipo-box: ready for first test print with support
[reprap-play.git] / keyring-kay.scad
1 // -*- C -*-
2
3 letterheight = 25;
4 linewidth = 3.5;
5 letterthick = 2.5;
6
7 basethick = 2.5;
8
9 xborder = 5;
10 yborder = 5;
11
12 kdiag = 1;
13 kprop = 0.50;
14
15 diaglinewidth = linewidth * sqrt(1 + kdiag*kdiag);
16
17 ringholerad = 2.5;
18 ringedgewidth = 3;
19
20 module kay_leg (transamount, llen, mir) {
21   translate([0,transamount,0])
22     mirror([0,mir,0])
23     translate([0,-0.1,0])
24     multmatrix([[1,kdiag,0,0],
25                 [0,1,0,0],
26                 [0,0,1,0],
27                 [0,0,0,1]])
28     cube([diaglinewidth, llen + 0.1, letterthick]);
29 }  
30
31 module kay () {
32   translate([0.1,0,0])
33     cube([linewidth, letterheight, letterthick]);
34   kay_leg(letterheight*kprop, letterheight*(1-kprop), 0);
35   kay_leg(letterheight*kprop, letterheight*kprop, 1);
36 }
37
38 totalw = letterheight*kprop + diaglinewidth + xborder*2;
39 totalh = letterheight + yborder*2;
40 basez = -(basethick-0.1);
41
42 module main () {
43   kay();
44   translate([-xborder, -yborder, basez])
45     cube([totalw, totalh, basethick]);
46 }
47
48 module ring (rad, extra) {
49   translate([totalw/2 - xborder, totalh - yborder, basez-extra])
50     cylinder(r=rad, h=basethick + extra*2, $fn=30);
51 }
52
53 difference(){
54   union() {
55     main();
56     ring(ringholerad + ringedgewidth/2, 0);
57   }
58   ring(ringholerad, 1);
59 }