module menger_schwamm_neg(iter, x, y, z, w) { union() { translate([x,y,z]){ cube([w/3, w/3, w*1.1], center=true); cube([w/3, w*1.1, w/3], center=true); cube([w*1.1, w/3, w/3], center=true); } if (iter > 1) { for (xo = [-w/3:w/3:w/3]) { for (yo = [-w/3:w/3:w/3]) { for (zo = [-w/3:w/3:w/3]) { menger_schwamm_neg(iter-1, x+xo, y+yo, z+zo, w/3); } } } } } } module menger_schwamm(iter, x, y, z, w) { difference() { translate([x, y, z]) cube(w, center=true); menger_schwamm_neg(iter, x, y, z, w); } } rotate([45,35.264,0]) menger_schwamm(1, 0, 0, 0, 3); difference() { translate([0,0,-2.2]) rotate([0,0,60]) cylinder(1,1,0,true, $fn=3); ; translate([0,0,-1.7]) cube([2,2,1], true); }