Rhino 8 Feature: GH1 Is Now More Than Just Geometry!

I love this and the possibilities it opens up. It would be amazing if native Grasshopper would allow for block creation/manipulation! As other users have said before, plug-ins such as Human and Elefront somewhat allow for this - but each have their pros & cons.

Blocks are currently my biggest wish for native Grasshopper!


Could the Construct Attributes component have a Boolean input for Bake as opposed to a right click? That way it could be more easily integrated into Grasshopper Player scripts.

We are working on a bake component so that is also on our roadmap. Good idea.


Comprehensive Text attributes and text dots would be helpful as Human and Elefront don’t always bake properly.


Currently, anothe huge pain are Text elements. GH can’t handle them and you have to jump through all sorts of Python/C#/VB hoops to get something useful going from GH to Rhino or vice-versa.

Importing Text elements from Rhino to GH, editing the properties (string, font, etc.) and then pushing it back into Rhino is a must. Will this also be included in any way since Fonts and Annotations are already planned (implemented?) and Text is basically a part of those?

@Jure_Česnik Can you explain a little more about what a “Text Element” is? Are you looking specifically at Annotation Dots? Or are you looking for tools to create Text Objects the way you do in Rhino?

Or, just Text? Or text in annotation including leaders and text dots? Or block attributes? Or user text? Or, Notes?

1 Like

Thanks. Just Text, not Text Objects (aka geometry) Right?

Yeah, just plain old Text. Sorry, if it wasn’t clear.

I’ll give an example, how I have to handle this in GH currently:
Since GH can’t handle text objects I had to write a GHPython script that shows “text” elements in GH as Surfaces so I can acutally see them in GH without baking anything:

This script then also takes in input for Rhino layer and “bake” Boolean parameter to create proper Rhino Text element with the same parameters as the surfaces that I see in Rhino. Just baking the surfaces only creates, well, surfaces in Rhino.

This is something that should be covered in one “plug’n’play” GH node that’s present in its basic toolbox and not something that requires a couple of hours to script and test out if it actually does what you want. For me it was more like three days as I’m not that well-versed in Rhino, scriptcontext and rhinoscriptsyntax libraries, while at the same time the documentation is not really extensive regarding DimensionStyle(), TextEntity() or AddText() and CreateSurfaces() in any of those libraries.

Without this functionality GH is almost useless for automatic Layout creation and populating your Rhino drawings with Text elements derived from GH analysis results (or anything else for that matter).

Hope this was a deep enough dive into the issue. :slight_smile:

I would like to see an option to delete the geometries from Rhino document that are internalized into Grasshopper, something like “Internalize data and delete original” or at least to move them automatically to a specified layer. 90% of the time I don’t need anymore the geometry that I do feed into Grasshopper from the Rhino document.


Also would be very useful that every component that can be backed to have an input or some sort of option for a boolean toggle, so I can activate the Bake command on multiple components simultaneously. Right now I do need to manually bake one by one a lot of different components. The actual workflow of Grasshopper it is quite time consuming regarding this subject. I do need to create a lot of notes and groups to highlight the components that I need to bake into a definition. A universal input or mechanism for components to be able to bake automatically multiple components at once will be a more elegant and useful solution IMHO.

Just this week I do faced a new challenge. I do received a DXF file from a client that contained a few dozens of shapes to cut and besides them some text elements with some descriptions. I imported the file into Rhino to prepare the shapes for manufacturing.

The text looks like this:

ITEM No-18

First I tought that will be an easy task to just import the shapes in Grasshopper and the text objects and create a definition that will split the text object in different parts and from there to create keys/values to feed into the “Attribute User Text” of the shapes.

Looks like there are no components that are able to import a Rhino Text object into Grashopper. And even if you can import somehow the text, there it is no way to split the text at a NewLine character (\n).

So, in the end I needed to do all the work manually.

1 Like

Very nice thanks!
As for the SubD May I know if it has incorporated the bevel vertex and mirroring with merge/ bridge like in Maya yet? I would be delighted to know so I can just stick with subD,
Thank you so much!

Hi @Macuso. Have you considered connecting all of the components that you actually want to bake into a Geometry Parameter (Params ->Geometry->Geometry)? By connecting all of the geometry you want to bake into a single parameter, you should be able to simply right-click on that individual parameter and bake that and it should add all of the geometry into your document with a single bake operation.
However, as said previously we are working on a new bake component so hopefully this is something that can be remedied in other ways as well.

1 Like

Hi @Macuso. Have you checked out the Text tools found under Sets->Text? There are a number of components that help manage working with general text elements. I tried looking at the example you posted and using the Split component to split the lines out using the Newline character, but I wasn’t having much success. However, I then realized I could simply right-click on the Text Panel and set it to “Multiline”. This essentially achieves the same thing and you don’t even need to do any parsing. The result is a list of text where each item in the list is a single line in your text block. Would this help you?

Hi @Jure_Česnik You make totally valid points. We need to do a better job handling text elements in Grasshopper. This doesn’t totally replace your existing workflow but there are some tools under Sets->Text that do help you work with text items once they are in Grasshopper. In particular, one component that you might find useful is the TextOnSurface component. It essentially handles the first part of your workflow (ie. creating the text surface elements). You can even use the new Font component (in the Rhino category) to specify the font you want to use. We still don’t have a way to construct text elements so that they get baked correctly to the layer you want… so that’s something I’ll include in our roadmap. But I did want to mention that there are some tools that might help you instead of relying on scripting your entire workflow. Hope this helps.
TextOnSurface.gh (12.3 KB)

1 Like

Thank you @AndyPayne.

I think this approach works if you really only want to have a graphical feedback when you’re creating drawings. Which is the goal in some cases, but not in all. Especially, if you want to export your “equiped” drawings to DWG or just import it into another software for other people to further edit and plot it. In this case you still need an actual Rhino Text element that behaves correctly.

Nice. And how you took the text from Rhino into Grasshopper? Because it is not about creating text in Grasshopper, it is about importing from Rhino into Grasshopper. I do checked all the text components and I couldn’t find any that have this capability.

If you go to Params/Primitive/Text and right-click on the components you will see that there it is only option to “Set Text” and “Set Multiple Texts” and don’t have any option to import Text objects from Rhino like do have the “Curve (Crv)” or “Geometry (Geo)” where if I right-click on this components I can select curves or geometries from the Rhino Viewport.

P.S: about the issue with not being able to split the text at newline character, I just found a component into the “Sasquatch” plugin that it is allowing me to do this. Even I can perform ReGex operations, which it is wonderful.

I am using not only geometries but also curves, texts and dimensions in my definitions as I do need to create technical drawings besides other things and I just want to connect a button into different components and trigger a batch operation simultaneously in multiple components.