intersection() { sierpinski_octahedron(side=1,maxlevel=3); cylinder(r=1); } module octahedron (side=1) { polyhedron(points=[[side,0,0],[0,side,0],[0,0,side],[-side,0,0],[0,-side,0],[0,0,-side]], triangles=[[0,2,1],[0,4,2],[0,5,4],[0,1,5],[3,1,2],[3,2,4],[3,4,5],[3,5,1]]); } module sierpinski_octahedron(side=1,maxlevel=3,level=1) { for(i =[[side*sqrt(2)/4,0,0], [0,side*sqrt(2)/4,0], [0,0,side*sqrt(2)/4], [-side*sqrt(2)/4,0,0], [0,-side*sqrt(2)/4,0], [0,0,-side*sqrt(2)/4]]) { if(level