Using Dynamo to Schedule Coordinates in Revit

  • Updated

By Dennis Collin

I find it strange that Revit being a database driven program still doesn’t expose such parameters as Eastings, Northings and Height as out of the box parameters. This limitation can be quite frustrating to anyone working on site who needs to derive a schedule of coordinates for such objects like isolated foundations, piles columns, survey markers etc.


Although you can tag coordinates of said elements and show real world and local coordinates in the drawing, it isn’t immediately obvious how to get that data into a schedule view, onto a sheet and even write the data out to Microsoft Excel.

Revit can be customised via its API to do all kinds of tasks, but unless you are a proficient coder that isn’t much help. However, for some years now Revit has a graphical scripting environment, Dynamo, that can do all kinds of tasks, from placing views on sheets, renumbering components and of course read and write data from and to objects from some external sources as Excel.

Coordinates are no exception in terms of data extraction, but we first need to provide the desired categories with some parameters for Dynamo to write to. In this case Eastings, Northings and Level Height. This is easily achieved by creating these as shared parameters in a project and have them saved in a project template.

Before we look at how we get coordinates it is helpful to appreciate that Revit has 3 origins, a Survey point, a Project base point and the Original project origin that we cannot physically see or change.


Typically, the Survey Point will be set as the national grid datum relating to a true north aspect. This will potentially provide us with the Ordnance Survey Grid coordinates. The project base point can be used for a local survey station close to the site, or a site datum for the project. The project base point will normally relate to the project north, or sheet north, the same as the original project origin.


Assuming the project has been coordinated correctly, I always tag 3 known points as a check. We can then run the Dynamo script either from within Dynamo editor or via the player to prevent accidental changes to the file itself. Both environments can be found via the manage tab, on the right-hand side, on the visual programming panel.

The nice thing about scripts is once it has been written, the Dynamo file can be stored in a shared location and users can run the script for future projects as desired.

This example just works with structural columns, but the script could easily be expanded to include foundations or a manual selection of a range of elements.


The first part of the script selects all structural columns and makes a list of coordinates, relating to the project origin and using project north aspect.  I strongly recommend breaking any script into labelled colour coded groups for future reference and fault diagnosis.


By default, Dynamo will tend to use project north and origin, but using the ‘Coordinates.Surveypoint’ node and a rotation node that reads the true north from project north angle deviation, the correct coordinates can be translated. This information can be then pushed to the ‘Geometry.Transform’ node which will work out the Global coordinates rather than Revit’s local coordinates.


The Geometry transform in Dynamo should now list the desired world coordinates, however we need to push the coordinate data to the object parameters in the project. The points are split into their separate ordinates and written to the corresponding parameter name of each column via the use of a ‘Code Block’ node.


We can check the success of the script by running a schedule of the coordinated items and checking the list against the tagged columns on the structural setting out plan.


Should an Excel report be required, the table can be manually exported from Revit as a CSV format, but Dynamo has a node to write to Excel directly in a native format and has more functionality. In a future blog I will show an expanded version of this script that will do precisely that.


This example, whilst a little more complex than tutorials used in our Introduction to Dynamo course, can be achieved once some basic principles are understood. Our one-day course gives a good foundation with the concept of Dynamo, its interface, key nodes and tips and tricks. In addition to the standard material we also provide some sample scripts that can be used as ‘building blocks’ for more specific tasks.

For more details of Cadline Training please click here:










Was this article helpful?

2 out of 3 found this helpful

Have more questions? Submit a request



Please sign in to leave a comment.