Voronoi 3D grasshopper sequence tagging

Voronoi 3D.gh (4.3 KB)
3D Voronoi .3dm (3.5 MB)

Hello and thank you for taking a look at this thread. I am trying to accomplish several things with this voronoi definition.

  1. Imagine this model as a 15’h wall. What is the most effective way to add a sequence of tags (a,b,c…1,2,3…etc) that would help guide putting this thing together in real life. Each piece fits together like a puzzle with a matching side. Since all of the objects are unique without a clear pattern, I will need to create a system of numerical tags in order to understand how to put it together. It would be great to have the tag number on the side where the two faces meet.

  2. Each object needs to be unrolled and a tag needs to be placed on its matching vertex so that when it is cut (laser, CNC, whatever) it is clear which side goes where. Does anyone out there know how each cell could be unrolled with a tag on each side in grasshopper?

  3. In one of the sample models I have an extruded “ring”, how can I designate the voronoi cells to populate only within that specific surface?

Thank you!

Welcome @Kat,

For this you can for instance use components from OpenNest. It has a component that generates specific, laser-compliant text, as well as unrolling, and packing components.
It’s available in the Rhino PackageManagerfood or on Food4Rhino.

Screenshot 2021-10-10 at 08.21.30

Yes, what you’d do is, construct the bounding box of the extruded ring, populate it with points, construct the three-dimensional Vornoi cells within the entire bounding box, and compute a Boolean intersection between the ring and each cells.

1 Like



Thank you for sharing, I appreciate your response, I was not aware of OpenNest!

You might need a plugin to generate the text for CNC, and might want to rotate the planes used by Text Tag 3D so the text is horizontal, but this is how I would approach labeling each surface piece (green group). There are a few cases (5?) where these fragments cross a seam so they are polysurfaces (“Open Brep”) instead of single surfaces (“Trimmed Surface”).

Voronoi_2021Oct10a.gh (41.3 KB)

Your Geo param is internalized in this GH file, no need for the Rhino .3dm file.

P.S. I forgot to insert a Match Tree component after the purple group (connected to the text panel below) and puzzled that it apparently makes no difference?

1 Like


Thank you Joseph! What plugin do you suggest? I am going to try the one suggested in the comment above.

I have no personal experience with any of them, so can’t really say. OpenNest, Bowerbird (BBText), Human (JustifiedText3d) and others have been mentioned to replace Text Tag 3D in similar contexts.

@Joseph_Oster I started to install opennest now grasshopper crashes when I try to launch and run

Paging @Petras_Vestartas

Thanks for tagging the developer, I’m on a deadline and was hoping to figure this out today :sweat:

I just installed OpenNest (2021-Jul-20) from here and it seems to have worked fine:

I don’t know how to use it but can see the components. So far, I don’t see any way to remove it? Hope I don’t regret giving it a try…

I hope so too, I have never encountered this issue before…

Since I didn’t read or watch any tutorials, I probably did something wrong but GH got stuck processing and wouldn’t return control of the canvas so I had to shut Rhino down.

Restarted, watched two minutes of the first tutorial here:

and starting to see some sensible results:

No luck yet nesting the output of the Unroll component but again, I haven’t completed the tutorials. Like sailing on a schedule, programming on a deadline is not considered “best practice”.

Joseph, thank for looking at this script with me, I really appreciate it and I completely agree, it’s never a good idea to rush these things…

Without completing the OpenNest tutorials (yet), here’s what I’ve got so far:

Voronoi_2021Oct10b.gh (50.3 KB)

OpenNest stuff is all off to the right. The teal group (top right) creates one sheet per branch, spaced out in the X direction because otherwise all branches are stacked on top of each other.

I tried a Crv parameter on the first Pack component because the OpenNest solver turns red with an error message otherwise, even though the nested breps look OK to me. This might be due to those 5 ‘Open Brep’ polysurfaces I mentioned earlier - or not?


The OpenNest Text component (yellow group) works to produce sets of curves for the text labels but doesn’t have the ‘J’ (Justification) option that Text Tag 3D has. And I’ve had no luck yet passing the text through the Unroll component.

Your first priority, of course, is removing and re-installing OpenNest. Can you type “PackageManager” in the Rhino command prompt and see this?

P.S. Two dimensional control of sheet size:

1 Like

I am reinstalling rhino once more, I will give it a shot and follow up, thank you!!

Re-installing Rhino? Why not just OpenNest?

Success! “PackageManager” was the only way I could access OpenNest, a little apprehensive to download it again but now that I see how to uninstall perhaps it’s worth it, thank you!

I’m always apprehensive about plugins. Be sure to install only the first one, dated 2021-Jul-20. The other one you had circled (in the other thread) is not used by PackageManager?

10+ minutes into the first video tutorial (I like to test acquired knowledge ASAP) and I got text on the nested pieces. It took two Transform components in series (bottom right).

As you can see, text labels don’t always fit on the small pieces.

Voronoi_2021Oct10c.gh (49.5 KB)

For what it’s worth, I added text alignment (orange group).

Voronoi_2021Oct10d.gh (47.6 KB)

Note that each piece is labeled twice, once by Text Tag 3D (cyan group) and once more by OpenNest Text (bright yellow group on the right).

1 Like