Revit and Dynamo for Landscape Architects

Share this Article

This article will demonstrate how you can use Revit software for landscape architecture with some assistance from Dynamo extension. You’ll get an overview of how to use Revit software features such as families to provide typical symbols in plan while providing opportunities for visualization, scheduling to provide quantities, and tagging to annotate consistent information. 


Shortly after starting at BSA LifeStructures, I was approached by our landscape architects asking about Revit. I had a meeting with the design team to discuss what we do as landscape architects and evaluate if Revit would make sense for their process. As a group, we identified a lot of rework through a CAD workflow, our designer’s layout, and drafts of landscape designs in CAD. Our designers were providing design documents and presentation packages. To do this they needed to:

• Color the site plan in Photoshop
• Redraw the site in SketchUp to provide perspectives of the site
• Count plants to provide a cost estimate
• Update documents as the design changed

The conversations turned toward Revit and how it could benefit the landscape architecture workflow for the design and documentation process. A database of information backing a 3D design environment is what makes Revit powerful.

A database of information backing a 3D design environment is what makes Revit powerful.

How Can Revit Benefit a Designer?

By utilizing Revit on our landscape architecture projects, designers are able to produce construction documents with a live update to presentation graphics, plant counts, and cost. This is all possible because Revit is producing a building information model which is a 3D representation of a database. As something is drawn in Revit, that item with all of its associated data is stored in a database that is easily accessible. A database of information backing a 3D design environment is what makes Revit powerful.

The Database

A BIM model database is made up of type and instance tables for every category inside of the Revit model. The type table stores information about each family type of the category of the table while the instance table stores information about every individual instance of the type that is placed in the model for that category.

Confused? Here’s an example. An oak is a type of tree and is of the planting category inside of Revit. There is a table of information called Planting Types that contains data about each type of tree. A table can contain information like species, watering needs, root sizes, or even fall colors. Each oak tree that is placed in your project will be added to the instance table of the planting category. This table stores information like location, when it’s created, and if it’s demolished.

Because each individual plant that you place is tracked in the database, and each item knows what type of item it is, you have quantities at your fingertips. Revit allows you to combine related information. If you store the cost of each type of plant, you can add the cost for each of those plants in your project to give you the total cost of the plants needed. Using the information of the database allows for more correct documents and reduces error from manually counting. Having objects connected to information stored in the database provides an opportunity to create more informative diagrams, details, and drawings confidently, because what is displayed is correct and updates if the information is updated in the database.


Families and categories are two major concepts to understand when working in Revit. A family is a group of elements with a common set of properties called parameters. A category is the overall grouping of families inside of Revit, defining where information is stored in the BIM database. Planting is a category in Revit. A shrub would be a family of the planting category. Sagebrush, berberis, or boxwoods would be types of shrubs. Each family gives us the opportunity to define the geometric appearance of all of the types for the different view types in Revit.

Similar to AutoCAD blocks, families allow a Revit user to update the geometry inside the family in one location and have those changes applied to every instance of that family throughout the entire Revit project. Family parameters make families even more powerful. The geometry within a family can be associated to the family’s parameters making it reactive to input. Dimensions and materials are the most commonly used parameters associated with family geometry. Where the parameters can take this concept even further is in the use of formulas. Formulas can be added to parameters to drive the value in the given parameter. Formulas can read the values of other parameters and use conditional statements similar to Excel.

Root ball depth chart
Root ball depth chart.

We can do simple and complex formulas. If we know a family’s width is half the height of the family, the formula is height/2. What about ranges of sizes? Formulas can be used with statements where you can write: if(Condition, What happens if that condition is true, what happens if that condition is false). Something more practical to look at would be the chart below. We would use a formula that says if the diameter is less than 20 inches, diameter x .75%.

Screen capture

Visibility Graphics

In Revit, you have the ability to control the line weight, line type, and hatch pattern of each category and subcategory of object being cut by the view plane or not cut throughout every view in the project through object styles and control those same values at an individual view level using visibility graphics. View filters allow a Revit user to further control those same values by creating rules based on parameter information.

As an example, you can create a view filter that any plant with a diameter less than six inches be halftone. If all of that does not suit your needs, Revit users can control the same values on an individual element level by selecting a family in a view and overriding it and if that isn’t enough, the line weight override tool will override the line weight, color, and pattern of an individual line in a view.

At a family level, Revit stores definitions for an element’s appearance in plan, section, elevation, and 3D. For each of these view types, Revit allows the user to define an item’s appearance at course, medium, and fine detail levels. This provides an opportunity to store preset appearances for the same family in three different ways for four different types of views. This ability to display information allows designers to show the same item in many different ways.

What that means is you can use a symbol for your tree in documentation, a realistic view for detailing, and a graphically pleasing image for presentations all from the same family.

Elevation View

Tree graphics and screen capture

Here’s a great posting on covering making Revit families.

How Can Dynamo Benefit a Revit User?

Dynamo extends the capabilities of Revit. The Dynamo extension has the ability to read, write, and process data from outside or inside of a Revit project. The great thing about Dynamo is you do not have to be a Dynamo user to use Dynamo in your workflow. I am aware that is a confusing statement but hear me out. Dynamo workspaces can be preset routines that a Revit user can run similar to LISP routines in AutoCAD. With the Dynamo Playlist, this is even more of a true statement where a Dynamo routine can now be run without even entering the Dynamo interface.

