algorithmic modeling for Rhino

After playing with Kangaroo on this discussion and as I like a lot Marc Fornes structures I wanted to go a bit further with Kangaroo and also making some mesh automation.  

So the question is: how to make quad mesh usable with Kangaroo and with limited inputs parameters in order to simulate funicular structures like "Vaulted Willow" or "Pleated Inflation" from Marc Fornes and the Verymany.

Here is a first attempt script.

As inputs there are :

Lines_in, just lines, no duplicates, on XY plane could have Z values, but the algorithm works on a , on XY plane could have Z values, but the algorithm works on a  flat representation.

Tolerance is used to glue lines when points are closer than tolerance

Width is the half width of the “roads” going through the network

Angle is the shape of the ends of the roads, 0° means flat end, 180° a totally rounded end

Deviation is the shift generating spikes or enabling to generate pleated geometry


N_u is the number of subdivision along the “roads”, image above with 3 subdivisions on the roads

N_u is the number of subdivision across the “roads”

Zbool if false everything is flat, if true the mesh is in 3d, best with angle = 180° or -180°


For the outputs there is the topology of the network (like Sandbox)

As outputs geometry are put on datatree, each branch represent a path on the road, above 3 paths, which are brep output.

Adding a diagonal there are now 4 paths so 4 branches


The mesh M goes with F which are fixed points, anchor in Kangaroo.

U and V are lines in datatree, there will be used as spring in Kangaroo, U above



This script could be used to draw sort of roads, like in here

But the primary purpose is to do that.


Views: 20362


Replies to This Discussion

Some of the misses lines, it is my fault, Mea Culpa, I put a limit on the while  " while ((panels.Count > 0) && (test < 100))"

Here is a script without the limit. 

If you need surface Daniel made an offset with variable distance.

I corrected some parameter, n_u was not test so n_u of 1 is not good ...

here with a mesh

Here with some roundness

Thanks for testing and giving feed back.

Still some issues depending on attractor position, but works more well in 3d 



I added a circle for calculation of widths of veins. So you could put attraction point near/on root.


Nice results Laurent!

great job, is it possible to reduce the number of veins?

Yes it is possible. I havent' done the script to do the networks. It is Christian job. There are some explanation on his image

To generate points, he uses meshmachine

Hi Laurent, thanks for sharing the great method!

I just wonder how can I smoothly join the ends of the veins with an outline like what was showing in your heart example?

  • Use border mesh edges named E1 in the grasshopper component. @leaphr

@Laurent DELRIEU, thx a lot for the reply, I end up with a bit complex way by collecting the points of naked edges and sort them into a clockwise order. I will try your method again :D

works great now - thank you for this (and also the other nice contributions you made on the forum)!

I wasn't aware of Daniels tools but yours is more flexible now I think.






  • Add Photos
  • View All

© 2021   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service