d=14.5; h=50.9; module aa(){ rotate([90,0,0]) cylinder(d=d,h=h,center=true,$fn=100); } module packAA(nb=4,level=2){ n=round(nb/level); r=nb-(level-1)*n; l=(level-1)/2; t=(n-1)/2; z=0; t2=(r-1)/2; translate([0,0,d/2]){ rotate([0,90,0]){ if(t2!=t){ for(z=[0:1:level-2]){ translate([-d*0.86-d*z-0.1,0,0]) for(x=[-t:1:t]) translate([0,0,x*(d+0.1)]) aa(); } } else{ for(z=[0:1:level-2]){ translate([-d-d*z-0.1,0,0]) for(x=[-t:1:t]) translate([0,0,x*(d+0.1)]) aa(); } } for(x=[-t2:1:t2]) translate([0,0,x*(d+0.1)]) aa(); } } } packAA(); /* module t(c=5,t=2){ for (i=[0:c],a=2*i){ echo(i,a,b); } } t(); */