]> www.fi.muni.cz Git - things.git/blob - quasar-firewall.scad
quasar firewall another take
[things.git] / quasar-firewall.scad
1 eps = 0.01;
2 infty = 100;
3
4 base_d = 20;
5
6 wall = 1.5;
7 base_wall = 2.5;
8
9 center_d = 8 + 0.3;
10
11 foam_horiz = 6 + 0.3;
12 foam_vert = 6 + 0.6;
13 support_h = 50;
14
15 top_d = foam_horiz + 8;
16 side_w = 40;
17
18 screw_dist = 31.5;
19 screw_d = 3;
20
21 // half of the diamond diagonals
22 diamond_x = 12;
23 diamond_y = 32;
24 diamond_wall_h = 4;
25 diamond_x1 = 9;
26 diamond_y1 = 27;
27 diamond_x2 = 7;
28 diamond_y2 = 21;
29
30 module body() {
31         // base circle
32         cylinder(r = base_d/2, h = base_wall);
33         // diamond front
34         scale([1, diamond_y/diamond_x, 1])
35                 cylinder(r = diamond_x, h = base_wall, $fn = 4); 
36         difference() {
37                 scale([1, diamond_y1/diamond_x1, 1])
38                         cylinder(r = diamond_x1, h = base_wall + diamond_wall_h, $fn = 4); 
39                 translate([0, 0, base_wall])
40                 scale([1, diamond_y2/diamond_x2, 1])
41                         cylinder(r = diamond_x2, h = diamond_wall_h+eps, $fn = 4); 
42         }
43         // wing front
44         translate([-side_w/2, -foam_horiz/2-wall, 0])
45                 cube([side_w, foam_horiz+2*wall, base_wall]);
46         for (x = [-1, 1]) scale([x, 1, 1])
47                 hull() {
48                         translate([base_d/2, -foam_horiz/2-wall, 0])
49                                 cube([side_w/2-base_d/2, foam_horiz+2*wall, eps]);
50                         translate([base_d*.9, -foam_horiz/2-wall, 20])
51                                 cube([side_w/2-base_d*.55, foam_horiz+2*wall, eps]);
52                 }
53 }
54
55 difference() {
56         body();
57         // screw holes
58         for (angle = [0:90:360])
59                 rotate([0, 0, angle])
60                 translate([screw_dist/2, 0, -eps])
61                 cylinder(r = screw_d/2, h = base_wall + 2*eps);
62         // tube hole
63         translate([0, 0, -eps])
64                 cylinder(r = center_d/2, h = base_wall + 2*eps);
65         // horizontal foam
66         difference() {
67                 translate([-infty/2, -foam_horiz/2, base_wall])
68                         cube([infty, foam_horiz, support_h + eps]);
69                 translate([-diamond_x1, 0, base_wall])
70                         cube([2*diamond_x1, foam_horiz/2, support_h + eps]);
71         }
72         // cable hole
73         translate([6, 6, -eps])
74                 rotate([0, 0, -45])
75                 scale([1, 1/2, 1])
76                 cylinder(r = 4, h = support_h + base_wall + 2*eps);
77         // vertical foam
78         // translate([-foam_vert/2, -side_w/2-eps, base_wall])
79         //      cube([foam_vert, side_w + 2*eps, support_h + eps]);
80 }
81