May I resize boxes while connected on edges?

Dear smart Rhino & Grasshopper community,

I’m a total beginner at GH and currently taking a digital craft course. For this class, I am studying a precedent project from Bjarke Ingels Group, Serpentine Pavilion 2016. By following some online tutorials, I successfully created something that looks very similar, but the scale is totally off.

From my research, I know the standard YZ scale of each fiberglass box is 400mm by 500mm. Wish to get some clue or hint on where I can plug those two data into my file to turn these oversized boxes into the correct size while maintaining touch with one another (since they are joined together).

Much thanks in advance,
Sincerely,
Leo Li

(Here are the images and file)
serpentine pavilion 2016, BIG.gh (24.6 KB)




Once again, firstly, I wish to thank anyone who is willing to reach out! Even just some hints or command will be super helpful!

This is just a follow-up question—how can I place those L-shaped joints on the edges without copying and pasting them one by one in Rhino? :sob: (This might be too much, please feel free to ignore this part if it’s too nonsence :pray:)

1 Like

this is how your sizes are determined in XYZ direction:

be much aware that changing the Graph Mapper domain from 0:1 to anything else (I advice against that) it’s like adding a *10 multiplier hidden in plain sight…

so I’d rather go for an explicit multiplication instead:

given that the definition is based on geometries of size 1, I think the best solution would be to scale non-uniform at the very end:

this is your original size=1 geometry, you see the scaled brother in green in the background:


The following is a variation I probably prefer to the above one, where stuff is just created the right size instead of being scaled, the size controls are W for box width, H for box height, and E for extrusion Domain

there’s one important thing to say, the way you have decided to apply the checkboard pattern is a bit too much destructive :slight_smile:
going from a data structure where branches indicate row (or columns) to a data structure where “whatever is there” should be done for a reason or for “overwhelming convenience”:

here I think the only reason why that is done that way, is to be able to apply the checkboard 1/0 pattern with list item + Serie, taking also greater advantage of your initial number slider being set to “odd numbers only” (probably for aesthetic reasons, but consider that for even numbers that sort of checkboard pattern won’t work anymore)

{personal note: if that way of creating the checkboard pattern was indicated in the video tutorial, I would probably consider a different channel of video tutorials :slight_smile: }

I believe a better and very basic method to do that would be to populate a list of True/False booleans as long as your initial number of branches, this will be your start point:

then you can just graft it, in such a way you end up with a single True/False for each branch:

and as last step you merge that with the inverted self, in such a way each branch will contain either a True followed by a False, or a False followed by a True:

apply the Cull Pattern and the job is done, still 875 items, but same data structure is still there:


for your second question, this page offers very nice and insightful picture with awesome details: Serpentine Pavilion 2016 by BIG such as:

where you can notice that L shapes in the inside of each box are as long as the box extrusion (a few mm less)
while outside connection elements shaped like a + are as long as the overlapping edges of neighbor boxes (same few mm less)

another important axpect is that the initial grid size we have set (400x500) would produce a result where boxes have common edges:

while you want the box size to be respected despite having a gap in-between which is equal to the thickness of the + connection elements:

the easiest way to do that is to create a new parameter that sets the thickness of the + connection element, and sum it up to the size of the cells:

this means that each cell will need to be offset inwards by half connection element thickness before being extruded, or if you want to see that from a less geometrical and more parametrical point of view, it means that the grid of planes on which construction planes are created should take into account that thickness, while the rectangles size should not (by doing this we avoid 875 -useless- offset operations using just two spaghetti wires :slight_smile: ):

serpentine pavilion 2016, BIG_inno.gh (17.8 KB)

there’s a very nice thing from this page https://parametrichouse.com/serpentine-pavilion-2/ that you might want to take into account at a later stage, where each box thickness is determined in function of the amount of stress applied to it (anyway this does not interfere with the external size of each box because to get thickness they get extruded inwards):

what I believe is probably the most interesting part of this whole study is to understed how to calculate the length of each + connection element, and I believe if you go geometrical for that (measuring the length of the extruded box edges) then you are not leveraging at all the real beauty of data handling (hahaaa!!) but that’s for another episode because I really do need to play some LoL now :slight_smile:

1 Like

Hi inno!!

I can’t thank you enough for this… This is beyond amazing! Sorry for my late reply, but most importantly, I truly appreciate your time and playful, kind instructions. Thank you so much!

I will definitely go through everything you taught me, and hopefully one day I can also enjoy working with Grasshopper! You absolutely saved me from struggling with my studies. :)))

Thank you again! I’ll immediately get back to this precedent study. Wishing you a wonderful day and the best of luck in LoL!:clap: :clap:

1 Like

Hi Leopoldomonzani!

Thank you for pointing out the problem straight forward! I will immediately get on Grasshopper and try it out! Thank you for your help! :+1:

Sorry for replying twice, tbh your answer is truly knowledge-expanding for me! :DD I also appreciate your notes on simplification and modification!

It’s actually so exciting that I might follow along with each step, taking notes and really trying to understand ideas. Thank you!

I won’t just copy and paste—that would be a shame to waste your generosity.

1 Like

thank you for your kind words :pray: I really do like the Serpentine Pavillion, and I thought it would be nice to go through some ideas and try to understand a bit more how it was built :+1:

of course, we can only see the final “outer skin” of the project, and we won’t be facing the countless challenges/decisions the original minds who designed it had to go through to create it

also, the way I would do that is -most probably- not the way other people would necessarily do it :slight_smile: (for instance, if I had to start from scratch, I wouldn’t use graph mappers to define the shape, but probably use Rhino surfaces) and for sure the higher minds at BIG did it in a completely different way

but hey, that is also the beauty behind the whole process, to find your way out despite the cards on the table being not exactly the same ones you were used to
I very much believe even just trying to reproduce a geometrical system that allows for that Pavillion to be designed on our GH screens would be a very nice learning opportunity for everyone -for sure very much for me- and I don’t really mind sharing what I’m doing and what I’m thinking if that could be beneficial to others

there are many many “abstract concepts” that look very difficult to grasp, but are super easy to understand when applied “hands on”, so happy to be of help, and would be happy to post more in the coming days when I have chance to spend some time on it

1 Like