Revit and Dynamo Tutorial – Placing family instances at world coordinates

Clients have asked me during the years I've spent teaching Revit, if there is a tool that can place a Revit family at a world coordinate that might have been given by a contractor or a surveyor. This is a simple operation with AutoCAD because everything is modelled using the World Coordinate System, or WCS. You simply type in the easting and northing. However, Revit’s coordinate system for placing families uses the internal origin, which will not be the real-world coordinate. We also must consider the possible rotation of the site in relation to the project north.

Using Autodesk Dynamo to convert the coordinate system and position a chosen family at the coordinates is a straightforward solution. I've been meaning to make a tutorial for a while, and I've finally gotten around to it! Dynamo Player is the most effective tool for placing the families, but if a specific set of families are needed from a list, we can also read a text file, comma separated file, or Microsoft Excel.

I've included a picture of the entire Dynamo Script above, but I'll walk you through each of the groups as well.

Getting the project base point built in with parameters that obtain the East/West, North/South, and Angle to True North is the initial stage. This way works better because although there is a node that can retrieve the data directly, it won't update or refresh.

The next step is to create the Easting and Northing inputs. These values are then subtracted from the Project Base Point to create a coordinate system.

We can now create another coordinate system at the internal origin of Revit and then rotate this system to take into account the project north rotation. Following that, the family instance is then placed at the coordinate system. The Dynamo script should ideally be executed within Dynamo player to allow for multiple coordinates and families to be placed simultaneously.

If you need to insert multiple families at the world coordinates, you can create a dynamo script that reads a series of coordinates that are stored in Microsoft Excel or a simple comma separated file.