algorithmic modeling for Rhino

Demonstration of algorithm developed for discretizing unstructured meshes into linear and developable strips (or face walks). Developed by Anders Holden Deleuran (CITA) in Rhino/Grasshopper/Galapagos (McNeel/David Rutten) using GHPython (Giulio Piacentino/Steve Baer) and NetworkX (

Views: 1372


You need to be a member of Grasshopper to add comments!

Comment by Dakksh Nagpal on February 19, 2017 at 1:00pm
Thanks much Anders for the quick response.
I saw the code for both the algorithms now all I need to do is somehow combine them together with an defined rule which recursively creates start and destination nodes for the short walks between a minimum and a maximum range of the distance So as to optimise the number of pieces and the length of the short walks.
And ofcourse a single short walk wouldn't intersect itself. :)
Thanks again. !
Comment by Anders Holden Deleuran on February 15, 2017 at 4:13am

You might also be interested in the mesh burning algorithm I wrote that does a similar thing (not using graphs though). There's an example file here with both methods in it.

Comment by Anders Holden Deleuran on February 15, 2017 at 1:03am

Hi Dakksh, thank you :)

A single shortest walk in a graph shouldn't be self-intersecting (at least that I can think of). But perhaps you mean all the generated walks? If so, the algorithms I've been developing for this kind of stuff are iterative. Meaning that they iteratively calculate shortest paths in the face-graph and then remove the nodes/faces that the path go through at each step (think of it as peeling away the mesh one strip at a time). This way you only ever visit a node once and thereby avoid self-intersections. To keep the walks nice and next to each other, I re-weigh the nodes at each step by whether or not the nodes/faces are on the perimeter (making them more attractively to walk through). I never published anything about this, but Andrei Nejur wrote a paper on his Ivy plugin which covers similar methods in depth. It's in the proceedings for the latest Acadia conference. Might want to dig that that up.

Hope that helps a bit,



Ps. I once uploaded some code for building the face-graph and finding a shortest path in it. These are the basic methods I used to construct the algorithm used here. Might help.

Comment by Dakksh Nagpal on February 14, 2017 at 11:24am
Hi Anders, love all your projects!
One could really learn a lot with them.
One particular question about this one though, how would you call source and destination nodes in the network module so that the output short walks or segments or strips are non intersecting?
Would love some light here.
Thanks. :)
Comment by Shohei Yamamoto on February 15, 2015 at 7:07am

Thank you Anders.

I wish success of the project. :)

Comment by Anders Holden Deleuran on February 15, 2015 at 3:38am

@ Nenov: Thanks, yes I think you're onto something. Looks like several of the TheVeryMany's projects use some form of mesh traversal algorithm for discretizing their overall shapes. Fantastic work by the way.

@ Shohei: It might still be used for a project, so I'm afraid we can't share it. That said, I recently uploaded a simpler example of how to use the networkx Python module for making a graph using mesh faces or vertices as nodes and then calculating shortest paths on this graph.

Comment by Nenov Ivo on February 14, 2015 at 10:48am

Nice works ! looks a little bit like some structures made by Marc Fornes.

Comment by Shohei Yamamoto on February 14, 2015 at 10:15am

That’s awesome!

I have a very interested in this.
I will be able to know the definition of this grasshopper?

Comment by Anders Holden Deleuran on February 13, 2015 at 2:06am

@AB: It was. We're developing a bending active (glass fibre rods) tensile membrane (bespoke knit) structure, conceptually similar to a tensegrity structure. This was an experiment to develop cutting patterns on an topologically complex macro form (a tripod shell in this case) for the knit. The idea would be that the "wall" is composed of a two-sided knit with the rods acting as compression members between the two. The project is quite different now ;)

@ Marios: Thanks :) I was minimizing the amount of short walks, so in effect yes also affecting amount of pieces. We also had a constraint at one point where a walk had to be even (i.e. only have an even number of faces). This was optimized towards and also implemented in the algorithm, where a walk would trim itself if it was odd.

Ps. Forgot to give credits to Dave Stasiuk and Daniel Piker. I implemented their isomeshing and meshmachine components for making the input mesh.

Comment by Marios Tsiliakos on February 12, 2015 at 11:14am

Great Anders. :) What are you optimising>? The Number of pieces?





  • Add Photos
  • View All


  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service