Question about paneling - panels in grid after paneling

Hello, new to rhino and grasshopper here.
I have made a paneling form in grasshopper and my question is how to layout the individual panels in a 2d grid in order to have them ready for let’s say 3d printing. In my case there are 6X10 elements which i would like to layout in a 6X10grid rotated with the large side horizontally

Thank you ! (18.3 KB)

Hello, welcome to the community.

‘Orient’ is your friend in this situation. It will map any geometry from one plane to another. So set up a plane aligned with each piece using the ‘Plane by 3 pts’ component, then orient (or map) this to an array of planes on the XYPlane.

One thing to note is that your pieces are twisted boxes, and due to the nature of the surface these are doubly curved. That means they won’t lie flat on the ground plane, but you can experiment with which points are used for the initial planes to see what works best for reducing scaffolding during a print.

You could also 3d print strips of 10 for example with creases if it makes assembly easier. Let me know if you need help with this.

Hope this helps,

John. (15.1 KB)

Hello, thank you very much for the reply and the support!!!
It works, Ι need to study it now to understand it.
I am aware that the individual items have double curvature, one way to bypass this is I think to divide the curve in triangles instead of 4-sided polygons. I will also try this as a variation.

So, if I understand correctly the algorithm is:

  1. DeBrep breaks the original geometry. (I thought Debrep breaks geometry in (Surface, Curve, Point. You select Point subselection. How does GH understand with DeBrep to take the whole square and not only the individual points??? - Maybe, and this is my question, DeBrep selects the next element in geometry hierarchy, BY POINTS ?)
  2. For item we select corners 0,1,3. (How do we know each corners ID number?)
  3. Align the item to the horizontal plane Orient (A)
  4. ArrRec defines the grid of the target plane Orient (B). I made it into a 6X10 array by linking the grid size of the panels.

Just for learning purposes, how can the grouping of rows/columns can be done as you suggested ?
For this specific project the column grouping seems like a better solution because the bottom of each row is flat and can be directly 3d printed without supports. In this case we could have 6 columns ready to print without rotation/transformation.

And the final step would be to engrave an ID number. I will look in to this. I think I will manage it !

Thanks again for your help and time.

Because you have used the surface box and box morph components, the results will be consistent for every closed BRep you’ve made. So when you deconstruct the BRep, it gives you all the corners in a consistent order. In fact there are 10 points, but you just need the ones at index 0, 1 and 3. You might need to understand more about datatrees, but essentially all datatrees have a list at the end of them, just like the Vertices parameter output within the Deconstruct BRep component.

Trial and error, but there are only 10 points to choose from! It’s quite a logical order though in this case, seen as you used the Surface Box component. It’s highly likely the low numbers will be the ones close to the surface before the extrusion.

Give me a few minutes on this one. It also depends on how thick these elements are and whether the ‘bevel’ joint is important or not - I’ll assume that it is. The 3d printer will need to print a small hinge connection, so you essentially fold each strip together.

Ok, I’ve had a go @r_enforce,

Firstly, to keep the extruded twisted box forms in a chain, because the thing curves in and out would involve knowing which way to fold, and where to put the thin plastic bit to hinge on the chamfer. That’s too much for tonight!!

However, let’s assume the material is thin, then you need to use a data tree to organise your strips before you do anything. You can see below, this is what happens where the domains are set up at the top of the definition:

Now when we do the box morph, we maintain that datastructure so that we can use it later for the strips. Apologies if I’ve got the strips the wrong way round, you’ll have to flip them (use the flip matrix component for data trees for that).

I think grasshopper doesn’t contain a BRep unroller by default, so I wrote a little script in that C# component that will unroll a joined BRep to the XYPlane using something from RhinoCommon. It will also tell you if the unrolled BRep is area preserving (you can see, because they are doubly curved it is all false). Triangulating your shape before unrolling will solve that as you mention, at the expense of a nice smooth doubly curved piece!

Anyway, the result is quite nice - with the added bonus that you don’t have to 3d print, but instead laser cut this. Laser cutting is so much better than 3d printing anyway, 2D > 3D at all times!

I really hope this aids your learning more than anything. A crash course on datatrees would be useful if you’re not confident. There might be better tutorials these days, but David’s from 2013 are a nice introduction. Sorry if you know this already and I’m being too patronising!! (17.9 KB)

Take care,


Wow Thank you !!!
Newbie information overdose. More study now! Thank you very much.
You explain it very well. I need time to search and try to absorb all the new information in detail.
Many new things I must try to understand.

I will get back to you !!! :smiley:

1 Like

Hello again !

Some questions…
In your latest edit i notice the original panel always appears as flat when embeded in the paneling solution. No extrude height there even if there is extrusion height in the base panel.

The same keeps happenning even if there is a bigger value in the curve extrusion. It seems that the Brep is flat although I can see the volume of its boundary.

I almost understood the domain procedure. What I don’t understand is why we need the x-1 value in the top split expression.

Finally, I wanted to ask how do you produce the rhino screenshot with the white background and the grasshopper geometry. The closest I could get to was a Capture Viewport to File or a Rendered Viewport, but it seems different from your images !

Thanks again !!!

Sorry, as I explained it’s too difficult for me to have all the chamfer pieces with the extrusion laid out on the plane. I wouldn’t know where to start, because as I explained, the shape sometimes hinges one way and then the other, and even then it’s almost impossible to work out - maybe someone else on the forum can do it. The best I can do is flat if you want strips, otherwise I’ve showed already how to orient the individual pieces separated on the ground plane.

The “x-1” expression, well it takes the list length and takes one away, then the list is split at this index.

With regards the views, just go into Rhino document properties, go to ‘Grid’ in the menu and untick the three boxes, then go to Appearance>Colors and change the background colour.

Thank you !!!

An alternative solution that can give you more control over surface grid and module variation is to use PanelingTools for Rhino (free from McNeel)