Working with blocks

Blocks are important to reduce file size and speed up your workflow

Benefits of using blocks

The main advantages of block modeling are as follows:
  • Being able to modify all instances of a block in one operation.
  • Updating objects can be done from external files.
  • Saving space, as the different instances of a block do not increase the size of the file much since there is only one definition for all blocks in the file. All concurrency takes its data from the original definition.
Working with properly created blocks reduces the file size by about 80%, while allowing faster and more efficient modifications.

How blocks work

With the Block command, Rhino replaces the selected geometry with a block instance. It saves the block definition (the geometry selected to define the block) in the file. It is possible to insert as many instances of this definition using the Insert command, or by copying the block.
For more details on how to use blocks: Using blocks (McNeel Wiki)
To edit all instances of a block in the file, double-click on a block, or select a block and type BlockEdit. Rhino isolates the other elements (grayed out).
Once you have made the changes, click on OK to make the changes take effect.
Warning: Clicking on the cross (top right) to close the block editing mode does not save the changes.

Block composition

Taking the example of a simple window, the block will be composed of three polysurfaces (a sash, a frame, and a pane).
The two polysurfaces of the sash and frame will be placed in the Woodwork layer, while the glazing polysurface will be placed in the Glass layer.
The window block should be placed in the Blocks layer. This hierarchy is important because:
  • If we hide the Blocks layer, the blocks and all their contents are hidden. If all the components of the model are well arranged in blocks, hiding this layer will hide the whole model.
  • On the other hand, if we hide only the Glass layer, in the case of the example above, the polysurface of the glazing will be hidden, but the window sash and frame will still be visible.
  • This organization makes it possible to display, for example, a single material: the whole frame, or all the foundations, etc.
To summarize the way files are organized:
  • Layers are used to classify materials
  • Blocks are used to classify components
  • Blocks can contain sub-blocks
  • Sub-blocks must not contain sub-sub-blocks (the model becomes more complex to modify)

Modeling logic and construction grids

These advices are particularly relevant for prefabricated and industrialized architecture. Some other logic may be developed for renovation work or cast concrete structures.
During the modeling, the use of blocks is to be thought in coherence with the repetition of the elements. As soon as an element is repeated (a beam, a truss, a window, a door, etc.), it must be created in the form of a block. Thus, if the element were to be modified, it would be sufficient to modify it only once.
In parallel with this organization of repeated similar elements, it is important to set up the constructive grid of the project.

Facilitate modeling: make one or more blocks unique

Modeling with blocks can sometimes seem laborious, since it requires naming the block and placing it in the right layer each time it is created.
To avoid this, it is possible to use the BlockTools plug-in (see installation instructions here). After installing this plug-in, the MakeUnique command is added to Rhino. This command allows, by selecting a block, to make it unique. It thus becomes differentiated, and can be modified independently.
This method is particularly useful when you want to create a block from another, for example by changing only its scale.
The same command works if you select several similar blocks, and enter MakeUnique: all the selected blocks become a new instance of a block.

Checking blocks organization

It is sometimes difficult to always arrange the blocks in the Blocks layer. To check that all blocks are arranged in the Blocks layer, it is convenient to make a selection of all blocks, with SelBlockInstance, and put them in the Blocks layer.
It is also possible with this method to check which elements are not in blocks, by doing SelBlockInstance, then Invert to reverse the selection. The resulting selection are not blocks.