Creating multiple surfaces out of a list

unhandled
list

(Khaled Ha) #1

Sorry this might be considered as a basic question but I am somehow new to this platform.

I am using grasshopper to create a shading structure that is deformed in a way, as in my original file ‘picture 1’ it took me forever to finish, then i exported the final curves I was left with to a new folder.
The new folder has the final curves already, and I managed to get the lines I need for the shading structure mentioned earlier as in ‘picture 2’.
Yet, I am suffering in creating surfaces from the final lines I am left with.
Now I have tried to make boundary surface and it is kinda useless so far.

Can you please help?

attached is the file with the pictures.

shading.gh (277.3 KB)


(David Rutten) #2

Although I applaud your alignment and copy-paste skills, there are better ways to achieve what you are doing. For example this bit:

Is not very elegant. I’m assuming you do not in fact want to have full manual control over which elements you want from this list, and that instead you always want the first eight items (indices 0 through 7). You can use the Split List component with a splitting index of 8 to achieve the same:

Or you can use Sub list if you want to extract a contiguous part from the middle of another list.

It also looks to me as though you’re dividing your outer loop into a huge number of segments, then to collect those into groups of 10 and extracting the first eight as the inner and outer curves of each shading element. This means that instead of a single curve, you end up with a series of 8 short ones. This needlessly complicates the geometry.

What you could do is divide your loops into the exact number of shading elements you want, and then cut off the last \frac{2}{10} of the length. This would require dividing your loops in ten times fewer sections, shatter those, then finding the parameter along the curve at 80% of the length, and trimming the segments to that new parameter:

Finally, you can create the lines that connect the segments on either side of the shapes at the last moment. The lines have to touch the exact end-points, so there’s no freedom involved anyway in computing them yourself and making sure you have the correct ones. Just as a final step, reverse the direction of the offsetted segments and connect the curves into a single loop:

shading_simplified.gh (28.5 KB)


(David Rutten) #3

Now on to your original question. The problem is that your base loop curve is fully 3D. It twists in all three cardinal directions. When you offset this curve, you get another fully 3D curve. This means your shading segments cannot possibly be planar.

As such, Boundary surface won’t help you, because that only works on planar curves. You could create a Loft or Ruled Surface (probably the same outcome in this case) between the inner and outer segments. Or you could ditch your outer segments entirely and instead extrude your inner segments along a fixed vector. This would at least give you developable shading elements, rather than doubly-curved ones.

Added benefit of loft, ruled and extrude is that you don’t even need the connecting line segments any more.


(David Rutten) #4

ps. All I did was focus on one of the copied chunks in your file. I’m pretty sure you can compute all the curves at once without having to copy all the components for each curve. There may be a need for some additional data structure management, but if you’re interested I can have a look at that as well.


(Khaled Ha) #5

I truly can’t thank you enough!
I did as you said, and it worked perfectly.
This structure is a crucial part of my senior architectural engineering project.

Thank you very much.