Min balcony size

As part of the SEPP65 requirements in New South Wales, balconies for multi-residential buildings must meet minimum area and depth requirements. Section 4E ‘Private open space and balconies‘ in the Apartment Design Guide state that all apartments are required to have primary balconies as follows:

Dwelling typeMinimum areaMinimum depth
Studio apartments4m2
1 bedroom apartments8m22m
2 bedroom apartments10m22m
3+ bedroom apartments12m22.4m

The ‘Room.SetBalconyCompliance‘ node as part of the BVN Dynamo package helps to automate the process of verifying compliance of the minimum area. Note that the minimum depth is not tested and this needs to be undertaken separately.

Before using the node, firstly ensure that there are no redundant rooms in the project as the area of these rooms will be incorrect and skew the results.


The node first collects all rooms in the project using Lunchbox’s ‘Room element collector’. The corresponding apartment numbers are then collected. It is assumed that the apartments and their corresponding balcony have been numbered the same. For this particular example, the project was set up using a shared parameter called ‘Apartment Number’ which is used as the default value to the ‘apartmentNumberParameter’ input. This parameter is required because if you use the OOTB parameter ‘Number’ to group apartments and balconies, you will receive an error, ‘Elements have duplicate “Number” values.’

Next, we need to determine the dwelling type, that is, 1-Bed, 2-Bed, etc. For this example, the ‘Occupancy’ parameter is used as the default input to ‘apartmentNameParameter’. Once the apartment numbers and apartment names are known, they are grouped to represent all the rooms within the apartment, both internal and external.


Once grouped, the rooms are filtered by the ‘apartmentName’ input, for example, ‘1 BED’, ‘2 BED’, etc. The balconies from these dwelling types are then extracted and the area calculated and compared to the ‘minSize’ input. All balconies are first reset to be non-complying. Next only the complying apartments are updated based on and the shared parameter defined in the ‘sharedParameterName’ input. By default, the sharedParameterName input is set to ‘Balcony Compliance’.

3 Comments on “Min balcony size

  1. Hi Paul,

    I have been going through the tutorials on your blog and been converting them into pyRevit scripts, great content by the way! I would be happy to share these scripts with you if you would like.

    I have been particularly interested in this tutorial as I am curious to know whether or not you have developed this further to include room & living room minimum standards.

    I noticed that the min depth standard is not included in the script, I assume this is because room objects in Revit don’t pick up objects that would encroach on the “usable” space as defined by the standard (Wardrobes, etc). Therefore, throwing off the calculations of min max and depth dimensions space of the room.

    Do you think it would be possible to automate standards checking if some assumptions can be made about the room objects being assessed?

    For example, a human designer uses the “Room seperator” tool in Revit to accurately define “usable” space in each room. Which the algorithm picks up on, iterating through each boundary segment length.



    • Hi Kai

      I like that phrase ‘human designer’ :). Yes it would be great if you could share the pyRevit scripts. Thank you.

      All of the standard compliance should be able to automated, but no, I have’t developed it any further (yet). I focused on balcony area, as balconies can be non-standard and so there is likely greater variation compared to apartment layouts. To get the minimum dimensions is more difficult than simply getting the bounding box. It can be done though of course.

      For the apartments, in the past I’ve used a model group (or family/Revit link), which is then copied around into position. It is much more standard so the ROI is more difficult. Storage length can be calculated via a length based family for example. And yes if you use room separation lines you can get the room area exclusive of storage to calculate the minimum dimensions. However typically I only use 2 rooms – one for the balcony and another for the apartment. I don’t have separate rooms within each apartment (bedroom, bath, etc). This makes scheduling easier but also makes automating apartment dimensions basically impossible. In the end, it probably comes down to how many apartment types you have. If every single one is different, automation would be useful. If you only have 10 or so types, it might not be worth it.

      Does that help?

  2. Thanks for that, It has given me a few ideas. I’m going to have a crack at automating the Victorian apartment standards, sounds like a tough one though… I’ll let you know how it goes.

    I’ll send you an email shortly with the pyRevit scripts 🙂

Leave a Reply

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