def menger_sponge(filename, level=1, kind=0): t0 = perf_counter() sponge = MengerSponge(level=level, kind=kind).mesh() t1 = perf_counter() print(f'Build menger sponge <{kind}> in {t1 - t0:.5f}s.') with r12writer(filename) as r12: r12.add_polyface(sponge.vertices, sponge.faces, color=1) print(f'saved as "{filename}".')
def main(filename, level=3, kind=0, merge=False): print('building menger sponge <{}>: start'.format(kind)) sponge = MengerSponge(level=level, kind=kind) print('building menger sponge <{}>: done'.format(kind)) try: write(filename, sponge, merge) except IOError as e: print('ERROR: can not write "{0}": {1}'.format(e.filename, e.strerror)) else: print('saving menger sponge as "{}": done'.format(filename))
def main(filename, level=3, kind=0, merge=False): t0 = perf_counter() sponge = MengerSponge(level=level, kind=kind) t1 = perf_counter() print(f"Build menger sponge <{kind}> in {t1 - t0:.5f}s.") try: write(filename, sponge, merge) except IOError as e: print(f'ERROR: can not write "{e.filename}": {e.strerror}') else: print(f'saved as "{filename}".')
from pathlib import Path from time import perf_counter import ezdxf from ezdxf.render.forms import sphere from ezdxf.addons import MengerSponge from ezdxf.addons.pycsg import CSG DIR = Path('~/Desktop/Outbox').expanduser() doc = ezdxf.new() doc.layers.new('sponge', dxfattribs={'color': 5}) doc.layers.new('sphere', dxfattribs={'color': 6}) doc.set_modelspace_vport(6, center=(5, 0)) msp = doc.modelspace() sponge1 = MengerSponge(level=3).mesh() sphere1 = sphere(count=32, stacks=16, radius=.5, quads=True).translate(.25, .25, 1) t0 = perf_counter() subtract = (CSG(sponge1, meshid=1) - CSG(sphere1, meshid=2)) t1 = perf_counter() # get mesh result by id subtract.mesh(1).render(msp, dxfattribs={'layer': 'sponge'}) subtract.mesh(2).render(msp, dxfattribs={'layer': 'sphere'}) print(f'runtime: {t1-t0:.3f}s') doc.saveas(DIR / 'csg_sphere_vs_menger_sponge.dxf')