-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsingle_key_holder.scad
79 lines (60 loc) · 1.92 KB
/
single_key_holder.scad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// outer square dimensions
os=18.3;
// TOP VIEW OF KEY BUTTON
// ==================================================
//
// *-----------------* --.
// \-----[ ]-----/ | <--- top right corner ("dips in")
// |---------------| |
// |---------------| |
// |---------------| > 13.60 mm
// |---------------| |
// |---------------| |
// /---------------\ |
// *-----------------* --.
//
// | |
// .--------v--------.
// 13.75 mm
under_lip_width=13.75;
under_lip_height=13.60;
under_lip_depth=1; // the clips "snap" onto this.
// ==================================================
//
//
// . . . -----------------._ ---\
// \ |
// | > 2.30 mm
// _| |
// | -----/
// |
// |
// |
// | <--- what we want to "fill in" on the upper layer
//
// \_. . ._______________/
// v
// 13.75 mm
lip_height=15.05;
lip_width=15.05;
wall_height=3;
dip_height=2.3;
difference() {
cube([ os, os, under_lip_depth ]);
translate([ (os - under_lip_width) / 2, (os - under_lip_height) / 2, 0 ]) {
cube([ under_lip_width, under_lip_height, under_lip_depth ]);
}
}
translate([ 0, 0, under_lip_depth ]) difference() {
cube([ os, os, wall_height ]);
translate([ (os - under_lip_width) / 2, (os - under_lip_height) / 2, 0 ]) {
cube([ under_lip_width, under_lip_height, wall_height ]);
};
translate([ (os - lip_width) / 2, (os - lip_height) / 2, 0 ]) {
cube([ lip_width, dip_height, wall_height ]);
};
translate([0, lip_height - dip_height, 0])
translate([ (os - lip_width) / 2, (os - lip_height) / 2, 0 ]) {
cube([ lip_width, dip_height, wall_height ]);
};
}