algorithmic modeling for Rhino

Hi all,


Just wanted to announce the release of a component I was busy with the past few weeks called Hoopsnake. Here's a summary:


"HoopSnake, apart from a mythical creature, is simple component for Grasshopper. What it does in principle is to create a copy of the data it receives at it's input upon user request and store it locally. This duplicate is made available through a standard Grasshopper parameter output.

What turns this operation from mundane to actually promising is the fact that the input of the component includes some custom programming to escape Grasshopper's recursive loop avoidance check.

What this means in practice is that it is possible through the use of HoopSnake to send the output of a set of components back to it's input in a looping fashion. With the help of a little bit of Data Tree / Data List manipulation, this should open up some new possibilities for iterative process modeling. "


Read more/download at Volatile Prototypes.


Please let me know of any problems/feedback/questions you may have!




Views: 21402

Reply to This

Replies to This Discussion

Right click Hoopsnake component->New Data->Is Prepended

(same effect with is appended and reversed list item).

Dont forget to flatten.

Thank you so much Systemiq, this is so helpful!! 

Is "prepend" also used as a data storing method in

I suppose the "Append" is the same as ".Add"?

Yeah, appending is adding something at the end of a structure, prepending is adding it at the beginning. So with a single list L, append is like L.Add(x) and prepend like L.Insert(0,x)

Hey guys,

Following Arthur's definition we found a way to store the trace of  the Hoopsnake looping. What about baking them though? Do I have to go manually one by one or is there anyway it can multy bake the looping outcomes?




Hello Natasa,
Once you ran the loop in hoopsnake, just bake the list item component.

Hi Arthur,

Thanks a lot. I was baking the wrong thing ;)

I will post a small video of the potential shortly :)


Hey Guys,

Thanks to Arthur I have managed to make a small video to show the potentials of this definition which I am currently working on now.You  can follow the link of this video on our blog


Hi guys,

Now I am trying to gain more control by making the growth follow the closest point on a given curve. At the moment I can identify the relative relationship of the component to the curve.
You can adjust the angle(a) and the position on the face(T) of the mesh. I can identify the result of (T) variable
If T>0.5 OR T<0.5 Then components do not intersect and grow further away from the curve it goes. 
Any ideas how I can achieve it to grow to the closest point possible  on curve?
Thank you 

Hi again, I have managed to solve the problem at some point. The definition now folloes the curve but loosing its pattern. Any ideas on how I could possibly fix that? Please see the attached definition for the changes. The rhino file is the one above,


Used Hoopsnake to rearange geometry in order to avoid intersections.

The definition checks for intersection-events. It counts the cyles per item and changes the turning direction with each iteration. If every angle has been tried and there is no result it moves the geometry. 

Woahhh! Nice Stuff! 

I've been working on something similar, with nested rotational geometry used to make aggregations. 

Would you be willing to share any info./ Definitions related to this work? It'd make two very tired grad students super grateful! 

Hi Michael,

this is so old, I don´t even know where I would look for the file.

Neverthess seeing this from todays point of view, I am not sure it´s the smartest approach anyhow. There has been more sofistcated aggregation modelling recently.

Maybe start here:

I think they also made some tools available with their workshop, but can´t recall the name anymore.

Good luck!







  • Add Photos
  • View All

© 2018   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service