A while back, I was speaking with my supervisor and he told me about a Revit extension that he wished would be brought back. He used to create isometric drawings called “Freeze Drawings.” My experience with isometric drawings was on the beginner’s level, so I had never heard of the extension. After researching, I found that the tool essentially allows you to separate a view from the model. So, when changes are made to the model, the view you have “frozen” remains unchanged.
The tool could be extremely useful for views with a lot of detail work and other tasks that require annotations, text, symbols, etc., such as isometric drawings. Since the tool could make these processes easier, I concluded that it would be worth trying to replicate. After additional research, I found a workflow that closely replicates the process and produces a Flat 2D image of your original view on a drafting view. The only issue with the workflow is that it is time-consuming.
First, you create a new sheet. Then you place the 3D view, export the view to DWG and finally import the DWG into a new detail view. If you have more that a few views you’d like to “Freeze,” this workflow can take a lot of time. However, it is a simple process that can easily be automated using Dynamo.
Building the Script
Since the script uses some nodes that aren’t available with OOTB Dynamo, you must download a few packages. The packages and their versions are listed below:
- archi-lab.net (2016.5.27)
- Clockwork for Dynamo 1.x (1.0.2)
- Rhythm (2020.7.25)
- SteamNodes (1.2.4)
After the packages are downloaded, the first step is to create a new sheet to place 3D views. I opted to use random numbers for this to make arbitrary names and numbers for “Placeholder” sheets. This helps ensure a unique name and number for the created sheets.
Once the random numbers are generated and divided into lists, create the “Placeholder” sheets. Start with the Create Placeholder Sheet node from the archi-lab.net package. Then, copy the Python Script that makes it work and slightly modify to create “real” sheets 3D views can be placed on.
These sheets are temporary, so consider them as “Placeholders.” In Revit terms, they are real sheets without Title Blocks since we need to place 3D views on them.
Now that “Placeholder” sheets are created, we can place our 3D views on them. To do that, first we need to “grab” all 3D views and separate ones that we want to “Freeze”.
We also need to designate a DWG exports folder and tell Dynamo the type of view we want them imported on.
Freezing Your Views
After creating the “Placeholder” sheets and telling Dynamo what it needs to know, which required some custom Python script, we can finally start “Freezing” our views. For this node, I started with the same Python Script node from the Create Placeholder Sheets node we modified earlier. Then, I deleted everything in the code below line 25 and added in the code shown below.
This custom Python node does the “Magic.” It collects our desired 3D views and places them on our “Placeholder” sheets. Then it exports those sheets as DWGs to our specified folder and finally imports those DWGs, placing them on our designated view type.
Once that node runs, we have officially “Frozen” our views. However, this leaves our “Placeholder” sheets in the model. To keep from cluttering up our model, we need to delete those after the script completes. We can automate that step too.
Automatically Deleting Placeholder Sheets
To automatically delete those sheets, we will use the Tool.Eraser node from the SteamNodes package. However, we don’t want Dynamo to delete our “Placeholder” sheets before our script has finished exporting them, so we will make sure that it completes the export first by using the Passthrough node from the Clockwork package.
This completes the code. After running it, we see that our folder we specified earlier is filled with DWGs and our 3D views have been turned into “Frozen” Detail Views. We can edit, mark up and modify these without changing the model. Plus, the “Placeholder” sheets we made are nowhere to be seen!
As a proof of concept, I am very pleased with this script. It works and accomplishes my goals; however, I can already see areas of improvement and areas where more functionality can be added. I will keep working to polish this script, so stay tuned for future updates.
This blog is written by Sr. Technical Specialist Colton Haney. If you have any questions or need help with your Dynamo or Civil needs, please email us at whyATG@atgusa.com.