Use Dynamo to Do What Revit Cannot

Dynamo has core functions for sorting lists of information and the ability to update Revit. A Dynamo user can create a workspace that can read information in a project file and tell Revit to do something with that information. The reason that sounds vague is that by using Dynamo, a person is able to perform an extremely wide array of tasks. The main concept to grasp is this: have Dynamo create a list and perform a task to that list.

1. Connect to External Information

A very simple example of how Dynamo can help extend the capabilities of Revit is to update and coordinate Revit families from an Excel file. Many landscape architects have a list of plants they use with information about planting spacing, sizes, cost, and much more. Dynamo can read Excel files and all the families in your project. If someone uses an Excel file to keep information like plant cost updated, Dynamo can be used to update the families in a Revit file with the cost data in Excel.

Dynamo workspace to read Excel file and update families
Dynamo workspace to read Excel file and update families.

2. Perform Tedious Tasks

Dynamo is perfect for tedious tasks. As mentioned before, you create a list of stuff and tell Dynamo to perform a task to that list. It doesn’t get tired or forget a step while running the same routines over and over on whatever list of items you give it.

Screen capture

If you’ve never opened Revit or Dynamo, you may still appreciate this very simple example of how Dynamo can benefit a designer. Dynamo has a node called String.ToUpper that will convert any text that is passed through the node to UPPERCASE. Checking to make sure text is uppercase in a set of drawings is a very tedious thing to review and even more so to update when it is wrong. By using Dynamo to make a list of all your sheet names, view names, or even all of the text notes in the drawings, you can run that information through the String.ToUpper node to capitalize any text. No checking required.

3. Perform Actions Based on Calculations

Dynamo has math functions that can perform calculations based on the information that is in the Revit model. This can extend Revit’s capabilities in many ways. Often there is a requirement for amount of green space and trees based on the parking count. If the parking spaces are modeled in Revit, schedules can be used to generate the numbers shown below but Dynamo can do something with that information.


In Dynamo, we can use the All Elements of Category node to get all the parking spaces. Using the Count node, Dynamo can report the number of parking spaces. The Divide node can be used to divide the number of spaces by the required spacing. In this case 20. The Math.Round node will round the partial number to an integer. This integer is the number of trees we want to place. Dynamo can then create a list of points as locations to place the selected tree type.

Screen capture

4. Place and Modify Geometry

As shown in the section above, Dynamo can place geometry. When it was first introduced Dynamo seemed more like a complex modeling program similar to Grasshopper. However, it is the previously discussed features that have led Dynamo’s to rise in popularity. The ability to place geometry with Dynamo is one of its more powerful features and a feature that I am going to focus heavily for landscape architecture because of the nonlinear nature of many of the designs. This document will heavily cover how Dynamo can place and modify geometry.

5. Annotate with Dynamo

The very first thing that I identified as having a need for Dynamo was annotating trees. Our designers easily placed trees and created schedules for cost estimates using Revit. When they used the tag all button, a tag per tree was placed which created a lot of tags to manipulate and left the drawings a bit cluttered. We did save time by not coordinating the type of tree but it’s not an easy sell for me to say why someone would want to use Revit over CAD for landscape architecture without the help of Dynamo.

Site model with tags
Site after tag all (left); arrange each tags (right).

Often, landscape drawings depict where a type of tree is planted by drawing a chain of lines through the similar tree types then indicate the number of trees in the chain of lines through a number shown with a tag (see below). In Revit, this is possible but it is a very manual task with a lot of drafting and counting. Doing this in Revit is marginally better than doing the work in CAD and that is up for debate.

CAD site annotation
CAD site annotation.

Draw Lines, Count Trees, Update Parameters, and Place Tags

Here’s a look at a Dynamo workspace where the Revit user can select everything in the view, filter out what is of the planting category, sort them by plant types, determine if they are located close enough to be considered a string of plants, draw a line between each of those plants, count how many were in the line, and finally, tag the plants.

Screen capture

The image above is the overall workspace. We’re going to walk through each step and then show the results. I have tried to do this for most workspaces. The numbers in red in the image are called out as sections below. Occasionally, on an output or selection, if I am going to reference it later in the section, I have added a circle with a letter.

For this workspace, I used a line-based adaptive component as the line for the plants because it’s visible in 3D which I think can lead to some interesting 3D diagrams. I wanted to show multiple methods annotating so later I will show a method using a detail line.

William Carney is the BIM director at BSA LifeStructures where he is a firm leader in adoption and implementation of design technology. Although he is not a landscape architect, as an early adopter of Revit, he has had the opportunity of leveraging BIM on a wide variety of project types and sizes using Revit site features for design, documentation, and visualization. William is highly involved in the St. Louis A&E design community as committee member for the St. Louis Revit User Group and part of the BSE advisory committee with Ranken Technical College where he draws on his 10 years of architectural experience to help improve the St. Louis area where he makes his home with his wife Liz, son Hank, and Greyhound Helen.

Want more? Download the full class handout to read on.