$fn=120; radius=5; use ; use ; use ; module base(){ hull() mirrorCopy([1,0,0],[0,1,0]) translate([40/2,40/2,5/2]) cylinder(h=5,r=radius, center=true); } module ring0(){ translate([0,0,10])cylinder(h=1,d=35); } module ring1(){ translate([0,0,10+10])cylinder(h=1,d=28); } module ring2(){ translate([0,0,10+10+10])cylinder(h=1,d=26); } module ring3(){ translate([0,0,10+10+10+10])cylinder(h=1,d=25); } module ring4(){ translate([0,0,10+10+10+10+30])cylinder(h=1,d=25); } module ring5(){ translate([0,0,10+10+10+10+30+30])cylinder(h=1,d=26); } module ring6(){ translate([0,0,10+10+10+10+30+30+10])cylinder(h=1,d=28); } module ring7(){ translate([0,0,10+10+10+10+30+30+10+10])cylinder(h=1,d=35); } module groove(){ hull(){ translate([25/2,0,25])sphere(r=2); translate([25/2+5,0,25])sphere(r=2); translate([25/2,0,10+10+10+10+30+30+10+10-15])sphere(r=2); translate([25/2+5,0,10+10+10+10+30+30+10+10-15])sphere(r=2); } } module pedistal(){ difference(){ hull(){ ring7(); translate([0,0,110]) mirrorCopy([1,0,0],[0,1,0]) translate([(45-radius)/2,(45-radius)/2,24.5]) cylinder(h=1,r=radius, center=true); } mirrorCopy([1,0,0]) translate([25/2,0,25/2+0.5]) cylinder(d=3.2, h=24, center=true); } } module column(){ render() difference(){ union(){ hull(){ base(); ring0(); } hull(){ ring0(); ring1(); } hull(){ ring1(); ring2(); } hull(){ ring2(); ring3(); } hull(){ ring3(); ring4(); } hull(){ ring4(); ring5(); } hull(){ ring5(); ring6(); } hull(){ ring6(); ring7(); } pedistal(); } pcd(360/12)groove(); mirrorCopy([1,0,0]) translate([25/2,0,25/2+0.5+110]) cylinder(d=3.2, h=24, center=true); mirrorCopy([1,0,0],[0,1,0]) translate([17.5,17.5,-4]) selfTappingScrew(mSize=5, length=20, recessCap=10); } } if($preview){ rotate([0,0,360*$t]) column(); }else{ column(); }