Void forms

3 min read

This tutorial explores the various workflows to create complex void forms within Dynamo. The original design intent was to create a diagrid structure, known as the ‘structural tubes’. These structural tubes are based on a NURBS surface which was generated by a loft between rotated ellipses. (For more about this methodology, refer Dynamo Structural diagrid tutorial). The void form, which allows the structural tubes to pass through the floors, is a simple offset of this base surface.

The first problem in using Dynamo to generate this type of geometry is that Revit does not create closed NURBS curves. This problem is a well-known limitation of Revit. While Dynamo can create closed NURBS curves, if you want to generate Rhino geometry from it, generally you’ll need to break the closed curve into two pieces using the ‘Curve.ParameterSplit’ node.

Option 1: Import Instance in project

The first option explored was to have Dynamo pointing to a project. In this scenario, Dynamo will allow you to create an ‘ImportInstance.ByGeometry’ from the solid. However, once created, the ‘Cut Geometry’ tool will not work when trying to cut floor plates with the import instance. This methodology is, therefore, best avoided.

Option 2: Form in family

The second option is to have Dynamo pointing to a family, say a conceptual mass family. In this instance, Dynamo will allow you to create a ‘Form.ByLoftCrossSections‘. For this to work as desired, you’ll need to set the family to ‘Cut with voids when loaded’ under the family category and parameters.

Within Dynamo, we can then build in functionality so that the form is a void instead of a solid. This change is done with the ‘Element.SetParameterByName’ node. Once the void form is generated, the family can be loaded into the project and utilising the ‘Cut Geometry’ tool; the mass will cut the floor plates.


Having experimented with different forms, it was discovered that this workflow was not always successful. It is unclear whether this failure was due to the Dynamo version being used (0.8 vs 0.8.2) or because of the geometric complexity of the void. Rhynamo was also explored as a possible solution. However, while the form was able to be imported into Dynamo, you were then left in the same scenario as above. There was no ability to use that form to cut the floor plates. 

The most robust method was to use an in-place generic model (not an in-place conceptual mass). This process involved importing a *sat file generated from Grasshopper, exploding the geometry, and setting the ‘solid/void’ parameter to ‘void’. The cut geometry tool can then be used to cut the floor plates. Since it is not currently possible to create an in-place component due to Revit’s API limitations, it is impossible to use Dynamo to automate this workflow.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Add Revision to sheets

Add revisions to multiple sheets

A simple Dynamo workflow for adding or removing a revision to multiple sheets simultaneously in Revit 2022 or lower.

Create Internal Elevations with Dynamo

Create internal elevations

Generate elevation markers and corresponding internal elevation views using Dynamo based on rooms and their bounding wall’s orientation.

Sync Room Parameters

Sync room parameters

A Dynamo workflow to synchronise instance-based room parameters, such as apartment number, nested within a Revit model group.

Rhino Inside Revit for Dynamo users

Rhino.Inside Revit for Dynamo users

Learn some of the key differences between Dynamo and Rhino.Inside Revit and discover the benefits of migrating certain Dynamo workflows to Rhino.Inside Revit.


© 2023 Parametric Monkey
Parametric Monkey and the Parametric Monkey logo are trademarks of Parametric Monkey Pty Ltd.


Drop us a message and someone from our team will be in touch with you shortly.


Thank you for your interest. Someone from our team will be in touch soon.


To find out about upcoming public workshops or to organise a private workshop, please submit the following contact form and we’ll be in touch soon.