use <../lib/chamfered-cube.scad>; $fn = 16; ep = 0.1; width = 49; difference() { union() { // Body chamferedCube([width, 32, 10]); translate([0, 16, 0]) chamferedCube([width, 24, 20]); translate([0, 27, 0]) chamferedCube([width, 13, 40]); translate([width/2, 40.5, 0]) difference() { cylinder(d = 40, h = 37, $fn=64); translate([-20, -2, -ep]) cube([40 + 2*ep, 40 + 2*ep, 40 + 2*ep]); } // Cylindrical Tabs for (i = [0:1]) { translate([(width + 5)*i - 2.5, 30.5, 36]) mirror([i, 0, 0]) difference() { rotate([0, 90, 0]) cylinder(d = 8, h = 5, $fn=64); translate([-4, -4.5, 0]) rotate([0, 20, 0]) cube([4, 9, 8]); } } // Spring Retainer translate([(width/2)-3.5, 16, 23.5]) union() { translate([2.75, 0, 0]) cube([1.5, 6, 7]); translate([0, 0, 2.75]) cube([7, 6, 1.5]); } } translate([46, 4, -ep]) mirror([1, 0, 0]) linear_extrude(0.5 + ep) text(text="WAND RELEASE", font = "Noto Sans:style=Condensed Bold", size = 5); // subtract wand clearance diameter translate([width/2, 40.5, -ep]) cylinder(d = 37.5, h = 40 + 2*ep, $fn=64); // subtract to make the anchor pivot translate([-ep, 40, 25]) rotate([30, 0, 0]) cube([width + 2*ep, 20, 20]); // subtract to make track clearance translate([(width - 44.3)/2, 32, -ep]) cube([44.3, 8 + ep, 40 + 2*ep]); // subtract to make wand tab catcher translate([(width - 24)/2, 26, 2.5]) //#translate([-4, 26, 2.5]) mirror([0, 1, 0]) difference() { cube([24, 14, 12]); translate([0, 12, 0]) rotate([30, 0, 0]) translate([-ep, 0, -4-ep]) cube([24 + 2*ep, 8, 20]); } // subtract to make it bendable translate([width - 4.3, 26, 26]) cube([2, 8, 14 + ep]); translate([2.3, 26, 26]) cube([2, 8, 14 + ep]); }