From: Jan "Yenya" Kasprzak Date: Wed, 3 Feb 2021 18:12:08 +0000 (+0100) Subject: quasar firewall another take X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=things.git;a=commitdiff_plain;h=1046633131e454c6677bcfac5c1f03b326837768 quasar firewall another take --- diff --git a/quasar-firewall.scad b/quasar-firewall.scad index 8df1d77..3f95374 100644 --- a/quasar-firewall.scad +++ b/quasar-firewall.scad @@ -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]); }