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