Room centre location

3 min read
Share on twitter
Share on linkedin
Share on facebook
Share on email

One of the difficulties of documenting in Revit is the inability to place rooms precisely in the centre of the room. Ideally, Revit would automatically snap to the centroid when in the process of placing a room. Instead, Revit just aligns adjacent elements. Since the reference crosshairs of the room are turned off by default, initially the position of the room may seem irrelevant. However, when attempting to ‘tag all not tagged’, Revit will place tags centred to the room’s location. This constraint means that drawings can appear messy and illegible. To solve this problem, Parametric Monkey has developed two custom Dynamo nodes. Both nodes are available via the Parametric Monkey Dynamo package.

Centring rooms

The ‘Room.CentreLocation‘ node moves all rooms within the project to the centroid of the room. If you have an odd-shaped room, and the centroid is going to fall outside of the room boundary, the node will keep the room in its current position. Under the hood, the script collects all rooms within the project and their associated boundary. The centroid of the boundary is then calculated, and a containment test performed to test whether the new location (centroid) is contained within the room. If true, the rooms are moved to their new position with the rest remaining as-is.

Centring room tags

Once all the room have been repositioned, it is possible to move any existing room tags to the new room location point. While it is possible to use the ‘tag all not tagged’ command within Revit, you may have some rooms that either don’t need tags or which require a different tag family. By using Dynamo and referencing the tags already placed in the project, users have greater control over the outcome.

The ‘RoomTag.MoveToRoomLocation‘ node is based on the script by Modelical. However, the benefit of using this node is that it will automatically select all the room tags in the project.


Repositioned rooms and room tags

The problem with having to select which tags to update manually is as follows. Firstly, using the ‘Select model elements’ node in Dynamo, you need to draw a window to reference Revit elements. It is not possible to have a pre-selection or use Ctrl to select multiple elements. The alternative, therefore, is to isolate the room tags for easy selection. However, it is not possible to isolate the room tag category solely. For room tags to be visible, rooms must also be visible. Therefore, having the script collect the room tags automatically is preferable.

Note that the script will search for any tags that contain the term ‘Room Tag’ in the family name. If you name your families something different, you’ll need to modify the node as necessary.

Share on twitter
Share on linkedin
Share on facebook
Share on email


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Balcony Area and Depth with Dynamo

Min balcony area and depth

Verify a balcony’s minimum area and depth with Dynamo for compliance with the NSW Apartment Design Guide and SEPP65 requirements.

Renumber Balconies

Renumber balconies

A Dynamo workflow to renumber balconies based on their associated apartment room to assist in documentation and compliance checking.


© 2021 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.