Optimize cutting pattern for large amount of organic curved pieces

Hello. I’ve been having an issue for days trying to come up with a solution for the following problem:

I’m trying to create an interior decoration like the wooden one that is seen in this image.

I managed to create the desired pattern using a simple sweep2 with 3 cross sections. Now when actually trying to fabricate it appeared the problems.

The material that’s gonna be used for this comes in plaques of 2,44 mts by 1,22 meters. As you can imagine i’m trying to make a grasshopper file that cuts and sorts these cuts in the most efficient way possible.

So what i’ve basicaaly tried to do and failed (and made it extremely complex, baked like 4 different parts of the algortihm… definitely not efficient, pretty, or funtional…) is the following logic → create a grid of 2,44 by 1,22 - cull repeated edges - use lines to split my swept surfaces - number surfaces in order of left to right to give the cut pieces an order - offset edges and rebuild to 1 degree for open next polygon packing - group the original cut pieces with there offset edge counterparts - pack into giant square with open nest. Here’s the files:

parametricbench walllll.gh (210.1 KB)
prueba 1 organica.3dm (2.9 MB)

I’m a noob and don’t understand half the things i’m doing here, used all types of threads and forums but alas i have not been able to solve this problem.

TLDR: ~50 massive curved shapes of approximately 3by6 mts need to be cut from plaques of 2,44 by 1,22. There’s gonna be so many cut pieces i need to organize them and pack them in the most efficient way possible. I don’t know how to cut em or how to organize em. I tried as much as i can but i can’t spend too much more time on this, my boss is on my ass.

Sorry if i missed any info and def sorry for a less than pretty file.

parametricbench walllll edited v0.gh (710.0 KB)
Bumping up the tolerance is the key to having quick nesting.
I didn’t do further because your curve sizes do not seem right.
And please simplify your file before uploading.

hello! thankyou so much for the quick response Quan, sorry for the messy file.

What do you mean by curve sizes dont seem right? the curves in real life are like 3 meters tall by 5 meter along; we’re talking about a scale of “decorating the inside of a room” (i did use mm as my unit in rhino cause i’m used to designing small products and i’ve just started an internship at a arch firm so that was mistake n1)

This is my main issue: due to the fact that these curves are huge, and that they need to be cut out of a material where the plaque comes in 2,40 mts by 1,20mts, i need to find the most optimal way of cutting these big curves into little pieces, packing them into an area that is a multiple of 5,28mts (1,20x2,40).

Due to the fact that this will result in hundreds of little pieces, I also need a way to maintain an order so I know which pieces go with which (so I tried numbering them).

If you don’t mind, could you please explain what you did and why you did what you show in the file? I still don’t understand grashopper and i often do not understand why i need to do what i need to do.

i don’t even know if what i want is possible. should i try cutting the pieces into an arbitrary size (say 0.5 mts x 0.5mts) and then packing that?

You could number the final pieces into 1,2,3… And the split parts be 1a,1b,1c… (Those form 1 big piece). Also note where the parts connect.
At least that’s how I would go about nimbering them.

In regards to splitting. To be honest i do de t know a good way to figure out if the shape fits in 2x1m limit, if not → split or split it by a predefined amount.
But in case you will do this manually, you could fit the rectangles (wood board size) over your pieces and split them. Afterward you could take all the straingt (top) parts together, each one named 1a,2a,3a… And using openNest you could fit them into sheets.
The. Do the same for parts 2a,2b…
So at least you have an order.
Otherwise I think it would be difficult to try to fit 1 whole piece into a few sheets + you might waste a lot of material.
At the end, you might need to manually move a few pieces as you might notice it could be even more efficient, depending on the result. I could try smth once I get to my laptop, that if nobody else does it meanwhile.

yeah that’s what i was imagining, i was pretty hard headed on trying to create magical algorithm for this intership. just imagine if on my first days i came to work with a grashopper file that you just input any shapes and the whole thing did everything by itself.

Right now im starting again this time doing things like you said. splitting each big curve into an arbitrary number, and then organizing first all the 1’s (1a, 1b, 1c) and then doing the same for 2,s 3,s etc.

I think this should be much easier and would still save some time.

I’ll post any advances i get done during these hours. :slight_smile:

See above:

  1. One plaque dimension
  2. How many plaques you need in XY
  3. Total boundary of the plaques
  4. Total quantity of the plaques

See below:
So here, every rectangle is a plaque.
My idea was to give every plaque its cutting potion and assembly them in the end.
But now I see this is an impossible plan.

To be honest, you could also split the L and have the “I” and “_” (split it at the 90° angle) and from there you just have really long “strainght” (mostly) shapes.
Cut them to the maximum length (2.35m → ~ 5cm margin left at both ends).
From here you end up with a bunch of lines that need to be placed on boards, which is easy with openNest. Hope this helps.

hello again, little update, so i’ve changed the way to solve this problem a bit differently, now i understand that there were a couple errors in my logic previously, it would be impossible to make gh not only choose where to cut, but also organize.

Also in terms of cutting these pieces, it would make no sense to have teeny tiny pieces just cause it would save material, there would be now way to unify them.

What I’ve attempted to do now is work with only 1 piece thats already baked (and also organize my file sorry again @Quan_Li ), later i’ll make it automated once i figure everything out . If you look at the file i’ve created a grid from point 0,0 and am trying to see which would be the best way to cut.

Then i tried to split the surface and extract the borders with this grid, but it gets weird when splitting. it created a bunch of extra pieces and i don’t know why, maybe an issue with the culling of my grid cell curves?

And finally i tried to start an alphanumeric sorting section but i wasn’t really figuring it out and had to stop. This in order to not lose track of all these pieces which are very similar and there will be many off.

parametricbench walllll edited v1.gh (837.9 KB)

You can move objects using mouse in GH with the plugin called Gumball. In this way, you don’t need to bake geometry into Rhino.

Why Gumball moving inside GH?
In this way the plaques will not lose their sequence, I think this will benefit the addition of serial numbers to pieces of the plaques later.

As you can see I bumped up the spacing much bigger, that is for giving space to adjust them manually.

@Quan_Li @adbizau Hello again, terribly sorry for not logging on before hand. Unfortunately i think that what i want to do is not possible in its entirety. the nesting options work great for small pieces that need to be oriented within a single plaque, but for these bige sizes i don’t think it could do the job correctly.

I still have to manually choose where the shape will be cut in order for the weight distributions and big curves to be cut optimally. (one big curve fits as much as possible within one plaque).

I won’t be continuing this grashopper script as off right now, i’ll probably start toying with it again when a work project calls for it.

But right now i just wanted to thankyou, i’ve learned quite a bit. Its kinda frustrating to not have reached a solution, but when i’ll do i’ll continue the thread.

Just wanted to aknowledge and thank you for helping :slight_smile:

If you have a slolution or update, come back to this thread again and let us know. It is very interesting case.

1 Like