diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 index a33120c..89b6fbc --- a/README.md +++ b/README.md @@ -7,18 +7,25 @@ lifted (verbatim) from "MODELING SNOW CRYSTAL GROWTH II: A mesoscopic lattice map with plausible dynamics" by Janko Gravner and David Griffeath. Requirements: - - PyPy (for fast execution of the simulations) - - PIL for exporting graphics (PyPy accesible) + + * PyPy (for fast execution of the simulations) + * PIL for exporting graphics (PyPy accesible) Requirements for Laser Cutting: - - Python only (no PyPy support) - - PIL (Python accessible) - - potrace (For translating SVG) - - scipy/numpy (For clustering) + + * Python only (no PyPy support) + * PIL (Python accessible) + * potrace (For translating SVG) + * scipy/numpy (For clustering) Requirements for 3D Printing: - - PyPy or Python - - PIL (PyPy/Python accessible) - - potrace (For translating SVG) + + * PyPy or Python + * PIL (PyPy/Python accessible) + * potrace (For translating SVG) + * pstoedit (For generating EPS) + * ghostscript v 9.20 (For generating DXF. Versions > 9.20 break this functionaliy) + * OpenSCAD (For generating STL) + * CURA (For generating gcode. Currently not working) ![Example Snowflake](https://raw.githubusercontent.com/vishnubob/snowflake/master/media/example.png) diff --git a/media/collage_huge.png b/media/collage_huge.png old mode 100644 new mode 100755 diff --git a/media/collage_large.jpg b/media/collage_large.jpg old mode 100644 new mode 100755 diff --git a/media/collage_medium.jpg b/media/collage_medium.jpg old mode 100644 new mode 100755 diff --git a/media/collage_small.jpg b/media/collage_small.jpg old mode 100644 new mode 100755 diff --git a/media/example.png b/media/example.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_01.png b/media/examples/snowflake_01.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_02.png b/media/examples/snowflake_02.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_03.png b/media/examples/snowflake_03.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_04.png b/media/examples/snowflake_04.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_05.png b/media/examples/snowflake_05.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_06.png b/media/examples/snowflake_06.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_07.png b/media/examples/snowflake_07.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_08.png b/media/examples/snowflake_08.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_09.png b/media/examples/snowflake_09.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_10.png b/media/examples/snowflake_10.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_11.png b/media/examples/snowflake_11.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_12.png b/media/examples/snowflake_12.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_13.png b/media/examples/snowflake_13.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_14.png b/media/examples/snowflake_14.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_15.png b/media/examples/snowflake_15.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_16.png b/media/examples/snowflake_16.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_17.png b/media/examples/snowflake_17.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_18.png b/media/examples/snowflake_18.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_19.png b/media/examples/snowflake_19.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_20.png b/media/examples/snowflake_20.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_21.png b/media/examples/snowflake_21.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_22.png b/media/examples/snowflake_22.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_23.png b/media/examples/snowflake_23.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_24.png b/media/examples/snowflake_24.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_25.png b/media/examples/snowflake_25.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_26.png b/media/examples/snowflake_26.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_27.png b/media/examples/snowflake_27.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_28.png b/media/examples/snowflake_28.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_29.png b/media/examples/snowflake_29.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_30.png b/media/examples/snowflake_30.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_31.png b/media/examples/snowflake_31.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_32.png b/media/examples/snowflake_32.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_33.png b/media/examples/snowflake_33.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_34.png b/media/examples/snowflake_34.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_35.png b/media/examples/snowflake_35.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_36.png b/media/examples/snowflake_36.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_37.png b/media/examples/snowflake_37.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_38.png b/media/examples/snowflake_38.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_39.png b/media/examples/snowflake_39.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_40.png b/media/examples/snowflake_40.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_41.png b/media/examples/snowflake_41.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_42.png b/media/examples/snowflake_42.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_43.png b/media/examples/snowflake_43.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_44.png b/media/examples/snowflake_44.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_45.png b/media/examples/snowflake_45.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_46.png b/media/examples/snowflake_46.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_47.png b/media/examples/snowflake_47.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_48.png b/media/examples/snowflake_48.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_49.png b/media/examples/snowflake_49.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_50.png b/media/examples/snowflake_50.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_51.png b/media/examples/snowflake_51.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_52.png b/media/examples/snowflake_52.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_53.png b/media/examples/snowflake_53.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_54.png b/media/examples/snowflake_54.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_55.png b/media/examples/snowflake_55.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_56.png b/media/examples/snowflake_56.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_57.png b/media/examples/snowflake_57.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_58.png b/media/examples/snowflake_58.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_59.png b/media/examples/snowflake_59.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_60.png b/media/examples/snowflake_60.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_61.png b/media/examples/snowflake_61.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_62.png b/media/examples/snowflake_62.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_63.png b/media/examples/snowflake_63.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_64.png b/media/examples/snowflake_64.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_65.png b/media/examples/snowflake_65.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_66.png b/media/examples/snowflake_66.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_67.png b/media/examples/snowflake_67.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_68.png b/media/examples/snowflake_68.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_69.png b/media/examples/snowflake_69.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_70.png b/media/examples/snowflake_70.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_71.png b/media/examples/snowflake_71.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_72.png b/media/examples/snowflake_72.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_73.png b/media/examples/snowflake_73.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_74.png b/media/examples/snowflake_74.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_75.png b/media/examples/snowflake_75.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_76.png b/media/examples/snowflake_76.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_77.png b/media/examples/snowflake_77.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_78.png b/media/examples/snowflake_78.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_79.png b/media/examples/snowflake_79.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_80.png b/media/examples/snowflake_80.png old mode 100644 new mode 100755 diff --git a/media/examples/snowflake_81.png b/media/examples/snowflake_81.png old mode 100644 new mode 100755 diff --git a/media/make_collage.py b/media/make_collage.py old mode 100644 new mode 100755 diff --git a/media/slides/Slide03.png b/media/slides/Slide03.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide04.png b/media/slides/Slide04.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide05.png b/media/slides/Slide05.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide06.png b/media/slides/Slide06.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide07.png b/media/slides/Slide07.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide08.png b/media/slides/Slide08.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide09.png b/media/slides/Slide09.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide10.png b/media/slides/Slide10.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide11.png b/media/slides/Slide11.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide12.png b/media/slides/Slide12.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide13.png b/media/slides/Slide13.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide14.png b/media/slides/Slide14.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide15.png b/media/slides/Slide15.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide16.png b/media/slides/Slide16.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide17.png b/media/slides/Slide17.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide18.png b/media/slides/Slide18.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide20.png b/media/slides/Slide20.png old mode 100644 new mode 100755 diff --git a/media/slides/Slide21.png b/media/slides/Slide21.png old mode 100644 new mode 100755 diff --git a/papers/h2l.pdf b/papers/h2l.pdf old mode 100644 new mode 100755 diff --git a/scripts/snowflake.py b/scripts/snowflake.py index 3589c43..6653abe 100755 --- a/scripts/snowflake.py +++ b/scripts/snowflake.py @@ -2,8 +2,26 @@ import os import sys +import argparse from sfgen import * + +SNOWFLAKE_DEFAULTS = { + "size": 200, + "name": "snowflake", + "bw": False, + "env": '', + "pipeline_3d": False, + "pipeline_lasercutter": False, + "randomize": False, + "max_steps": 0, + "margin": .85, + "curves": False, + "datalog": False, + "debug": False, + "movie": False, +} + def ensure_python(): # pylab doesn't play well with pypy # so this will cause us to re-exec if diff --git a/setup.py b/setup.py index 61c525a..d72b68b 100755 --- a/setup.py +++ b/setup.py @@ -13,9 +13,12 @@ "py_modules":[ "sfgen.__init__", "sfgen.curves", - "sfgen.splines", - "sfgen.engine", - "sfgen.graphics", + "sfgen.engine", + "sfgen.graphics", + "sfgen.movie", + "sfgen.render", + "sfgen.runner", + "sfgen.splines", ], "install_requires": [ "pillow", @@ -24,7 +27,7 @@ "scripts":[ "scripts/snowflake.py", ], - "version": "0.3", + "version": "0.31", } if __name__ == "__main__": diff --git a/src/__init__.py b/src/__init__.py old mode 100644 new mode 100755 index e0bb2e4..64b1e20 --- a/src/__init__.py +++ b/src/__init__.py @@ -17,6 +17,12 @@ def log_output(name): logger = logging.getLogger() logger.addHandler(foh) + from curves import * from graphics import * from engine import * +# added movie, render, runner +# 2018-0212 +from movie import * +from render import * +from runner import * diff --git a/src/curves.py b/src/curves.py old mode 100644 new mode 100755 diff --git a/src/engine.py b/src/engine.py old mode 100644 new mode 100755 index 3b46239..e33edea --- a/src/engine.py +++ b/src/engine.py @@ -134,76 +134,11 @@ def _init_defaults(self): def _init_special(self): pass -class RenderMovie(object): - def __init__(self, name): - self.name = name - self.replay = LatticeReplay(name) - - def run(self): - if not os.path.exists("frames"): - os.mkdir("frames") - x = iter(self.replay) - for (idx, frame) in enumerate(self.replay): - fn = "frames/%s_%09d.png" % (self.name, idx + 1) - frame.save_image(fn) - -class LatticeReplay(object): - class ReplayIterator(object): - def __init__(self, replay): - self.replay = replay - self.idx = 0 - - def next(self): - try: - lattice = self.replay.get_lattice(self.idx) - self.idx += 1 - return lattice - except IndexError: - raise StopIteration - - def __init__(self, name): - self.name = name - self.current_frame = None - self.current_replay = None - pfn = "%s.pickle" % self.name - self.lattice = CrystalLattice.load_lattice(pfn) - self.scan_replays() - - def __iter__(self): - return self.ReplayIterator(self) - - def get_lattice(self, step): - (step, dm, cm) = self.get_step(step) - for (idx, cell) in enumerate(zip(dm, cm)): - self.lattice.cells[idx].diffusive_mass = cell[0] - self.lattice.cells[idx].crystal_mass = cell[1] - self.lattice.cells[idx].attached = bool(cell[1]) - for cell in self.lattice.cells: - cell.update_boundary() - return self.lattice - - def get_step(self, step): - idx = bisect.bisect_left(self.replay_map, step + 1) - if self.current_frame != idx or not self.current_replay: - self.current_frame = idx - fn = self.replays[self.current_frame] - print "loading", fn - f = open(fn) - self.current_replay = pickle.load(f) - offset = self.current_replay[0][0] - return self.current_replay[step - offset] - - def scan_replays(self): - replays = [] - fn_re = re.compile("cell_log_(\d+).pickle") - for fn in os.listdir('.'): - m = fn_re.search(fn) - if m: - step = int(m.group(1)) - replays.append((fn, step)) - replays.sort(key=operator.itemgetter(1)) - self.replays = [rp[0] for rp in replays] - self.replay_map = [rp[1] for rp in replays] +# class RenderMovie(object) moved to movie.py +# 2018-0212 + +# class LatticeReplay(object) moved to movie.py +# 2018-0212 class CrystalLattice(object): LogHeader = ["dm", "cm", "bm", "acnt", "bcnt", "width", "beta", "theta", "alpha", "kappa", "mu", "upsilon"] @@ -603,203 +538,24 @@ def noise_step(self): else: self.diffusive_mass = (1 + self.env.sigma) * self.diffusive_mass -def check_basecut(svgfn): - # ensure there is only one path - svg = parse(svgfn) - for (cnt, node) in enumerate(svg.getElementsByTagName("path")): - if cnt > 0: - return False - return True - -def merge_svg(file_list, color_list, outfn): - first = None - idx = 0 - for (svgfn, color) in zip(file_list, color_list): - svg = parse(svgfn) - for node in svg.getElementsByTagName("g"): - if idx == 0: - # cut layer - # write a new group - container = svg.createElement("g") - container.setAttribute("transform", node.attributes["transform"].nodeValue) - node.parentNode.replaceChild(container, node) - container.appendChild(node) - node.attributes["fill"] = "none" - node.attributes["stroke"] = "rgb(0, 0, 255)" - node.attributes["stroke-opacity"] = "1" - node.attributes["stroke-width"] = ".01mm" - else: - node.attributes["fill"] = color - del node.attributes["transform"] - idx += 1 - import_nodes = svg.importNode(node, True) - container.appendChild(import_nodes) - if first == None: - first = svg - f = open(outfn, 'w') - f.write(first.toxml()) - -def potrace(svgfn, fn, turd=None, size=None): - cmd = ["potrace", "-i", "-b", "svg"] - if turd != None: - cmd.extend(["-t", str(turd)]) - if size != None: - sz = map(str, size) - cmd.extend(["-W", sz[0], "-H", sz[1]]) - cmd.extend(["-o", svgfn, fn]) - cmd = str.join(' ', cmd) - msg = "Running '%s'" % cmd - log(msg) - os.system(cmd) - -# laser cutter pipeline -def pipeline_lasercutter(args, lattice, inches=3, dpi=96, turd=10): - # layers - rs = RenderSnowflake(lattice) - name = str.join('', [c for c in args.name if c.islower()]) - size = args.target_size - layerfn = "%s_layer_%%d.bmp" % name - resize = inches * dpi - fnlist = rs.save_layers(layerfn, 2, resize=resize, margin=1) - # we want to drop the heaviest layer - del fnlist[0] - # try to save o'natural - imgfn = "%s_bw.bmp" % name - svgfn = "%s_bw.svg" % name - lattice.save_image(imgfn, scheme=BlackWhite(lattice), resize=resize, margin=1) - potrace(svgfn, imgfn, turd=2000) - if not check_basecut(svgfn): - msg = "There are disconnected elements in the base cut, turning on boundary layer." - log(msg) - lattice.save_image(imgfn, scheme=BlackWhite(lattice, boundary=True), resize=resize, margin=1) - potrace(svgfn, imgfn, turd=2000) - assert check_basecut(svgfn), "Despite best efforts, base cut is still non-contiguous." - os.unlink(svgfn) - fnlist.insert(0, imgfn) - # adjusted for ponoko - # cut layer is blue - # etch layer are black, or shades of grey - colors = ["#000000", "#111111", "#222222", "#333333", "#444444", "#555555"] - svgs = [] - for (idx, fn) in enumerate(fnlist): - svgfn = os.path.splitext(fn)[0] - svgfn = "%s_laser.svg" % svgfn - svgs.append(svgfn) - if idx == 0: - potrace(svgfn, fn, turd=turd, size=size) - else: - potrace(svgfn, fn, size=size) - svgfn = "%s_laser_merged.svg" % name - epsfn = "%s_laser_merged.eps" % name - merge_svg(svgs, colors, svgfn) - """ - # move to eps - cmd = "%s %s -E %s" % (InkscapePath, svgfn, epsfn) - msg = "Running '%s'" % cmd - log(msg) - os.system(cmd) - """ - -# 3d pipeline -def pipeline_3d(args, lattice, inches=3, dpi=96, turd=10): - resize = inches * dpi - # try to save o'natural - imgfn = "%s_bw.bmp" % args.name - svgfn = "%s_bw.svg" % args.name - lattice.save_image(imgfn, scheme=BlackWhite(lattice), resize=resize, margin=1) - potrace(svgfn, imgfn, turd=2000) - if not check_basecut(svgfn): - msg = "There are disconnected elements in the base cut, turning on boundary layer." - log(msg) - lattice.save_image(imgfn, bw=True, boundary=True) - potrace(svgfn, imgfn, turd=2000) - assert check_basecut(svgfn), "Despite best efforts, base cut is still non-contiguous." - # - epsfn = "%s_3d.eps" % args.name - dxffn = "%s_3d.dxf" % args.name - cmd = "potrace -M .1 --tight -i -b eps -o %s %s" % (epsfn, imgfn) - msg = "Running '%s'" % cmd - log(msg) - os.system(cmd) - # - cmd = "pstoedit -dt -f dxf:-polyaslines %s %s" % (epsfn, dxffn) - msg = "Running '%s'" % cmd - log(msg) - os.system(cmd) - # - scad_fn = "%s_3d.scad" % args.name - stlfn = "%s_3d.stl" % args.name - f = open(scad_fn, 'w') - scad_txt = 'scale([30, 30, 30]) linear_extrude(height=.18, layer="0") import("%s");\n' % dxffn - f.write(scad_txt) - f.close() - cmd = "/Applications/OpenSCAD.app/Contents/MacOS/OpenSCAD -o %s %s" % (stlfn, scad_fn) - msg = "Running '%s'" % cmd - log(msg) - os.system(cmd) - # - cmd = "python /Applications/Cura/Cura.app/Contents/Resources/Cura/cura.py -s %s -i %s" % (stlfn, SNOWFLAKE_INI) - msg = "Running '%s'" % cmd - log(msg) - os.system(cmd) - -SNOWFLAKE_DEFAULTS = { - "size": 200, - "name": "snowflake", - "bw": False, - "env": '', - "pipeline_3d": False, - "pipeline_lasercutter": False, - "randomize": False, - "max_steps": 0, - "margin": .85, - "curves": False, - "datalog": False, - "debug": False, - "movie": False, -} - -def run(args): - log_output(args.name) - msg = "Snowflake Generator v0.3" - log(msg) - pfn = "%s.pickle" % args.name - ifn = "%s.png" % args.name - if os.path.exists(pfn): - cl = CrystalLattice.load_lattice(pfn) - #cl.save_image(ifn, bw=args.bw) - #cl.save_image(ifn) - else: - kw = {} - if args.env: - mods = {key: float(val) for (key, val) in [keyval.split('=') for keyval in args.env.split(',')]} - env = CrystalEnvironment(mods) - kw["environment"] = env - elif args.randomize: - env = CrystalEnvironment() - env.randomize() - msg = str.join(', ', ["%s=%.6f" % (key, env[key]) for key in env]) - log(msg) - kw["environment"] = env - elif args.curves: - env = CrystalEnvironment.build_env(args.name, 50000) - kw["environment"] = env - kw["max_steps"] = args.max_steps - kw["margin"] = args.margin - kw["datalog"] = args.datalog - kw["debug"] = args.debug - cl = CrystalLattice(args.size, **kw) - try: - cl.grow() - finally: - cl.write_log() - cl.save_lattice(pfn) - #cl.save_image(ifn, bw=args.bw) - cl.save_image(ifn) - if args.pipeline_3d: - pipeline_3d(args, cl) - if args.pipeline_lasercutter: - pipeline_lasercutter(args, cl) - if args.movie: - movie = RenderMovie(args.name) - movie.run() +# def check_basecut() moved to render.py +# 2018-0212 + +# def merge_svg() moved to render.py +# 2018-0212 + + +# def potrace() moved to render.py +# 2018-0212 + +# laser cutter pipeline moved to render.py +# 2018-0212 + +# 3d pipeline moved to render.py +# 2018-0212 + +# SNOWFLAKE_DEFAULTS moved to snowflake.py +# 2018-0212 + +# def run() moved to runner.py +# 2018-0212 diff --git a/src/etc/hist.gplot b/src/etc/hist.gplot old mode 100644 new mode 100755 diff --git a/src/etc/snowflake.ini b/src/etc/snowflake.ini old mode 100644 new mode 100755 diff --git a/src/graphics.py b/src/graphics.py old mode 100644 new mode 100755 diff --git a/src/movie.py b/src/movie.py index 3168094..635857b 100644 --- a/src/movie.py +++ b/src/movie.py @@ -1,3 +1,5 @@ +from sfgen import * + class RenderMovie(object): def __init__(self, name): self.name = name diff --git a/src/render.py b/src/render.py index 72082e3..d9481e8 100644 --- a/src/render.py +++ b/src/render.py @@ -1,3 +1,5 @@ +from sfgen import * + def check_basecut(svgfn): # ensure there is only one path svg = parse(svgfn) @@ -138,20 +140,6 @@ def pipeline_3d(args, lattice, inches=3, dpi=96, turd=10): log(msg) os.system(cmd) -SNOWFLAKE_DEFAULTS = { - "size": 200, - "name": "snowflake", - "bw": False, - "env": '', - "pipeline_3d": False, - "pipeline_lasercutter": False, - "randomize": False, - "max_steps": 0, - "margin": .85, - "curves": False, - "datalog": False, - "debug": False, - "movie": False, -} + diff --git a/src/runner.py b/src/runner.py index b659bd7..0b28dbb 100644 --- a/src/runner.py +++ b/src/runner.py @@ -1,6 +1,8 @@ +from sfgen import * + def run(args): log_output(args.name) - msg = "Snowflake Generator v0.3" + msg = "Snowflake Generator v0.31" log(msg) pfn = "%s.pickle" % args.name ifn = "%s.png" % args.name diff --git a/src/splines.py b/src/splines.py old mode 100644 new mode 100755 diff --git a/utils/aws.py b/utils/aws.py old mode 100644 new mode 100755 diff --git a/utils/instance.sh b/utils/instance.sh old mode 100644 new mode 100755 diff --git a/utils/name_to_flake.py b/utils/name_to_flake.py old mode 100644 new mode 100755 diff --git a/utils/snowflake_walk.py b/utils/snowflake_walk.py old mode 100644 new mode 100755