How to create a domed, grid shell structure in Kangaroo?

Hello! I’m currently trying to create a domed structure with openings that is meant to emulate the grid-shell structure of the Mannheim Multihalle with the Kangaroo plugin in Grasshopper. I’ve somewhat started but I can’t seem to get the mesh to be forced upward. I’m fairly new to both Kangaroo and Grasshopper so any tips would be well appreciated! (16.8 KB)


  1. First do some FLAT BrepFace and using things the likes of MeshMachine (or better some code) triangulate the Face. Avoid quads (real-lfe planarity, leaks over time, cost … etc etc [quads are NOT what amateurs think/believe/hope/wish]).
  2. Then mastermind some Anchor policy (in fact various - see below: 6 used for this demo) related with the naked and/or clothed Vertices.
  3. Then separate the naked Edges from the clothed ones and apply different spring forces (as we do in real-life for any tensile membrane).
  4. A unary Force (gravity) could add to the pleasure.
  5. Finally (skip that for the moment) you can do some real-life thing out of the relaxed Mesh (like the trusses shown below).

Here’s some examples:

And some W type (hex [pink members] outwards for clarity - don’t do that in real-life) truss:

Or :

1 Like

Peter, have you seen the Mannheim Multihalle? Or any (most) elastic gridshell(s)?

1 Like

With regard classic envelope “panels” (opaque/glass + alu frames OR planar glazing or whatever [non EFTE] ) … the big thing is how all that stuff behave over time (and what exactly planarity means on site): i.e. how the structural silicone can deal with thermal expansions and the likes. But the good news are that these days “over time” means pretty much nothing.

Kinda buying a 911 GT3 : good in theory, crap in reality (reliability sucks plus if you switch off electronics you can’t drive the thing at all).

1 Like

What Peter describes in his reply is a quite different system altogether where each grid edge is a separately fabricated strut.
In an actively bent gridshell like Mannheim, the grid is formed by long laths that span many grid cells and are connected to the laths in the other direction by a joint which allows rotation as the grid is erected from flat.

(image from Multihalle Mannheim -
The covering is a flexible membrane, and the individual quads do not need to be planar (and indeed they will usually be far from it).

There’s a good description here Mannheim Multihalle– Strained Grid - Evolution of German Shells: Efficiency in Form

When form-finding this type of gridshell, one of the important things is to keep the lengths of each edge the same, because the 2 directions are typically connected while flat to form a regular square grid, then pushed up or lowered to form the vaulted shape.
The examples linked above show 2 main ways of approaching the generation of these.
One is to push the flat grid in from the sides or corners so it buckles up, and the other is to drape a grid over some solid form while preserving edge lengths.
You can also use a catenary method where you hang the grid under gravity (again, taking care not to change the edge lengths, so you’d need to set a rest length high enough to give some slack, with a high strength, instead of letting the edges stretch).
For a curved boundary like you show, there will be some partial cells and short edges around the boundary. The easiest way of dealing with these is often to form-find with a larger patch of complete quads, then trim off the excess part below a horizontal cutting plane.


Hi @PeterFotiadis, could you please share the GH file for the same , I am working on a similar thing and would like to get some insight. Thanks in advance!

Get some then (use a planar valid and manifold Mesh as input). The truss C# (kinda like in the images above) is 100% indicative - this is NOT the way to make it: there’s various reasons but the most important is that similar W trusses (of a certain size) are composed via 1000’s of “solid” members … thus Instance Definitions is the only rational way to do it. (154.4 KB)