Revit: Set Wall Openings Area with Dynamo
In Revit, we have the data of the net area of any wall with total precision. However, if what we need is to work with the gross area (discounting all the openings) we must look at Dynamo to do simple mathematical operations that allow us to estimate the gross area, as well as the values of the openings in each wall.
Conceptually it seems simple, but getting Wall Openings area requires a small effort, because this data is not provided by Revit, nor its width. Probably (I’m guessing) this is because the information of the width, and therefore of the area, depends on the geometry of the wall, thinking of curved walls especially, and it is not possible to always find a unique value.
The extraction of information is not problematic for other types of openings. We only need to determine from what parameters we want to extract the data for the calculation of the opening area. In the example of the tutorial we will use AreaHueco, which together with AnchoHueco and AltoHueco are shared parameters in the families of doors and windows. In some of the custom nodes used in the script, these parameters are taken by default, but if they do not exist, Width and Height would be used instead, to ensure that we always get values.
We will work with a model in which I have arranged different types of walls, some with the profile edited, and with openings made by doors, windows and Wall Openings.
It is important to have defined shared parameters associated by project to the Walls.
In AreaBrutaEstimada we will store the final calculation of gross area for each wall instance. The term Estimated helps us to remember that it is a calculation made from other values and that at some point there is a choice between different options.
In AreaTotalHuecos all openings that open a wall will be added.
In AreaHuecosInserciones the doors and windows are added.
In AreaWallOpenings only Wall Openings that open a wall are added.
In NegativoTotalHuecos, the perimeter areas of the openings that open a wall are calculated and added together. This data is used for the calculation of formwork in concrete walls.
In NegativosHuecosInserciones only those for doors and windows are measured.
In NegativosWallOpenings only the perimeter areas of Wall Openings are added.
First we will see the execution of the definition with Dynamo Player, and then we will go into more detail step by step with the nodes used. In the edition of inputs all the names of the parameters in game can be changed.
In the first dialog box we can confirm or vary the measurement parameters of width and height of openings. The category drop-down is purely testimonial.
We move to the next window in which we can confirm the types of wall to analyze. Since the common use is for structural wall formwork measurements, by default in the example the types of architectural walls are not selected. We also have information on the number of total elements and the preselected ones. To avoid slowing down, or even freezing the machine due to lack of resources, it is suggested not to run the script on more than 1000 simultaneous elements. In parentheses the number of copies of each type of wall is indicated to make the final selection. Once we’re satisfied with the selection we press OK.
The computer will work on the calculations and paste the data in the chosen parameters, showing at the end a summary of the results.
The first group of nodes prepares the initial dialog with an explanatory note, the selection of the category of Walls, and the 2 parameters of reading openings width and height in doors and windows.
Next we make a classification and grouping of elements by type, discarding the stacked walls, because their parameters are read-only.
Then we make a preselection based on a code that determines which walls are structural. We do it this way, because not always the walls cataloged as structural have that property activated. If in the standard of your office it is like that, you could filter for that property.
Next, we have the group that will show the dialog of elements grouped by type to confirm the preselection or modify it.
Once we have the chosen elements in play, we go on to get the necessary information, starting with the inserts and then the Wall Openings. Within the customized nodes, the information obtained is also pasted. We pass all the walls through each of them to be able to operate at the end with them without the need for transactions.
Custom Node Walls.GetOpeningsDimensions. This node performs several operations. On the one hand, it separates the Wall Openings from the rest of the inserts. Then, following an almost exact process proposed by Jacob Small, he obtains the geometry of the openings until it reaches the larger side of the lower face of these geometries. With this, we calculate the area of the openings and then the perimeter, to pass the data to the necessary shared parameters.
We extract and paste the totals in these groups of nodes.
Next, we only have to make the final calculations of gross area adding the net area and the openings area.
And we finish with the group of nodes that will give us the summary of results.
As you can see, this can be very useful for budgeting with precision structure work in early phases in which a detailed study of construction methods has not yet been carried out.
Notes and acknowledgements:
· The present Dynamo tutorial aims to modestly help the development of automation in the work processes of the AEC world.
· For confidentiality reason and due to its high customization, none of the scripts can be shared.
· Thanks to all package developers for Dynamo, without whose effort, tips and generosity it would not be possible to extend the customization power of Revit, considerably increasing its effectiveness and efficiency. I would like to highlight especially the work of:
· Mostafa El Ayoubi (data | shapes)
· Andreas Dieckmann (Clockwork)
· Konrad K Sobon (archilab & BumbleBee)
· Nate Miller (LunchBox & Rhynamo)
· Dimitar Venkov (SpringNodes)
· John Pierson (Rhythm & Bang)
· Julian Benoit (SteamNodes)
· Thomas Mahon (Bimorph)
· Luke Johnson (Bakery)
· Johnes Hou (Hot Gear)
· Colin McCrone (Ampersand)
· Dieter Vermeulen (BIM4Struc.Rebar)
· Laurenk Schmidt (Landform)
· Tomasz Fudala (Structural Design)
· Modelical
· Marc Tavernier
· For my part, I have developed custom nodes to simplify definitions and reuse them in others. When it is necessary for the understanding of the tutorials, I show the image of the custom node so that it can be recreated.