Blocks and instancing

A Rhino block definition becomes a Blender collection inside BLOCK DEFINITIONS. Each block instance becomes an empty with that collection as its instance source. Five hundred placements of one chair store one chair's worth of mesh data.

Nested blocks are rebuilt with Rhino's own structure: a block inside another definition becomes a collection-instance empty inside the parent's collection, so the child's mesh data is still stored once. This works at any depth, with a 16-level guard against cyclic definitions.

Layers inside blocks. Geometry inside a definition keeps its own Rhino layer, mirrored as sub-collections inside the definition collection. Material-by-collection workflows reach block contents without exploding them.

BLOCK DEFINITIONS ▸ BY LAYER groups that same geometry a second way: one collection per Rhino layer, holding every block's geometry on that layer, across all definitions and at any nesting depth. Assign a material there and it covers the layer in every block at once, instead of once per definition. The objects are linked into these collections, not copied — the material lands on the definition's own mesh, so every instance of every block picks it up, and the groups sit under the hidden BLOCK DEFINITIONS parent, so they add nothing to a render.

Nested-block empties are deliberately left out of the groups. Such an empty stands for a whole child definition whose own members carry their own layers, and those members are already grouped by the child's own build; grouping the empty as well would let one layer's material repaint the entire child.

Blender de-duplicates collection names globally, so these often read as Wood.001. The authoritative key is the rhino_bd_bylayer custom property, which carries the unsuffixed full layer path.

Assigning materials to blocks. Either use the BY LAYER groups above, or turn on Show block definitions in preferences, select the geometry inside a definition, and assign. Both apply to every instance of that block and survive later syncs. Turn the preference back off before rendering — the definitions are instancing sources, and showing them draws each block an extra time at the origin.

When one instance must differ, select it and use Make block real. It becomes an ordinary mesh, detached from the sync, that you can treat however you like.