66 lines
1.8 KiB
OpenSCAD
66 lines
1.8 KiB
OpenSCAD
|
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]);
|
||
|
}
|