eps = 0.01; infty = 200; wall = 1.5; thin_wall = 0.6; stab_tube_d = 3.0 + 0.5; stab_tube_l = 25; stab_tube_off = 3; pulley_d = 10; fuse_tube_d = 8.0; fuse_tube_l = 12; slot_w = 3; base_d = 15; base_h = 0.6; module body() { // fuse tube cylinder(r = fuse_tube_d/2 + wall, h = fuse_tube_l); // stab tube hull() { translate([fuse_tube_d/2 + wall + stab_tube_off, 0, stab_tube_d/2+wall]) rotate([0, 90, 0]) cylinder(r = stab_tube_d/2+wall, h = stab_tube_l); translate([fuse_tube_d/2 + wall + stab_tube_off, -stab_tube_d/2, 0]) cube([stab_tube_l, stab_tube_d, eps]); } // joiner hull() { // stab tube tip translate([fuse_tube_d/2 + wall + stab_tube_off + stab_tube_l - eps, -thin_wall/2, stab_tube_d + 1.5*wall]) cube([eps, thin_wall, eps]); // fuse tube tip translate([fuse_tube_d/2 + wall/2, -thin_wall/2, fuse_tube_l - eps]) cube([eps, thin_wall, eps]); translate([fuse_tube_d/2 + wall/2, -3*wall/2, stab_tube_d+1.5*wall]) cube([eps, 3*wall, eps]); } } difference() { body(); // fuse tube translate([0, 0, -eps]) cylinder(r = fuse_tube_d/2, h = fuse_tube_l + 2*eps); // fuse slot translate([-fuse_tube_d, -slot_w/2, -eps]) cube([fuse_tube_d, slot_w, fuse_tube_l + 2*eps]); // stab tube translate([0, 0, stab_tube_d/2+wall]) rotate([0, 90, 0]) cylinder(r = stab_tube_d/2, h = stab_tube_l + stab_tube_off + fuse_tube_d/2 + wall + eps ); }