]> www.fi.muni.cz Git - things.git/commitdiff
quasar firewall another take
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Wed, 3 Feb 2021 18:12:08 +0000 (19:12 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Wed, 3 Feb 2021 18:12:08 +0000 (19:12 +0100)
quasar-firewall.scad

index 8df1d77a15e4134ae5c7d8db02268cc7ada7ab75..3f95374a5f6dd92d6f051e6400ac2ca253a4fb2b 100644 (file)
@@ -1,74 +1,81 @@
 eps = 0.01;
 infty = 100;
 
-base_d = 28;
-screw_d1 = 19;
-screw_d2 = 16;
-screw_hole = 3.5;
-base_wall = 1.5;
-wall = base_wall;
+base_d = 20;
 
-center_d = 8 + 0.3;
+wall = 1.5;
+base_wall = 2.5;
 
-cable_slot_w = 5;
-cable_slot_h = 3;
+center_d = 8 + 0.3;
 
-foam_horiz = 6 + 0.6;
+foam_horiz = 6 + 0.3;
 foam_vert = 6 + 0.6;
 support_h = 50;
 
 top_d = foam_horiz + 8;
 side_w = 40;
 
+screw_dist = 31.5;
+screw_d = 3;
+
+// half of the diamond diagonals
+diamond_x = 12;
+diamond_y = 32;
+diamond_wall_h = 4;
+diamond_x1 = 9;
+diamond_y1 = 27;
+diamond_x2 = 7;
+diamond_y2 = 21;
+
 module body() {
-       // base
+       // base circle
        cylinder(r = base_d/2, h = base_wall);
-       intersection() {
-               cylinder(r1 = side_w/2, r2 = top_d/2,
-                        h = support_h + base_wall);
-               union() {
-                       translate([-side_w/2, -foam_horiz/2-wall, 0])
-                               cube([side_w, foam_horiz + 2*wall, support_h]);
-                       translate([-foam_vert/2-wall, -side_w/2, 0])
-                               cube([foam_vert + 2*wall, side_w, support_h]);
-               }
+       // diamond front
+       scale([1, diamond_y/diamond_x, 1])
+               cylinder(r = diamond_x, h = base_wall, $fn = 4); 
+       difference() {
+               scale([1, diamond_y1/diamond_x1, 1])
+                       cylinder(r = diamond_x1, h = base_wall + diamond_wall_h, $fn = 4); 
+               translate([0, 0, base_wall])
+               scale([1, diamond_y2/diamond_x2, 1])
+                       cylinder(r = diamond_x2, h = diamond_wall_h+eps, $fn = 4); 
        }
-}
-
-module screw_hole() {
-       translate([0, 0, -eps])
-               cylinder(r = screw_hole/2, h = base_wall + 2*eps, $fn = 6);
-       translate([0, 0, base_wall/2])
-               cylinder(r1 = screw_hole/2,
-                       r2 = screw_hole/2 + base_wall/2,
-                       h = base_wall/2+eps, $fn = 6);
-       translate([0, 0, base_wall-eps])
-               cylinder(r = screw_hole/2 + base_wall/2, h = 2*base_wall + eps, $fn = 6);
+       // wing front
+       translate([-side_w/2, -foam_horiz/2-wall, 0])
+               cube([side_w, foam_horiz+2*wall, base_wall]);
+       for (x = [-1, 1]) scale([x, 1, 1])
+               hull() {
+                       translate([base_d/2, -foam_horiz/2-wall, 0])
+                               cube([side_w/2-base_d/2, foam_horiz+2*wall, eps]);
+                       translate([base_d*.9, -foam_horiz/2-wall, 20])
+                               cube([side_w/2-base_d*.55, foam_horiz+2*wall, eps]);
+               }
 }
 
 difference() {
        body();
        // screw holes
-       rotate([0, 0, 45]) {
-       for (x = [-1, 1]) translate([x*screw_d1/2, 0, 0])
-               screw_hole();
-       for (y = [-1, 1]) translate([0, y*screw_d2/2, 0])
-               screw_hole();
-       }
+       for (angle = [0:90:360])
+               rotate([0, 0, angle])
+               translate([screw_dist/2, 0, -eps])
+               cylinder(r = screw_d/2, h = base_wall + 2*eps);
        // tube hole
        translate([0, 0, -eps])
                cylinder(r = center_d/2, h = base_wall + 2*eps);
-       // cable slot
-       /*
-       rotate([0, 0, 45])
-       translate([-cable_slot_w/2, base_d/2-cable_slot_h, -eps])
-               cube([cable_slot_w, 2*cable_slot_h, infty]);
-       */
        // horizontal foam
-       translate([-side_w/2-eps, -foam_horiz/2, base_wall])
-               cube([side_w + 2*eps, foam_horiz, support_h + eps]);
+       difference() {
+               translate([-infty/2, -foam_horiz/2, base_wall])
+                       cube([infty, foam_horiz, support_h + eps]);
+               translate([-diamond_x1, 0, base_wall])
+                       cube([2*diamond_x1, foam_horiz/2, support_h + eps]);
+       }
+       // cable hole
+       translate([6, 6, -eps])
+               rotate([0, 0, -45])
+               scale([1, 1/2, 1])
+               cylinder(r = 4, h = support_h + base_wall + 2*eps);
        // vertical foam
-       translate([-foam_vert/2, -side_w/2-eps, base_wall])
-               cube([foam_vert, side_w + 2*eps, support_h + eps]);
+       // translate([-foam_vert/2, -side_w/2-eps, base_wall])
+       //      cube([foam_vert, side_w + 2*eps, support_h + eps]);
 }