eps = 0.01; infty = 200; wall = 2.0; thin_wall = 0.6; stab_tube_d = 2.0 + 0.5; stab_tube_l = 24; stab_tube_wall = 1.5; stab_tube_xoff = 2; fuse_tube_d = 8.0; fuse_tube_l = 12; slot_w = 3.5; base_d = 15; base_h = 0.6; fiber_hole_d = 1.2; module body() { // fuse tube hull() { translate([-fuse_tube_d/2-wall, -fuse_tube_l/2, 0]) cube([fuse_tube_d + wall, fuse_tube_l, eps]); translate([0, fuse_tube_l/2, fuse_tube_d/2+wall]) rotate([90, 0, 0]) cylinder(r = fuse_tube_d/2 + wall, h = fuse_tube_l); } // stab tube + support hull() { translate([-fuse_tube_d/2-stab_tube_xoff-wall, fuse_tube_l/2-wall, 0]) cube([stab_tube_l, stab_tube_d/2+wall, stab_tube_d + 2*stab_tube_wall]); translate([-fuse_tube_d/2 - wall, -fuse_tube_l/2, 0]) cube([fuse_tube_d + wall, eps, thin_wall]); } } difference() { body(); // fuse tube hole translate([0, fuse_tube_l/2+eps, fuse_tube_d/2+wall]) rotate([90, 0, 0]) cylinder(r = fuse_tube_d/2, h = fuse_tube_l + 2*eps); // fuse tube slot translate([-slot_w/2, -fuse_tube_l/2-eps, fuse_tube_d/2+wall]) cube([slot_w, fuse_tube_l + 2*eps, fuse_tube_d/2+wall+eps]); // stab tube translate([-fuse_tube_d/2-stab_tube_xoff-wall-eps, fuse_tube_l/2 + stab_tube_d/2, stab_tube_d/2 +stab_tube_wall]) rotate([0, 90, 0]) cylinder(r = stab_tube_d/2, h = stab_tube_l + 2*eps, $fn = 6); // right fiber hole translate([-fuse_tube_d/2-wall-fiber_hole_d/2, fuse_tube_l/2-wall-fiber_hole_d/2, -eps]) cylinder(r = fiber_hole_d/2, h = stab_tube_d + 2*stab_tube_wall + 2*eps, $fn = 6); // right fiber slot translate([-fuse_tube_d/2-wall-fiber_hole_d/2, fuse_tube_l/2+stab_tube_d/2, -eps]) cylinder(r = fiber_hole_d/2, h = stab_tube_d + 2*stab_tube_wall + 2*eps, $fn = 6); // left fiber hole translate([stab_tube_l-fuse_tube_d/2-stab_tube_xoff-2*wall-fiber_hole_d/2, fuse_tube_l/2-wall-fiber_hole_d/2, -eps]) cylinder(r = fiber_hole_d/2, h = stab_tube_d + 2*stab_tube_wall + 2*eps, $fn = 6); // left fiber slot translate([stab_tube_l-fuse_tube_d/2-stab_tube_xoff-2*wall-fiber_hole_d/2, fuse_tube_l/2+stab_tube_d/2, -eps]) cylinder(r = fiber_hole_d/2, h = stab_tube_d + 2*stab_tube_wall + 2*eps, $fn = 6); } // endpoint stopper /* translate([0, 2*fuse_tube_l, 0]) difference() { union() { cylinder(r = stab_tube_d/2 + wall, h = wall); translate([0, 0, wall-eps]) cylinder(r1 = stab_tube_d/2 + wall, r2 = stab_tube_d/2+thin_wall, h = wall); } translate([0, 0, -eps]) cylinder(r = stab_tube_d/2, h = 2*wall + 2*eps); } */