This is a randomized OpenSCAD implementation of the Reiter cellular automaton algorithm for simulating snowflake formation.
You can customize a lot of parameters. If you just want to re-run and get a new snowflake, change the random seed.
There are three ways of extending the flake into the third dimension. You can have variable thickness based on the ice density in the simulation; you can have constant thickness; or you can superimpose a star-like 3D profile.
If you print, you'll want to remove them carefully from the bed with a razor.