Rhino/Grasshopper script: curve pattern for form-finding anti-funicular forms?


(Dw70676) #1


I’m trying to make several different anti-funicular forms in Rhino using Grasshopper. I’ve got a script that I’m fairly happy with, with one exception. To start the script, I have to input a number of curves to form the mesh needed. However, if the curves are not arranged in the right pattern, then the force applied on the structure is not equally distributed, as I want. They also take quite a bit of time to set-up.

To illustrate, here is a pattern I’ve used for one of the forms:

Note that all the nodes have the same number of curves attached to them.

The scrip makes a finer, triangulate mesh:

This mesh is then used to form-find my anti-funicular form. The result, in this case, looks like this:

I can confirm that the load is relatively evenly distributed by checking the weak dual of the mesh. As long as the hexagons are of relatively equal size, the load should be about equally distributed.

The problem is the initial set-up. Since I hope to try and make many of these forms, I was hoping to make a script that can speed up the relatively time-costly process of setting up the curves for each model. Does anyone have any advice in how to go about this? I was thinking of the following steps:

1: Manually draw a few curves to serve as a baseline for the mesh construction

2: Place a pattern of points on the curves and inside the space contained by them

3: Connect points by curves/lines

4: Make sure that each (at least internal) point/node are connected to the same number of curves/lines

5: Confirm that the load on each point/node is roughly the same (at least outside of the edge points/nodes). If not, optimize.

6: Mesh

Ideally, all the steps, besides step 1, would be handles by the script. My present script looks like this:

Unfortunately, I am not a Grasshopper wiz and not sure how to go about this. How should I start the script for a process like this? Any help or advice would be greatly appreciated.

Thank you in advance!