]> www.fi.muni.cz Git - things.git/blob - quasar-firewall.scad
Quasar parts
[things.git] / quasar-firewall.scad
1 eps = 0.01;
2 infty = 100;
3
4 base_d = 28;
5 screw_d1 = 19;
6 screw_d2 = 16;
7 screw_hole = 3.5;
8 base_wall = 1.5;
9 wall = base_wall;
10
11 center_d = 8 + 0.3;
12
13 cable_slot_w = 5;
14 cable_slot_h = 3;
15
16 foam_horiz = 6 + 0.6;
17 foam_vert = 6 + 0.6;
18 support_h = 50;
19
20 top_d = foam_horiz + 8;
21 side_w = 40;
22
23 module body() {
24         // base
25         cylinder(r = base_d/2, h = base_wall);
26         intersection() {
27                 cylinder(r1 = side_w/2, r2 = top_d/2,
28                          h = support_h + base_wall);
29                 union() {
30                         translate([-side_w/2, -foam_horiz/2-wall, 0])
31                                 cube([side_w, foam_horiz + 2*wall, support_h]);
32                         translate([-foam_vert/2-wall, -side_w/2, 0])
33                                 cube([foam_vert + 2*wall, side_w, support_h]);
34                 }
35         }
36 }
37
38 module screw_hole() {
39         translate([0, 0, -eps])
40                 cylinder(r = screw_hole/2, h = base_wall + 2*eps, $fn = 6);
41         translate([0, 0, base_wall/2])
42                 cylinder(r1 = screw_hole/2,
43                         r2 = screw_hole/2 + base_wall/2,
44                         h = base_wall/2+eps, $fn = 6);
45         translate([0, 0, base_wall-eps])
46                 cylinder(r = screw_hole/2 + base_wall/2, h = 2*base_wall + eps, $fn = 6);
47 }
48
49 difference() {
50         body();
51         // screw holes
52         rotate([0, 0, 45]) {
53         for (x = [-1, 1]) translate([x*screw_d1/2, 0, 0])
54                 screw_hole();
55         for (y = [-1, 1]) translate([0, y*screw_d2/2, 0])
56                 screw_hole();
57         }
58         // tube hole
59         translate([0, 0, -eps])
60                 cylinder(r = center_d/2, h = base_wall + 2*eps);
61         // cable slot
62         /*
63         rotate([0, 0, 45])
64         translate([-cable_slot_w/2, base_d/2-cable_slot_h, -eps])
65                 cube([cable_slot_w, 2*cable_slot_h, infty]);
66         */
67         // horizontal foam
68         translate([-side_w/2-eps, -foam_horiz/2, base_wall])
69                 cube([side_w + 2*eps, foam_horiz, support_h + eps]);
70         // vertical foam
71         translate([-foam_vert/2, -side_w/2-eps, base_wall])
72                 cube([foam_vert, side_w + 2*eps, support_h + eps]);
73 }
74