Sorting points to create zig-zag pattern with anti-clastic membrane

Hi Guys,

I am working on this structure where I have to create anti-clastic surface. I wrote the code for it which works pretty well. But when I want to apply it to the full model there is a pattern that I would like to accomplish. I did it manually in Rhino (as seen in below image) but I am struggling to sort the list of points through grasshopper. Any help would be appreciated.

Thank you!

220419 Model.gh (84.6 KB)
220519 Model 01.3dm (3.8 MB)

Good news (the 2nd C# can work as stand alone as well [for Yas Marina type of meshes etc]).:

BrepFace_Panels_EntryLevel_V1.3dm (121.5 KB)

BrepFace_Panels_EntryLevel_V1.gh (128.4 KB)

Bad news: 100% C# code. Cross fingers that some good Samaritan can do it with components.

Ugly news: 1M miles away from any realistic AEC thing

Hi Peter,

This is a great code but unfortunately I don’t think it works the way I want it on my surface.
Thank you very much!

Well … given the opportunity post here your stuff (in R5 format) and some detailed explanation(s) about the holly grail of yours.

Hi Peter,

I have uploaded a R5 veriosn of the model below.

In the below images you can see that I am trying to twist this membrane in one axis. And when I twist the supporting vertical member becomes longer on one side while shorter on the other side. This repeats in the next module in the opposite direction and so on. On the second row the same thing. The example is in the Rhino model I have uploaded as well (this was done manually).

This is what I want to achieve on the wireframe through which I have extracted my quads. Thanks in advance!



220426 Model.gh (86.0 KB)
220526 Model R5.3dm (4.2 MB)

The attached updated C# assumes (like the previous one) that nobody cares about if one panel is done that way and the neighbor is done the other way.

BrepFace_Panels_EntryLevel_V1A.3dm (180.0 KB)
BrepFace_Panels_EntryLevel_V1A.gh (124.2 KB)

And why should we care? Who’s gonna notice that? Not in a million years. Other than that in real-life that sort of abstract concept requires a miilion details (1:1 MCAD connectors/tensioners/blah, blah - don’t even attempt to do them via Rhino) … thus the panel “orientation” is a nothing thing. That said if the connectors are ugly … the whole concept could look like a piece of %@%@

Anyway the panels would be “lost” if the required W Truss (say a Mero KK) is used (if you don’t use an airy Truss the concept would be a total disaster). For more “airy” stuff you can use a tensegrity Truss (but that is 100% pro territory) - or even just stressed cables.


Moral: Don’t get lost in the translation. There’s far more important/challenging things to do - even for a remote relation with reality.

Anyway the logic used:

  1. BrepFace div pts (in U/V) yield Meshes (quad or triangle).

  2. Each face yields the connected vertices (say, in an int [ ] faceVerticesIdx Array).

  3. For each vertex with ordrer i in faceVerticesIdx, the equivalent Normal Vector is used with amplitude: StepValue * NV * (i+1) - order is zero based. So the way that the panel vertices rise “at distance” to the Mesh vertex is related with the ordering of indices in faceVerticesIdx. Obviously I could change/control that (but why?).

I am very thankful for your help. What you did is great and gives me something to learn. I am have been only using grasshopper vanilla components and C# is alien to me. But I am trying to understand.

Hi Peter, Haha. I understand why you say like that but during the preliminary structural calculations it was already worked out that the zig zag pattern (in the side view) of the membranes would be helpful for the tensile membranes to work properly. Hope that makes sense. Hence the reason I am trying to do that on to the surface. I am not doing the 1:1 connectors and tensioners. It’s not worth the time to spend on it. The reason to do those surfaces is because the client wants to see how the canopy looks like from below.

hence the reason I did a manual model to explain what my initial idea was.

If the delta (the step rise value) is small (as it should) it wouldn’t make any difference at all.

In order to achieve the classic one node up the other down (i.e a saddle) rule you’ll need a big delta that ruins the looks. For instance these 2 variations (saddle [added a new option] or not) yield more or less equally wrongly stressed panels.


On the other hand if the LBS is just stressed cables … this kind of layout has no big meaning. PS: Birdair does transparent menbranes as well - so why bother ?

Tip: this is worth as the nuts and bolts are worth. A BID/Concept/etc phase without the fine prints is a nothing thing.

You are right there. But it’s out of my hand as that’s what required for the concept. And as far as I know it’s a complete steel structure and no stressed cables are involved.

In the above images I believe the second image represents what’s required. Could you please post the file. Thank you very much! This thread has been extremely informative and I realised there’s a lot I need to learn. (Especially C#)