SEPP65 solar access

SEPP65 solar access analysis – Part 2

6 min read

After you have done a preliminary SEPP65 solar analysis to test a building’s massing, you can begin to plan out apartment layouts in Revit. Once this is done, and the size and location of every living room and balcony is known, it is necessary to undertake a detailed SEPP65 solar access compliance check. In this instance, the analysis is being used to verify compliance as opposed to informing the design process. Due to the limitations of Dynamo, this tutorial will illustrate how to extract Revit rooms for analysis in Grasshopper and Ladybug before pushing the results back into Revit for scheduling. To see how this can be done in Rhino.Inside Revit, refer to this tutorial.

Step 1: Extract Revit rooms

Firstly, ensure that each apartment and balcony is a Revit room. Ideally, these should be numbered logically. For example, the balcony to apartment ‘1.01’ is ‘1.01B’. While this isn’t critical, it will help with scheduling once the analysis is complete. You can use the ‘Room.RenumberByModelCurve‘ node to automate this process. Also, delete any unplaced rooms by going into a schedule and deleting rows as necessary. Next, we’ll use the ‘Room.ExportToRhino‘ node from the BVN Dynamo package. This node requires three inputs:

  • File Path – This should be pointing to a blank Rhino file (*3dm). WARNING: WHEN EXPORTING, THE SCRIPT WILL OVER-WRITE THE RHINO FILE. It may, therefore, be prudent to set Dynamo to ‘Manual’ instead of ‘Automatic’ and ensure that you write to a blank document. 
  • LayerName – This is the name of the layer that will be created in the Rhino file.
  • Z translation – This is an optional input. If applied, the room outlines will be moved in the z-direction. The SEPP65 policy requires that solar access analysis occurs at 1m above the finished floor level. 

The ‘Room.ExportToRhino’ node uses the LunchBox and Rhynamo plug-ins developed by Nate Miller. Rooms are first collected using LunchBox and their boundaries extracted and converted into closed polycurves. These are then moved up according to the z translation input. In this instance, we are using 1000mm from the finished floor as per the SEPP65 requirements. Rhynamo is then adopted to export the polycurves to Rhino, naming the newly generated Rhino objects the same as the room number it was derived. Ensure the Rhino file is closed before running the Dynamo script.


Step 2: Extract Revit context

Once the rooms have been exported, it is necessary to export the context for the solar access analysis. The easiest way to do this is to set up a 3D view within Revit. Using Visibility Graphics (VG) in conjunction with worksets and filters, turn off any unnecessary geometry. Essentially all we require are party walls, floors and roofs. Extraneous geometry such as planting, furniture, doors and mullions can all be hidden. Windows are effectively transparent and therefore, can also be excluded from the analysis. The same also applies to glass balustrades. However, since these are often modelled as a wall, you will need to set up a filter to turn off only the glass balustrade wall types and not all walls. It is critical that the context model be as clean and minimal as possible to minimise computational time later in the workflow.

Once you are satisfied with the extent of the context, this can be exported to a *dwg file for import into Rhino:

  • In the newly established 3D view, go File > export > CAD formats > *dwg. Hit the ellipsis under setup. 
  • Under the solids tab, ensure it is set to ‘ACIS solids’. This setting will allow Rhino to import breps as opposed to a mesh and allow any errors or anomalies to be easily cleaned up in Rhino.

Step 3: Rhino import

Import the *dwg file into Rhino. The context should be positioned with the same coordinate system. Explode any blocks and merge all the context onto a single layer.

Step 4: Create analysis surfaces

Since the ‘Room.ExportToRhino’ node generated polycurves named according to the room number it originated from, a simple Grasshopper script can be used to convert the polycurves to planar surfaces, maintaining the naming convention.


This generation is easily achieved using Elefront. Note that you will need to graft the curves first as the boundary surface command reorders curves and therefore effects the data tree (refer here for more info). Remember to flatten the lists once the surfaces have been created. From here, we can bake the surfaces and use these as the input for our Ladybug analysis. In theory, this step should be possible in Dynamo. However, there is currently a bug within Rhynamo which means that when exporting the Rhino file, the resultant surfaces follow the bounding box and not the actual room outline.


Step 5: Solar Access Analysis

Now that we have the context and the analysis surfaces, we can run a simple Ladybug sunlight hours analysis to find the complying apartments. The results of this process are visualised via a duotone mesh.


Step 6: Export result to Excel

However, to evaluate if we meet the 70% compliance requirement, we need to be able to schedule the results. This requirement can be achieved by exporting the results to Excel using Lunchbox. Your Excel file should have a single column listing the complying apartment (or balcony) number. Since we used the newer version of ‘Excel Write’ from Lunchbox, headers are included. The headers are removed automatically in the next step in Dynamo.

Step 7: Import results into Revit

To import the results, use the ‘Room.SetSepp65Parameter’ node found in the BVN Dynamo package. The node is referencing a yes/no shared parameter called ‘SEPP65_Solar Access 2 Hrs min‘ which must be set up in your project. The only input required is the file path of the Excel file, which lists all the complying apartments. The Dynamo script will reset all the rooms in the project to ‘False’ before changing only those rooms that comply to ‘True’. You can then use filters in your Revit schedules to highlight apartments compliance.


Step 8: Visualise results

For a visual check, set up a colour scheme which is coloured based on the ‘SEPP65_Solar Access 2 Hrs min’ parameter. This colour scheme can then be applied to dedicated floor plans to illustrate solar access compliance.


To see how this methodology can be modified by replacing Rhynamo with Flux, check out this tutorial.


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.