First off I am demonstrating how to create new Views in a Revit project using Dynamo. That’s pretty straight forward. I am using all regular nodes. If I am using any custom nodes is to filter out specific elements that I want to create the views for. Here’s a screenshot of what one of those “filters” looks like. Again, there are only two custom nodes (that I created :-)), one is called Slice String (removes characters from a string) and Dispatch (uses a pattern of True/False to extract elements from a list). This particular filter gets me only panels for one of the canopies and since there are three of them in the project I wanted to make sure that I focus on one of them for now.
After that there is another “filter” that gets me only one panel for each type. Since panels within each type group are the same, there was no need for me to create a view for every instance.
Once I had just the panels that I needed it was time to get what I needed for my Axonometric View node. It needs inputs such as “eye”, “target”, “name”, “extents” and “isolate”. Let me walk you through what each one really is and what it needs because trust me its not what it seems. :-) “Eye” is a Unitized XYZ point that will be the camera location. This is a point from which the camera will be looking at the “target”. “Target” is another Unitized XYZ point and that’s the point that camera will be looking at. Then there is a name which can be a single String or a list depending on number of views that you want to create. “Extents” allows you to plug in an element from which a bounding box will be extracted and used to determine a crop region for the new view. Basically if you feed it an object, it will make sure that its visible within the crop region. Lastly there is the “isolate” input that takes a Boolean node. Set it to True (1) and it theoretically should isolate only elements that were fed through “extents” input, however that didn’t really work for me. Nevertheless, in Dynamo all inputs must be satisfied for the node to work, so make sure that you feed it the right stuff.
I wanted my views to be perpendicular to each panel, so that I can maybe later put some dimensions on them. Here is some gymnastics of extracting geometry from each panel, then placing point right in the middle of it and offsetting it in the direction of the surface normal to create my “eye” and “target” inputs.
I am not really convinced that views created this way are truly perpendicular to a panel surface, but its pretty close and good enough for a proof of concept. Here’s all of it put together:
Next part was to apply a View Template to our freshly minted views. I am not going to go into too much detail on that one. It’s pretty straight forward. You need to supply it views and a view template name and you are good to go.
Next one is still work in progress and its not even a custom node yet, so I am only going to briefly describe what it does. Its in charge of taking views and placing them on a sheet, and if it runs out of room on a sheet it will create a new sheet and keep placing the remainder of the views on it until it runs out of room on that one as well.
I am currently supplying it a sheet name, sheet number to start with (each consecutive sheet will get += 1 number), and Title-block type for new sheets. Obviously there is some more stuff that I need to look into with that one; mainly: sheet group, checked by, approved by, drawn by, drawing list group, drawing list filter if needed. This node is very specific to a sheet size that I am working with, and view scale, so I am not anticipating publishing this one anytime in the future.
First things first. Here’s a YouTube video with a short preview of what I am writing about.
Anyways, I hope you enjoyed it. Please stay tuned as I will be working on this one probably this week so I might have some updates in a few days.