1// Menger Sponge: https://en.wikipedia.org/wiki/Menger_sponge
2
3let
4    menger n =
5        let cutout =
6            union[
7                for (i in 0..<n)
8                    square(2/(3^(i+1)))
9                      >> extrude inf
10                      >> repeat_xy [2/(3^i), 2/(3^i)]
11            ];
12        in cube
13           >> into difference [cutout]
14           >> into difference [reflect_yz cutout]
15           >> into difference [reflect_xz cutout];
16
17in
18menger 4
19