rs=4; rc2=4; rc1=4; a=35; $fa=0.5; // default minimum facet angle is now 0.5 $fs=0.5; // default minimum facet size is now 0.5 mm difference () { union() { for (angle = [0 : 120 : 240]) { rotate ([0, 0, angle]) { translate (-a/6*sqrt(3)*[1,0,0]) { rotate ([90, 0, 0]) cylinder(r=rc1,h=a,center=true); translate ([0,0,a*sqrt(3)]) rotate ([90, 0, 0]) cylinder(r=rc2,h=a,center=true); } translate (a/3*sqrt(3)*[1,0,0]) { sphere(rs); cylinder(r1=rc1,r2=rc2,h=a*sqrt(3)); translate(a*sqrt(3)*[0,0,1]) { sphere(rs); rotate ([0,-90+atan(sqrt(2)),0]) cylinder(r=rc2,h=a); } } } } translate (a*[0,0,sqrt(3)+1/3*sqrt(6)]) { sphere(rs); //cylinder(r1=rc1,r2=rc2,h=a*1/3*sqrt(6)); } translate (a*[0,0,sqrt(3)]) { //cylinder(r1=4,r2=4,h=a*1/3*sqrt(6)); difference() { //cylinder(r=1,h=4); cylinder(r1=10,r2=10,h=2); cylinder(r1=2,r2=2,h=4,center=true); } } //difference() { //cylinder(r=1,h=4); // cylinder(r1=10,r2=10,h=20,center=true); // cylinder(r1=2,r2=2,h=30,center=true); // } //translate (a*[0,0,sqrt(3)+1/12*sqrt(6)]) sphere(6); //translate (a*[0,0,sqrt(3)+3/12*sqrt(6)]) sphere(4); } translate(a*sqrt(3)*[0,0,1.26]) { sphere(6); } }