(*Adapted by Rafael Luís: rafaelluis@netmadeira.com
updated to Mathematica v.10 by Ross Moore *)

Clear[n,Snowflake,start,finish,doline]

Snowflake[n_Integer?NonNegative]:=Graphics[{Thickness[.001],Nest[(#1/.Line[{start_,finish_}]:>doline[start,finish])&,{Line[{{0,0},{1/2,Sqrt[3]/2}}],Line[{{1/2,Sqrt[3]/2},{1,0}}],Line[{{1,0},{0,0}}]},n]},AspectRatio->Automatic,PlotRange->All]

doline[start_,finish_]:=Module[{vec,normal},vec=finish-start;
normal=Reverse[vec] {-1,1} Sqrt[3]/6;
{Line[{start,start+vec/3}],Line[{start+vec/3,start+vec/2+normal}],Line[{start+vec/2+normal,start+2 vec/3}],Line[{start+2 vec/3,finish}]}];

Level 6 takes a significant time to render.

Manipulate[Snowflake[k],{{k,1,"level"},Range[6]}]

Null

Null

Null

Null

Null

Null

Null