Bake objects to layers with new Native GH components?

Hi guys,

I am struggling to replicate what was possible with plug-ins such as Elefront with the new native GH components…

Is it possible to bake objects pressing a button to assigned layers and have those objects get color and material properties all from the layers?

I was doing it like this with latest Elefront version. I can just press bake and the objects are baked to their layers.

I also did that exclusively with Elefront until R8 was out
then R8 shipped with a new set of GH components that allow a very good handling of baking, updating, retrieving and filtering geometries, layers, blocks, object properties from the Rhino document

so, in short :slight_smile: if you are on R8 I very much think you can do all those things using native R8 components from the Rhino GH tab

Yupp, that is what I am trying to do, I just don’t know how :laughing:

This post talks about how to assign layers and other attributes to objects. Rhino 8 Feature: GH1 Is Now More Than Just Geometry!

In addition to the docs that Andy shows, here is the Rhino 8 components throwing objects on different layers and displaying with different colors. Material could also be assigned.



Another question, how can I create Text with existing Annotation Style from Rhino?

I have queried the annotation styles in document, and I have created my text, but how do I tell GH that the text needs to have this annotation style?

This is terrible guys.

Guess I am back to using Elefront.


Groups are not considered geometry and are more of a selection set than anything. A unique grouping of various model objects.

I’ll see what we can do in supporting those as model objects.

Annotations Style Overrides


Thank you for both!

New question, how can I convert each of the inputted objects to blocks?

For instance, if I have a list of 20 breps, have each brep be a new block and bake its instance in place.

I have been trying like this but it does not seems to be working :frowning:

Example here: (4.8 MB)

I was able to do it like this with Elefront. And I have to say I have never used this new version of elefront but it was intuitive.

The example file sent runs well on my Rhino 8.7 build. I hit the Push/Pull button to create and insert them into Rhino. Here is the example:

As for layers, the objects can be placed on layers before putting them into the Block definition. And the inserts themselves can be put on layers by running them thru the object model component. Here are the blocks being inserted on layers named the same as the block. Made it easy:

1 Like

Oh, it baked by default on a locker layer? That must have been why I thought it did nothing. Thank you!

Edit, regarding this…

How can I define the block base point?

Right, without a layer specified it makes a default one.

I like to set a panel on the cache output to check the results.

The base point is the transform input on the insert component. While a point will work, inspiring a plane will control insertion location and rotation.

1 Like

Block definitions always use the Origin {0,0,0} as its base point.

Thanks for this Scott.

I think the Block Definition is needing an input for layers? I want to define blocks independent of the Rhino layers the rhino objects are in.

Also a way to define its base point/base plane.

Elefront Block Definition does just that. Notice the “Attributes” input which lets you define layers.

With Rhino 8 the attributes are attached to the Model Objects directly. The model Object component is the trick.

Here is an example of creating a block with elements on layers, then also inserting that block as an instance on a specific layer:

Here is a guide about them:

But any questions you have we would love to hear them.

1 Like

Thank you, that works, awesome!

Appreciate it! Now that you mention it, what would be the best way to get layer names to build upon? Basically I am copying model layer structure and rebaking to GH_Blocks and duplicate layer structure inside of it.

I managed to do it but I feel like I am using too many components and should be more straight forward?

Here is the way to do this. Not sure it is exactly the correct way as it took me a while to find it. I almost believe the Layer Name property should do this by default.

But by using the Content Details component the full path can be harvested for the layer. Also the other attributes can be found to.

But also a great way to create new layers with all the same attributes but a new name use the Duplicate Content component (under the Rhino toolbar in Grasshopper). This will create a new Model Object that matches all the attributes of the original, but without the ID.

A useful concept is if the ID is kept with the Model object and the Content Cache is used, then the Content Cache will REPLACE the Layer with a new name. If the input information does not have an ID, like the example above, then the Content Cache will create new layers from that final layer list. This can be seen in the final panel that the Layers exist in Grasshopper, but no ID is listed for each of them.

Because blocks needs to be at 0,0,0 as insertion point. Then the objects should be moved to 0,0,0 when making a block definition. I do something like this.

1 Like