During the latter stages of a project, architects may be required to produce interior elevations of particular spaces/rooms in a building. These can be key to show furniture layouts or in some instances small power and data positions.
Revit allows the user to create interior elevations by placing the elevation marker within the internal space of rooms. By doing so, it automatically constrains the view to the begin at the finished floor elevation and stop at the ceiling.This speeds up the method of cropping the created elevation however if you are working in a large model, where interior elevations are needed for a large quantity of rooms it can be quite a tiresome process manually placing all these elevation markers.
With a tool like Dynamo we can access the API of Revit to systematically do this manual process for us. The next few paragraphs shows an overview of the completed script, with instructions and how to use it on your projects. The link to download the script is at the bottom of the article.
As with all the scripts produced by designtech, we use the same standard company Dynamo template. This creates some consistency across our definitions to allow a more user friendly interface. Please see our previous post for for a better understanding of the colour scheme and notes found in our template.
The first required input in the definition is to ensure the category of ‘Rooms’ is selected in the drop down. This is set as the default value, but just ensure it is as the image below.
The second input requires the user to specify whether they wish to separate rooms in the script by their level. There is a boolean toggle that determines whether the script runs on all rooms at every level or only rooms on the specified level. By changing the toggle to ‘True’ and then selecting the required level from the drop-down, will ensure the script only runs on rooms on that particular level.
The third input allows for a greater level of flexibility to choose whether the script includes all room types. Again there is a boolean toggle to decide whether the filter is applied or not. This filter works by filtering the ‘Name’ parameter in rooms to the searched strings. We can apply as many room names we may wish to remove from the definition by just wiring them up into the List.Create node. As an example we may choose to not create interior elevations in rooms such as corridors, stores and lifts.
The fourth required input in the definition is to ensure the element type of ‘ViewFamilyType’ is selected in the drop down. This is set as the default value, but just ensure it is as the image below.
The fifth input allows us to control further constraints in regards to the created interior elevation views such as their default view scale and a prefix.
The last input is a boolean toggle which acts as a further measure to ensure the script isn’t run by accident without completing the the above steps prior. This is set by default to false so will need to be changed to true to run the entire definition. This script uses a fair chunk of code wrote in Python to interact directly with the API of Revit so having a toggle to run this part is good practice.
That concludes all of the required inputs to run this script. There is a couple of features within the workings of the definition that I want to briefly touch on. At the beginning of this script the nodes sort the rooms by Level and then Number. This wasn’t critical but just means the rooms will be listed in a sensible order when the views are created. This process uses a custom node called ‘Rooms.SortByLevelAndParameter’ from my package Zebra. The reason I created this custom node is because I often find myself wanting to sort by the elevational height of levels and then by the room number within each level. Using the built in sorting function for levels sorts them by their element ID rather than their elevational height.
There is also a similar node in the Zebra package that works on elements rather than rooms, called ‘Elements.SortByLevelAndParameter’. An example of both of these nodes in action is below. For the elements node the additional sorting parameter can be either type or instance.
As stated earlier a large proportion of this script is handled in the Python Script node. The required inputs are as follows:
IN = View Family Type
IN = Rooms
IN = Default View Scale
IN = Interior Elevation Directions – 0: West, 1: North, 2: East, 3: South
IN = Prefix
IN = Boolean Toggle to Run
After creating the elevations using the inputted view type for each room the script renames the views based on the specified prefix and then RoomNumber-RoomNumber-Direction, to ensure the rooms are consistently named.
This script is part of a much larger definition which then takes all the created views and applies particular view templates, creates individual sheets for each room and places the views on the titleblocks. If you are interested in exploring these options or any other additional features then please don’t hesitate to contact us firstname.lastname@example.org
Below is a link to download the definition.
Lastly a special shoutout goes to Konrad Sobon who developed this definition alongside me when we both worked together.