# Source

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52``` ```/* * Hole pattern is * 28.2x28.2, radius 40 * * L * X X * * * X X * * To prevent torque from twisting the tool it has two holes. * To allow for longer reach, there is an extra cylinder extension. */ render() difference() { cylinder(r=25, h=5); for (i=[0:3]) { rotate([0,0,90*i+45]) translate([0,20.1,-1]) cylinder(r=5/2, h=7, \$fs=1); } rotate([0,0,0]) translate([0,21,-1]) cylinder(r=6/2, h=7, \$fs=1); } render() difference() { union() { //translate([-8,0,22]) rotate([0,15,0]) cube([20,5,50], center=true); rotate([0,0,180]) translate([-8,0,22]) rotate([0,15,0]) cube([20,5,50], center=true); translate([-(25-12),0,50]) cube([24,24,100], center=true); cylinder(r1=12, r2=12, h=100); } translate([0,0,-25]) cube([50,50,50], center=true); translate([0,0,90]) rotate([0,90,0]) cylinder(r=8/2, h=82, center=true, \$fs=1); translate([0,0,70]) rotate([0,90,0]) cylinder(r=8/2, h=82, center=true, \$fs=1); } /* //translate([0,0,8]) rotate([0,90,0]) { //render() difference() { union() { translate([4,0,0]) cube([8,6*2,40], center=true); cylinder(r=6, h=40, center=true); } //cylinder(r=8/2, h=42, center=true, \$fs=1); //} //} */ ```