en=100; sm=100; cc=1;//corection g=0.2; th=2; // [20] pr=5; // [30] gr=0; shr=15; // [50] ra=40; // [50] hh=ra-shr; // [50] hg=(pr+th)*2+gr*2; ch=15 ; // [100] cw=6; // [8] dn=2; pn=4; pa=360/pn; pi=ra-shr; inc=2; translate([0,0,((hg+g)*(dn+1))/2]){//shear line difference(){ cylinder((hg+g)*(dn+1),shr,shr,true); translate([10,0,0]) cube([shr*2,cw,(hg+g)*(dn+1)+cc],true);} } module disk(){//DISK difference(){ %cylinder( hg, ra, ra, true, $fn=sm ); for (i=[1:1:pn]) { rotate([0, 0, pa*i]) { translate([shr,0,0]) cube([ch,cw,hg+cc] ,true); } rotate([0,90,0]) { rotate([pa*i, 0, 0]) translate([gr,0,shr+hh/2]) cylinder( hh+cc, pr+g, pr+g, true, $fn=sm ); } } cylinder(hg+cc,shr+g,shr+g,true ); } for ( i=[1:1:pn]) {//pins a = i*pa; s = i*inc; rotate([0,0,a]){ rotate([0,90,0]) translate([gr,0,ra-(pi-s)/2]) cylinder( pi-s, pr, pr, true, $fn=sm ); rotate([0,90,0]); } } } for (i=[1:dn]) {//Disk array translate([0, 0, (hg+g)*i]) { disk(); } } *difference(){ translate([0, 0, ((dn*(hg+g)+hg+g)/2)]) {cube(size=[en, en, dn*(hg+g)+hg+g], center=true); } cylinder(2000,ra+g,ra+g,true); for (i=[1:dn]) {//pinholes array rotate([0,90,0]) translate([(-hg-g)*i,0,ra+(en/2-ra+g)/2]) cylinder( en/2-ra+3, pr+g, pr+g, true, $fn=sm ); } }