teeny = 0.05; module pseudopoint() { sphere(teeny); } module myhull(pointlist) { hull() { for (pt = pointlist) translate(pt) pseudopoint(); }} unit = 8; phi = (sqrt(5)+1)/2; phunit = phi*unit; size = 2*(unit+sqrt(phi)*phunit)/(1+sqrt(phi)); module anti_unit() { difference() { cube(size, center=true); myhull([for (usgn = [-1,+1]) for (psgn = [-1,+1]) each [[usgn*unit, psgn*phunit, 0], [0, usgn*unit, psgn*phunit], [psgn*phunit, 0, usgn*unit]]]);}} lim = 2; difference() { translate([0,0,40]) rotate([45,35.264,0]) for (z=[-lim:lim]) { for (y=[-lim+abs(z):lim-abs(z)]) { for (x=[-lim+abs(z)+abs(y):lim-abs(z)-abs(y)]) { translate([x*size, y*size, z*size]) anti_unit();}}} translate([0,0,-2]) cube([100,100,4], center=true);}