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 states that all apartments are required to have primary balconies as follows:


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 ‘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 particularly example, the project was setup using a shared parameter called ‘Apartment Number’ which is used as the default value to the ‘apartmentNumberParameter’ input. This is 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, the rooms are grouped together 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.