OpenNest - How do I make group Internal Part Geometry?


First off I would like to thank you for all of your effort put forth in making this opennest tool. The possibilities seem endless, and this is a great contribution for the community.

I am hoping to use this tool as a module in a C# project to help automate quoting and printing dry fits.

Our parts will very often have internal cutouts or other routed lines. I would like the nested layouts that opennest creates to include the include the internal features. Most of my attempts from browsing this forum and other online resources seem to only work with surfaces or polylines and I cannot get them to work for me.

In the attached example I think I am getting pretty close by using merge and transform to match the internal geometry on top of the outer geometry.

I realize this is not an opennest issue, but rather a lack of experience with using grasshopper. I am hoping you might be able to point me in the right direction.

Thanks in advance.

45327.3dm (10.6 MB) ! (36.2 KB)

The problem was that you were giving the list of internal lines as a flat list to the transform component. But you had 3 transforms. It was moving all of the internal lines with the first transform. Here’s how I would fix that for this situation:

For each of the internal lines, get its centroid, so we can check which internal curve is in which outer curve. Then dispatch the list so you have 3 lists of internal curves, one list for each outer curve. Then do the transforms when your datatrees match up. This would fail if you have a centroid that falls outside the outer curves, so watch out for that. You’d have to come up with another way of testing curve inclusion. (15.8 KB)


Your suggestion works really great. I appreciate your input.

I don’t really foresee a scenario in which the centroid would be outside of the outer border. However we do commonly have cutouts in our geometry on the route layer. Opennest seems to be looking at the internal geometry on the outer route layer

Yesterday I tried fiddling around with grasshopper and could not find a way to either remove these cutouts from the nesting engine or have them nest together with the outer geometry.

Today I am going to try and experiment with using the ‘cull index’ to only keep the largest geometry. If that does not work I was going to try to create a rhinoscript that can offset a group of curves with an arbitrary offset and use that Geometry in the nesting engine.

I’m not sure if you had any recommendations on how to deal with this issue?


45327.3dm (10.7 MB) (36.2 KB)

One way to do this.
In such a way you can keep layer structure as well. (37.2 KB) 45327_.3dm (10.6 MB)