include <../util.scad>; w=15; ball=imp(17/16); ballr=imp(14/16)/2; flat=imp(12/16); bore=imp(3/8); od=imp(41/32); hex=imp(1/4); axle=imp(3/8); cut=imp(12/16); module ball2d(off=0) intersection() { translate([ballr-(ball/2),0]) circle(d=ball+off); translate(-100*[0,1]/2)square(100*[1,1]); square([100,flat+off],center=true); } module ball() difference() { if(0) union() { intersection() { sphere(d=ball); cube([100,cut,flat],center=true); } translate([0,0,(flat/2)-1]) cylinder(d=axle, h=2.5); } union() { intersection() { rotate_extrude() ball2d(); cube([50,cut,50],center=true); } cylinder(d=axle, h=(flat/2)+1.75); } translate([0,0,bore]/2+[0,0,2]) hex(hex + 0.5, 20); rotate([90,0]) cylinder(d=bore, h=ball*2, center=true); translate(-[0,0,flat/2]) sphere(d=6+0.5); } module case() difference() { union() { // Screw strengtheners for(w=42, A=[45,45+90]) rotate([0,0,A]) difference() { hull() { linear_extrude(20, center=true) hull() for(X=w*[-1,1]/2) translate([X,0]) circle(d=8); for(X=12) translate([0,0,-X*2]) cylinder(d=8, h=20+X); } cube([30,10,100],center=true); for(X=w*[-1,1]/2) translate([X,0]) { cylinder(d=3.5, h=50, center=true); for(cap=12, a=30) translate(-[0,0,20+9]/2) { cylinder(d1=cap, d2=0, h=cap*sin(a)); rotate([180,0]) cylinder(d=cap, h=5); } } } rotate(360*[0,0,1]/40) { translate([0,0,w]/2) socket(); rotate([180,0]) translate([0,0,w]/2) socket(); } // translate(-[0,0,w]/2 - [0,0,3]) rotate([180,0]) thrad(); intersection() { hull() { cylinder(d=od, h=100, center=true); // sphere(d=od); //translate([0,0,10]) sphere(d=od); } for(x=0) translate(-[0,0,x/2]) cube([100,100,w+x],center=true); } } // translate([0,40]) linear_extrude(50, center=true) square([50,50],center=true); // Gap for axle rotate(-[90,0]) { cylinder(d=axle + 0.5, h=20); for(h=11.5) hull() { cylinder(d=axle + 0.5, h=h); translate(-[0,7]) cylinder(d=axle + 0.5, h=h); } } // Water outlet //cylinder(d=imp(10/16), h=100, center=true); // Chamber rotate([90,0]) rotate_extrude() ball2d(off=0.75); // BB guide translate(-[0,flat]/2) { sphere(d=6+1); hull() { sphere(d=6+0.5); translate([0,0,7]) sphere(d=6+0.5); } } // O-Ring // rotate([180,0]) cylinder(d=20, h=10); linear_extrude(15.25, center=true) intersection() { //circle(d=25); offset(0.5) mirrordup([1,0,0]) ball2d(); square(0.5*2*[1,1]+[cut,100],center=true); } // cross section //rotate(-[90,0]) linear_extrude(30) square([50,50],center=true); } //rotate([0,90]) rotate([-90,0,0]) ball(); rotate([0,0]) case(); // hose washers if(0) color("black") rotate([-90,0]) mirror([0,1,0]) translate([0,w/2]) rotate([-90,0]) linear_extrude(2) difference() { circle(d=imp(1)); circle(d=imp(1/2 + 1/8)); } module socket() difference() { translate([0,0,0]) import("hosecap9.stl", convexity=2); translate([0,0,-1]) cylinder(d=imp(31/32), h=5, center=true); } module thrad() intersection() { rotate([180,0]) translate([22,12.25,-13]) import("egh.stl", convexity=4); linear_extrude(30, convexity=2) difference() { square(30*[1,1],center=true); circle(d=bore); } }