Skip to content

Instantly share code, notes, and snippets.

@jay3sh
Created June 12, 2011 09:55
Show Gist options
  • Save jay3sh/1021389 to your computer and use it in GitHub Desktop.
Save jay3sh/1021389 to your computer and use it in GitHub Desktop.
Menger Sponge generator
#!/usr/bin/python
from cadmium import *
LIMIT = 9
def count_zeroes(lst):
return sum(1 for x in lst if x == 0)
def menger_void(k):
core = Box(k/3,k/3,k/3,center=True) + \
Box(k/3,k/3,k/3,center=True).translate(0,0,k/3) + \
Box(k/3,k/3,k/3,center=True).translate(0,k/3,0) + \
Box(k/3,k/3,k/3,center=True).translate(k/3,0,0) + \
Box(k/3,k/3,k/3,center=True).translate(0,0,-k/3) + \
Box(k/3,k/3,k/3,center=True).translate(0,-k/3,0) + \
Box(k/3,k/3,k/3,center=True).translate(-k/3,0,0)
if k > LIMIT:
for x in [-1,0,1]:
for y in [-1,0,1]:
for z in [-1,0,1]:
if count_zeroes((x,y,z)) <= 1:
core += menger_void(k/3).translate(x*k/3, y*k/3, z*k/3)
return core
solid = Box(27,27,27,center=True) - menger_void(27)
solid.toSTL('menger-sponge.stl')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment