When designing apartments, often it is necessary to understand the relationship between an apartment and its external areas. However, in Revit, only elements of specific categories, such as Doors and Windows, have this functionality built-in via the room calculation point. This tutorial demonstrates how we can use this approach on Curtain Panels to renumber balconies and terraces based on their associated apartment.
Background
Understanding the relationship between an apartment and its external areas is frequently required for compliance testing. For example, section 4E of the NSW Apartment Design Guide requires that minimum areas and depths be achieved for private open areas. These requirements are based on the dwelling type:
Dwelling type | Minimum area | Minimum depth |
---|---|---|
Studio apartments | 4m2 | – |
1 bedroom apartments | 8m2 | 2m |
2 bedroom apartments | 10m2 | 2m |
3+ bedroom apartments | 12m2 | 2.4m |
The problem
Within Revit, it is not easy to ‘pair’ rooms. Some elements, such as Doors and Windows, have this functionality via the room calculation point that returns the to/from room properties. However, most architects choose to use a Curtain Panel nested within a Curtain Wall to represent a glass sliding door when it comes to balconies and terraces. The problem, therefore, is that Curtain Panels do not have a room calculation point, and so another method of paring rooms is required.

Using naming conventions
One of the most common ways to represent room associations is through naming conventions. For example, an apartment might have a Room Number value of ‘101’, while its corresponding balcony might have a Room Number value of ‘101.B’. Suppose the apartments have already been sequentially renumbered using our Renumber Rooms Dynamo graph. In this instance, we could repeat this process by drawing our spline through the balconies instead of the rooms. The problem with this approach, however, is that it assumes that every apartment has one balcony.

However, this is not always the case. Some apartments may have no balconies, while other dual aspect apartments may have two balconies. As a hack, we could run the renumbering process in batches and modify the prefix. But this is tedious and error-prone. A much better solution is to ‘read’ the apartment’s Room Number and push that data to their associated balconies.
Renumbering balconies with Dynamo
Parametric Monkey has developed a custom Dynamo graph to achieve this task, available as part of our Dynamo Package Development service, which can be run within Dynamo Player. Before running the graph, verify that all rooms’ upper limits are correct to ensure the proper apartment/balcony paring is achieved.
To run the graph:
- Specify the Family Type which defines the balcony door. The type should be of the category Curtain Window.
- Define the apartment room filter. Only room names that contain this filter will be included.
- Define the balcony room filter. Only room names that contain this filter will be included.
- Define the terrace room filter. Only room names that contain this filter will be included.
- Specify the room parameter of the balconies/terraces to be modified. Typically this will be the room Number parameter. However, a shared parameter can also be used. If using a shared parameter, it should be of type Text. Moreover, if rooms have been nested within a model group, the parameter must have enabled: ‘Values can vary by group instance’.
- Specify the room parameter to identify the apartments. Typically this will be the room Name parameter. However, a shared parameter can also be used. If using a shared parameter, it should be of type Text.
- Define the suffix to be applied.
- Press Play to run the graph.
Computational logic
The graph collects all placed rooms in the model, then filters the rooms based on the apartment room filter. The room’s bounding elements are then calculated and filtered to only return curtain wall elements. If no curtain walls are found, an error is returned.
The associated curtain wall panels are then calculated and filtered based on the balcony door family type. The location of the balcony door family is then determined and offset. A containment test is then undertaken to determine any adjacent rooms. In other words, it returns the apartment/balcony pairing. This workflow is a geometric process since Curtain Panels, unlike Doors and Windows, do not have a room calculation point that returns the to/from room properties.
The balcony/terrace rooms which have been renumbered are returned. If multiple balcony door instances are present, this will not affect the graph so long as they open onto a balcony/terrace room.
Conclusion
While Revit affords some capabilities in pairing rooms, it is far from extensive. However, using automated routines such as this one afforded by Dynamo, it is possible to speed up your documentation and compliance checking and overcome Revit’s shortcomings. To find out more about our Dynamo Package Development service, drop us a line and discover how we can automate your Revit workflows.