Labelling flattened faces

There is a helpful “topology” node that helps label various aspects of a brep before it is unfolded. See attached screenshot and attached file.

Just show raw point information and face (19.3 KB)

Is there a way to generate similar labelling for at least the faces of the flattened version of the brep? I realize there would not be an identical function for the points or edges, since there number increases through this flattening operation.

I have enjoyed using the “label” feature of the unrolled surface command in Rhino but I have not found any similar functionality in Grasshopper…except for the seed of it in this topology feature. I would like to expand the previous Rhino unrolled labelling to include dihedral angles (see sketch below).

Labelling the new individual flattened breps and coordinating these with the faces of the original brep seems like a good place to start with all this. Any help with helpful nodes is greatly appreciated.

Hi @Michael_Cobb,

Here’s a custom GHPython component of mine that let’s you use Rhino labels in Grasshopper!

You can tag everything you want with custom information, colors, fonts, etc. :slight_smile:

The tags are really created when you set the Tag input to True, and deleted when you set it back to False!

I don’t have TT Toolbox installed. I’ve thus substituted the Unroll component with the one from the OpenNest add-on.

Just show raw point information and face info (21.0 KB)


This looks really promising. Between your plug-ins and mine…and the fact I am a dinosaur working on Rhino 5, the technical problems are proving non-trivial. I’m attaching my best attempt at your routineg. I did my best to get your “unroll” function going but in the end, had to resign myself to the reality that you may just be using a more advanced version of Rhino than me. My lunchbox “Unroll” didn’t look the same (fewer buttons), and the open nest plug-in I was using didn’t have an Unroll node. Not sure what I’m doing wrong or what I’m missing. In anycase, I did try using the unfold node and an old version of the Lunchbox “unroll”, but just could not get all the vertices on the flattened shape to get receive labels. Any idea what I might be doing wrong is appreciated.

Just show raw point information and face info - variation for diff (19.0 KB)

Nevermind! I got it to work. For some reason the more recent version of Open Nest was listed farther down the page and I was loading an older version that lacked functionality. Thank you for your help.

I’m on Rhino 6, but that really shouldn’t matter for this. In fact, I believe that I even wrote the GHPython script, when I still used version 5. In Rhino 5, you still need to install GHPython manually, but you seem to have done that already. :+1:

One thing I’ve noticed and that you should pay attention to, is the numbering of vertices (and edges). Since you are unrolling, some vertices (and edges) - where the original geometry is split -, should be tagged according to the original, unsplit edge or vertex, and not like in my example above.
You may have noticed that the flattened model has some tagged vertices with a number that that doesn’t correspond to anything in the original model, which is kind of pointless.

Since, you seem to have downloaded OpenNest (and I still don’t have TT Toolbox), here’s how you could improve the definition:

Now, it would even be more beneficial if the corresponding, split vertices (and edges) had the same tag as the original ones, but that might be harder to do than the effort is worth.

You’re welcome!

Just show raw point information and face info (21.3 KB)

Thank you for the additional background. Yes, I was noticing the discrepancy. There are several layers to this aren’t there? Candidly, if I can get this to work the way I imagine it, it will be the resolution of decades of intrigue.

You’re right, I think many people would see it as more trouble than it’s worth but I’m a bit if a special case. :slight_smile:

I’ve done a lot of measurements on folding plywood after the plywood is weakened on its seam by a CNC machine and subsequently steamed. Because the fold is not a “crease” as much as it is a “bend”, there is a “growth” to the structure that requires a commensurate panel shortening as a function of the dihedral angle.

For this reason it is actual crucial to get this correspondence you mention and I hope to see what I can do to solve it. I know to do this it will require a growing knowledge of Grasshopper. I’m jealous of your ability to write python script.

I did imagine that I should establish a good unified normal test to get cross products working well for reliable dihedral angle calculations. It is easy to mistakenly get the complimentary angle to the dihedral angle and not get the dihedral itself. On the other hand, I have read some more strictly mathematical observations on the subject and I may have an idea that is less obsessed with fancy nodes and more with simple logic.

For example, a good character test of unified normals might be to simply see if all the edge descriptions of a given face have a sequence of vertex coordinates that never match the sequence of coordinates associated with an adjacent face (since this would imply an inconsistent counterclockwise, or clockwise, convention).

All for now. Appreciate the help.


i replace the phyton with text 3d and it works fine
am using rhino5
see the attachments
Just show raw point information and face info - variation for diff (22.4 KB)

1 Like