]> www.fi.muni.cz Git - things.git/blob - kaze-firewall.scad
switch holder.scad
[things.git] / kaze-firewall.scad
1 eps = 0.01;
2 infty = 100;
3
4 body_w = 32; // outer parameter, incl. foam
5 body_h = 32;
6 foam_w = 3;
7
8 screw_d1 = 19;
9 screw_d2 = 16;
10 screw_hole = 3.5;
11 base_wall = 1.5;
12
13 center_hole_d = 9;
14
15 insert_h = 10;
16
17 wall = 1;
18
19 // base plate
20 difference() {
21         translate([-body_w/2, -body_h/2, 0])
22                 cube([body_w, body_h, base_wall]);
23         // center hole
24         translate([0, 0, -eps])
25                 cylinder(r = center_hole_d/2, h = base_wall + 2*eps);
26         // screw_d2 screw holes
27         for (y = [-1, 1]) scale([1, y, 1])
28                 translate([0, screw_d2/2, -eps]) {
29                         cylinder(r = screw_hole/2, h = base_wall + 2*eps, $fn=6);
30                         translate([0, 0, base_wall/2])
31                                 cylinder(r1 = screw_hole/2,
32                                         r2 = screw_hole/2 + base_wall/2,
33                                         h = base_wall/2 + 2*eps, $fn = 6);
34                 }
35         // screw_d1 screw holes
36         for (x = [-1, 1]) scale([x, 1, 1])
37                 translate([screw_d1/2, 0, -eps]) {
38                         cylinder(r = screw_hole/2, h = base_wall + 2*eps, $fn=6);
39                         translate([0, 0, base_wall/2])
40                                 cylinder(r1 = screw_hole/2,
41                                         r2 = screw_hole/2 + base_wall/2,
42                                         h = base_wall/2 + 2*eps, $fn = 6);
43                 }
44         // cable hole
45         translate([-body_w/2+foam_w+wall, -body_h/2+foam_w+wall, -eps])
46                 cube([8, 6, base_wall + 2*eps]);
47 }
48
49 motor_angle_right = 3;
50 motor_angle_down  = 3;
51
52 base_angle = 10;
53 angle_r = base_angle + motor_angle_right;
54 angle_l = base_angle - motor_angle_right;
55 angle_t = base_angle - motor_angle_down;
56 angle_d = base_angle + motor_angle_down;
57
58 // +x axis is to the right
59 // +y axis is to the top
60 module cone(l, r, t, d, h) {
61         intersection() {
62         // top
63         translate([0, t, 0])
64         rotate([-angle_t, 0, 0]) translate([-infty/2, -infty, -infty/2]) cube(infty);
65         // bottom
66         translate([0, -d, 0])
67         rotate([angle_d, 0, 0]) translate([-infty/2, 0, -infty/2]) cube(infty);
68         // right
69         translate([r, 0, 0])
70         rotate([0, angle_r, 0]) translate([-infty, -infty/2, -infty/2]) cube(infty);
71         // left
72         translate([-l, 0, 0])
73         rotate([0, -angle_l, 0]) translate([0, -infty/2, -infty/2]) cube(infty);
74         // front
75         translate([-infty/2, -infty/2, 0]) cube(infty);
76         // rear
77         translate([-infty/2, -infty/2, h-infty]) cube(infty);
78         }
79 }
80
81 difference() {
82         cone(body_w/2-foam_w,
83                 body_w/2-foam_w,
84                 body_h/2-foam_w,
85                 body_h/2-foam_w,
86                 insert_h);
87         translate([0, 0, -eps])
88                 cone(body_w/2 - foam_w - wall/cos(angle_l),
89                         body_w/2 - foam_w - wall/cos(angle_r),
90                         body_h/2 - foam_w - wall/cos(angle_t),
91                         body_h/2 - foam_w - wall/cos(angle_d),
92                         insert_h + 2*eps);
93 }
94