// allviews side // testviews cone side_sub assembly // printviews print print:x2 print:x2,y2 print:x3,y2 // viewsopts brim5mm include ray=25.04/2; thick1=(31.08-25.04)/2-0.5; thick2=(28.37-25.04)/2-0.5; height=43.74; height2=2; mid1=13.5; mid2=mid1+13.5; // Basic outside and hollow shape module cone(){ difference(){ union(){ h2=height-height2; cylinder(r1=ray+thick1,r2=ray+thick2,h=h2,$fn=40); translate([0,0,h2]) cylinder(r1=ray+thick2,r2=ray,h=height2,$fn=40); } translate([0,0,-1]) cylinder(r=ray,h=height+2,$fn=40); } } // Half the code plus a belt in the middle module side_sub(){ r2=2*ray+2*thick2+10; union(){ difference(){ cone(); t1=-(ray+thick2+1); translate([t1-2,t1,0]) union(){ translate([0,0,-1]) cube([r2,r2,mid1+1]); translate([0,0,mid2]) cube([r2,r2,height]); } } } difference(){ cone(); union(){ translate([-ray-thick1-1,-0.5,-1]) cube([r2,ray+thick1+1,height+2]); } } } module slice(angle,extrah){ r2=2*ray+2*thick2+2; r2_10=r2+10; rotate([0,0,angle]) translate([-r2_10/2,0,mid1-extrah/2]) cube([r2_10,r2,mid2-mid1+extrah],false); } module side(){ difference(){ side_sub(); union(){ slice(20,0.5); slice(22,0.5); } } } module rigth(){ cone(); } module main_view(view){ if (view=="side"){ side(); }else if (view=="cone"){ cone(); }else if (view=="side_sub"){ side_sub(); }else if (view=="print"){ side(); //translate([0,0,ray+thick1]) rotate([90+atan((thick1-thick2)/height),0,0]) side(); }else if (view=="assembly"){ side(); translate ([0,1,0]) rotate ([0,0,180]) side(); } }