cube_size = 30; iterations = 3; pos = false; smooth = 80; rotate([45,-35,0]) translate([(cube_size-1)/2,(cube_size-1)/2, (cube_size-1)/2]) menger_cube(n = iterations, size = cube_size, p = pos); cylinder(h=cube_size/7, r1=cube_size/2, r2=0, center=false, $fn = smooth); module menger_cube(n, size, pos){ if(n>0){ for (i = [-1, 0, 1], j=[-1,0,1], k=[-1,0,1]){ if (abs(i)+abs(j)+abs(k) > 1){ translate([i*size/3, j*size/3, k*size/3]) menger_cube(n-1, size/3, pos); } } } if (n==0){ cube(size, center = pos); } }