Parametric Snowflake

by dave_menninger, published

Parametric Snowflake by dave_menninger Dec 5, 2009


Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

8802Views 1867Downloads


Warning: this code is pretty rough, but it works!

This project is a derivative of the code originally written by Allan Ecker, found at:




Code will continue to be updated at http://github.com/davemenninger/Parametric-GCode

I will try to remember to re-upload the latest versions of the code here on Thingiverse as it changes.


  1. Generate a random snowflake using the para_snowflake.py file.

  2. Prepend the outputted snowflake.gcode file with the raft etc found in the header.gcode file.

  3. Send gcode to makerbot!

All Apps

Upgrade this Thing with Thingiverse Apps

No results.

I made two trivial tweaks to this awesome script, which I'll pass along to anyone interested.

1) filename = "snowflake "+hex(random.randint(0,99999999))+".gcode";

This adds a random number to the output file name, so that if you run it multiple times it will generate lots of snowflake files rather than overwriting one repeatedly. So now I can have millions of snowflakes!

2) spike_length = random.random()*(arm_length)

It was arm_length/2, which always produced snowflakes that have long, skinny arms. I like the look of snowflakes that are 'rounder', which this change produces.

We have decorated the Xmas Tree with this snowflakes. It turned out pretty good. You can see more pictures at this blog:

cool! such cute xmas presents

Absolutely awesome design! I love it! Any way of offering parameters to the script to allow for custom build temperatures? Mine crashes at 220

One modification that I might make one day to the Python Direct MakerBot framework (a bit more ambitious name for it than it really warrants at the moment) is to include an object that stores the Extruder settings, including temperature, speed, and flowrate (these are the only options parametric gcoding needs, since it's not doing slicing routines)...

Could you copy the gcode into a text editor and do a find and replace all for 2 degrees C?

Looked at the python code (and learned a little about python in doing so); learned that the code sets the temperature only once through a direct write out to the start of the Gcode file.

Realised my question was a bit silly, because the raft code would contain the temperature to start the next stage, I guess?

This is an exquisite use of parametric technique and I applaud it most heartily!