]> www.fi.muni.cz Git - things.git/commitdiff
quasar-fw next gen
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 4 Feb 2021 09:47:21 +0000 (10:47 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 4 Feb 2021 09:47:21 +0000 (10:47 +0100)
quasar-firewall.scad

index 3f95374a5f6dd92d6f051e6400ac2ca253a4fb2b..83a68bf458823e681fc9212a7adf854a09e2eef7 100644 (file)
 eps = 0.01;
 infty = 100;
 
-base_d = 20;
+wall = 1.2;
+base_wall = 5; // before the cut to the angles
+real_base_wall = 1.5; // after the cut
 
-wall = 1.5;
-base_wall = 2.5;
+angle_horiz = 2; // y axis is horizontal, so this is rotate along x
+angle_vert = 1;  // x axis is vertical, so this is rotate along y
 
-center_d = 8 + 0.3;
+center_hole = 8 + 0.3;
+center_d = 24;
 
 foam_horiz = 6 + 0.3;
-foam_vert = 6 + 0.6;
-support_h = 50;
-
-top_d = foam_horiz + 8;
 side_w = 40;
 
+wing_clip_w1 = 9;
+wing_clip_w2 = 8;
+wing_clip_h = 20;
+wing_clip_top_off = 5;
+
 screw_dist = 31.5;
-screw_d = 3;
+screw_d = 2;
 
-// 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;
+fuse_w = 18;
+fuse_h = 52;
+fuse_add = 2;
+fuse_top = 2;
 
-module body() {
-       // base circle
-       cylinder(r = base_d/2, h = base_wall);
-       // 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 body_solid() {
+       cylinder(r = center_d/2, h = base_wall);
        // wing front
        translate([-side_w/2, -foam_horiz/2-wall, 0])
                cube([side_w, foam_horiz+2*wall, base_wall]);
+       // wing clips on sides
        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]);
+                       // bottom
+                       translate([side_w/2-wing_clip_w1, -foam_horiz/2-wall, 0])
+                               cube([wing_clip_w1, foam_horiz+2*wall, eps]);
+                       // top
+                       translate([side_w/2-wing_clip_w1+wing_clip_top_off,
+                               -foam_horiz/2-wall, wing_clip_h])
+                               cube([wing_clip_w1, foam_horiz+2*wall, eps]);
                }
+       // fuse front
+       hull() {
+               for (x = [-1, 1]) scale([x, 1, 1])
+                       translate([fuse_w/2, 0, 0])
+                       cylinder(r = fuse_add, h = base_wall, $fn = 16);
+               for (y = [-1, 1]) scale([1, y, 1])
+                       translate([0, fuse_h/2, 0])
+                       cylinder(r = fuse_add, h = base_wall, $fn = 16);
+       }
+       // fuse clips body
+       hull() for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1]) {
+               translate([fuse_w/2, 0, 0])
+                       cylinder(r = eps, h = base_wall + fuse_top, $fn = 4);
+               translate([0, fuse_h/2, 0])
+                       cylinder(r = eps, h = base_wall + fuse_top, $fn = 4);
+       }
 }
 
-difference() {
-       body();
-       // screw holes
-       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);
-       // horizontal foam
+module body_diff() {
        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]);
+               body_solid();
+               // center hole
+               translate([0, 0, -eps])
+                       cylinder(r = center_hole/2, h = base_wall + 2*eps);
+               // horizontal foam
+               difference() {
+                       translate([-infty/2, -foam_horiz/2, base_wall])
+                               cube([infty, foam_horiz, infty]);
+                       // in the center there is only bottom half of the foam
+                       translate([-fuse_w/2, 0, base_wall-eps])
+                               cube([fuse_w, foam_horiz/2, infty]);
+               }
+               // screw holes
+               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);
+               // fuse clips inside
+               hull() for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1]) {
+                       translate([fuse_w/2 - wall/sin(atan(fuse_h/fuse_w)), 0, base_wall])
+                               cylinder(r = eps, h = base_wall + fuse_top, $fn = 4);
+                       translate([0, fuse_h/2 - wall/sin(atan(fuse_w/fuse_h)), base_wall])
+                               cylinder(r = eps, h = base_wall + fuse_top, $fn = 4);
+               }
        }
-       // 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]);
+}
+
+// now rotate it and cut the bottom
+difference() {
+       rotate([0, angle_horiz, 0])
+       rotate([angle_vert, 0, 0])
+       translate([0, 0, real_base_wall - base_wall])
+               body_diff();
+       translate([-infty/2, -infty/2, -infty])
+               cube(infty);
 }