]> www.fi.muni.cz Git - things.git/blob - kaze-battery-hatch.scad
switch holder.scad
[things.git] / kaze-battery-hatch.scad
1 eps = 0.01;
2 infty = 200;
3
4 // Ita ma 45-35 delka 70 + zaklopka
5 //body_w1 = 50;
6 //body_w2 = 40;
7 //hole_l = 70;
8 // Kaze
9 body_w1 = 38;
10 body_w2 = 43;
11 hole_l = 65;
12
13 magnet_d = 10;
14 top_w = 2.5;
15 body_l = hole_l + magnet_d + 2*top_w;
16 body_h = 7;
17 wall = 0.6;
18
19 module tri_tube(w, l, h)
20 {
21         // bottom
22         hull() {
23                 for (y = [-1, 1]) scale ([1, y, 1]) {
24                         translate([0, w/2-wall, 0]) cube(wall);
25                         translate([l-wall, w/2-wall, 0]) cube(wall);
26                 }
27         }
28         // rear
29         hull() {
30                 for (y = [-1, 1]) scale ([1, y, 1]) {
31                         translate([0, w/2-wall, 0]) cube(wall);
32                         translate([0, w/2-wall, h-wall]) cube(wall);
33                 }
34         }
35         // angled front
36         hull() {
37                 for (y = [-1, 1]) scale ([1, y, 1]) {
38                         translate([0, w/2-wall, h-wall]) cube(wall);
39                         translate([l-wall, w/2-wall, 0]) cube(wall);
40                 }
41         }
42 }
43
44 module beams() {
45         // front
46         tri_tube(2*body_w2, top_w, body_h);
47         // rear
48         translate([body_l, 0, 0])
49                 rotate([0, 0, 180])
50                 tri_tube(2*body_w1, top_w, body_h);
51         // sides
52         for (y = [-1, 1]) scale([1, y, 1])
53                 translate([0, body_w2/2, 0])
54                 rotate([0, 0, -90 - atan((body_w2-body_w1)/(2*body_l))])
55                 translate([0, body_l/2, 0])
56                 tri_tube(2*body_l, top_w, body_h);
57 }
58
59 module clip(w, l, magnet_r) {
60         difference() {
61                 translate([0, -w/2, 0])
62                         cube([l, w, wall]);
63                 translate([l/2, 0, -eps])
64                         cylinder(r = magnet_r, h = wall + 2*eps);
65         }
66 }
67
68 intersection() {
69         union() {
70                 beams();
71                 clip(2*body_w2, magnet_d + 2*top_w, magnet_d/2);
72         }
73         hull() {
74                 for (y = [-1, 1]) scale ([1, y, 1]) {
75                         translate([0, body_w2/2-eps, 0])
76                                 cube([eps, eps, body_h]);
77                         translate([body_l-eps, body_w1/2-eps, 0])
78                                 cube([eps, eps, body_h]);
79                 }
80         }
81 }
82