How to attach/process metadata for branches and items?

With apologies for not having an example – I’ll build one of the text description isn’t clear enough.


  • I’m building a set of modular components to create and modify designs for 3D printed ceramics. These components are assembled in arbitrary orders – for one design, a surface morph might be applied before a panelization, for another design in the opposite order.
  • The grasshopper file is loosely split into three sections: base shape generation, shape modifications, and slicing/gcode creation for printing
  • I need a way to attach metadata at any one of the early stages that can be consumed and acted on during subsequent sections. This needs to be independent of the tree structure, because depending on components used the tree will look very differently

For instance, vase-like designs typically have a 4mm thick floor, and the curves or brep representing the floor should see a different extrusion rate than the walls of a vase. I’d like my slicer to be able to look at input items and determine if they are part of the floor or not.

Similarly, after applying a projected image to offset a number of points on the side of a piece, I’d like to be able to mark those points as “do not adjust further during subsequent stages”, so any smoothing or texturing doesn’t change the points that are part of a picture.

I’ve got two ideas, and I don’t know if either are possible:

  1. Metadata attached to items and tree nodes with getters/setters
  2. Object IDs that I can build lists from and then check if a given object is in a list

Am I thinking about this correctly, or is there a more grasshopperesque way to approach this?

Using Elefront you can maintain as much Rhino UserData through the process as required.

There are a number of users that use this or similar process, so plenty of posts to get you started.

If you post a desired workflow and some geometry i can show you how it could work.