When documenting a project, it is often necessary to create callout views to show a specific area at a different scale. For example, in healthcare projects, callouts of every room are often needed as part of the room data sheet.
Within Revit, there are two ways to create these callout views. The first method involves duplicating an existing view and modifying its crop region. The problem with this method is that the new view won’t be cross-referenced, making navigating the drawing set difficult. The second and preferred method is to create a callout (View > Create > Callout). In this scenario, the views are cross-referenced from the parent view, such as the General Arrangement plan.
The problem
When creating a large number of callouts, the process can become error-prone and time-consuming. For example, Revit does not allow two views to have the same view name. Therefore, each callout created must have a unique name, which must be entered manually. Additionally, sometimes multiple rooms need to be grouped within a single callout. For example, a hotel or hospital room usually consists of two ‘sub-rooms’ – the bed area and the ensuite.
Callouts from rooms with Dynamo
To solve this need, Parametric Monkey has developed a Dynamo graph, available as part of our Dynamo Package Development service. The graph creates callouts of the selected rooms and names the new view per your naming convention. The callouts can either be axis-aligned (orthogonal) based on the room’s bounding box or based on the room’s outline. Additionally, there is the option to ‘pair’ rooms together based on a common parameter so that only a single callout is created for multiple rooms.
Before running the graph, ensure that all rooms to be paired have matching parameter values and that the active view is the view to reference from. The graph can be run on a floor plan or a reflected ceiling plan.


To run the graph:
- Select the rooms for the callouts (#1).
- [Optional] Define the pairing room parameter, such as “Occupancy” or “Number” (#2). This value should be left blank for no pairing.
- Specify the crop region offset from the room’s bounding box (#3).
- Define the view family type for the callout (#4). Note that if the active view is a Floor Plan, then a Floor Plan view family type must be specified. Similarly, if the active view is a Ceiling Plan, then a Ceiling Plan view family type must be specified.
- Define the view template to be applied (#5).
- Define the view name prefix (#6). This value can be left blank if desired.
- Define the room parameter to reference in the view naming convention (#7).
- Define the view name suffix (#8). This value can be left blank if desired.
- Specify if the crop region box should be visible (#9).
- Specify the crop method (#10). Callouts can either be based on the room’s bounding box or outline.
- Press Run.
Computational logic
The graph filters the selected rooms to return only bound rooms. Next, the room’s outer perimeter boundary is returned and offset based on input #3. If a pairing parameter has been specified (input #2), the rooms are paired based on their parameter value. If the parameter’s value is empty, the room is filtered out. For example, in the image above, room 11 had no Occupancy value and was therefore filtered out.
The view naming convention is then generated based on Prefix – Parameter Value – Suffix (inputs #6 – #8). If a proposed view name exists in the document, the room is excluded and returned separately. Finally, a rectangular, axis-aligned callout is created, and its crop box visibility and view template are set. If the crop method (input #10) is set to room outline, then the crop region is updated. Note that the location of the callout tag is not modified and must be manually moved if desired.
Conclusion
To find out more about our Dynamo Package Development service, drop us a line and discover how we can automate your Revit workflows.



