Creating multiple surfaces

I am trying to create seperate surfaces between each line from this geometry generated solely in Grasshopper. I have generated points at each intersection. The geometry is modelling a building facade and I have generated it parametrically so the size/number of divisions/position of divisions can be changed. The intended purpose is to use this geometry to model in ladybug and diva so the surfaces need to be divided properly among the divisions. I have tried most of the surface tools using lines and grids. I assume the “surface from points” tool isn’t working because the points are in the wrong order in the list, but because I have accumulated the list from various sources I don’t know if I could order it correctly. Any help would be greatly appreciated.

perhaps you can use those lines and split the face of that box.
I’d also recommend grouping the splitting lines by horizontal and vertical, and split in two steps

1 Like

like this? (10.8 KB)

Could you explain what you’ve done?

I’m trying this method. When doing the split in two steps, after the first step and then using the ‘branch’ tool to isolate the split surfaces, when I try and input the list of split surfaces into the vertical line split its saying ‘data conversion failed from text to surface’

I’ll try:

  • created points at intersections
  • sorted them according to x,y,z
  • removed duplicate points (by this time, points are a single, ordered list)
  • for every point n, (apart from the top and the right ones), I created a surface with n+1, n+4 and n+5

This is useful for a old method I tried using points at corners which I’ve already generated, but the list was unordered and duplicated so it wouldn’t work. Thanks.

Sounds like you are running data through a text panel? That won’t work. Bad practice because what comes out of a text panel is text, not the geometry that went in.

Uploading your own GH file is strongly recommended.

I could upload it once I’ve cleaned it up but at the moment it’s long and complicated and would be difficult to follow. Thanks for your help though that solved an issue. Now it is splitting through some lines but not all so I need to figure out why




1 Like

Hi Im trying your method usng points as it has the advantage of sorting the points in x and y. With the part of your sheet leading into i for the list item component, what are you doing?

I think I got it. Did you set the input for the first item series component step size as 4 using the expression? I need to set my C values parametrically and using conditional statements then it should work (as I have changing geometry)

lets say there are x (columns) by y (rows) points,
I created a flat list where every yth point was left out.
e.g. if there were 4 rows the list produced is 1,2,3,5,6,7,9,10,11, ,… and the las triad would also be left out.
that way, from the flat list of points we exclude the top-most and the right-most points.

then for an n point, I created a surface together with the points n+1, n+y, n+y+1
(the n+y and n+y+1 by definition will be the equivalent points for n and n+1 in the following column.)

that’s why I had to leave out the outermost points so as not to have ‘wrap’ surfaces at the end.

hope that makes sense!
(it’s always more difficult to explain it than to think it!)

Thanks. What did you do for the step n in your first series?

oh man, you’r squeezing my brain :slight_smile:
as I remember: (again for x rows, y columns)
first list: a series of y-1 numbers that are multiples of x
second list: for every number “n” of the previous list, a list came out (n, n+1, n+2,…n+(x-2)
so as to get the pattern of indices:
1, 2,…, x-2,-void-,
x, x+1,…, x+(x-2), -void-,
2*x, 2*x+1,…
(adjusted for counting from zero- I am not at a computer with rhino and I’m doing it from memory now)

essential part is you want to create a “x*(y-1)” long list of indices were every (x*n)-1 value is missing

It has worked with 4 for now, essentially telling it that one step is one rectangular surface. However it broke once with this number but maybe that was a parameterisation error

The answer to your question is very clear from reading the code. The expression on the Series ‘N’ input is “x+1”. Can you see that? It has a “Rows” slider plugged into it with the integer value of 3, so “x+1” = 4. :exploding_head:

1 Like

Here we have another solution using Isotrimwith custom division… (14.3 KB)

1 Like

Thanks everyone. I have solved the problem now with your help. It was a matter of correct ordering.