side =36; rad = 9; ratio = 9; dot = side/ratio; fDist = (side+dot)/2; module dots(){sphere(r=dot, $fn=36);} difference(){ intersection () { cube (side, center=true); sphere(r=(side/2)+rad, $fn=100);} //face 1 translate([0,0,-fDist])dots(); //face 2 translate([fDist, -side/4, side/4])dots(); translate([fDist, side/4, -side/4])dots(); //face 3 translate([0, fDist, 0])dots(); translate([-side/4,fDist, -side/4])dots(); translate([side/4,fDist,side/4])dots(); //face 4 translate([-side/4, -fDist, side/4])dots(); translate([-side/4, ,-fDist,-side/4])dots(); translate([side/4, -fDist, side/4])dots(); translate([side/4,-fDist,-side/4])dots(); //face 5 translate([-fDist,-side/4,side/4])dots(); translate([-fDist,side/4,side/4])dots(); translate([-fDist,0,0])dots(); translate([-fDist, -side/4,-side/4])dots(); translate([-fDist, side/4, -side/4])dots(); //face 6 translate([side/4,-side/4,fDist])dots(); translate([side/4,0,fDist])dots(); translate([side/4,side/4,fDist])dots(); translate([-side/4,-side/4,fDist])dots(); translate([-side/4,0,fDist])dots(); translate([-side/4,side/4,fDist])dots(); }