BIM Management,  Programming,  Portfolio,  Innovation,  The BIM System Blog

Revit: Set Wall Openings Area with Dynamo

In Revit, we have the data of the net area of any wall with total pre­ci­sion. How­ev­er, if what we need is to work with the gross area (dis­count­ing all the open­ings) we must look at Dynamo to do sim­ple math­e­mat­i­cal oper­a­tions that allow us to esti­mate the gross area, as well as the val­ues of the open­ings in each wall.

Con­cep­tu­al­ly it seems sim­ple, but get­ting Wall Open­ings area requires a small effort, because this data is not pro­vid­ed by Revit, nor its width. Prob­a­bly (I’m guess­ing) this is because the infor­ma­tion of the width, and there­fore of the area, depends on the geom­e­try of the wall, think­ing of curved walls espe­cial­ly, and it is not pos­si­ble to always find a unique value.

Wall Open­ing in a reg­u­lar wall
Wall Open­ing in a curved wall

The extrac­tion of infor­ma­tion is not prob­lem­at­ic for oth­er types of open­ings. We only need to deter­mine from what para­me­ters we want to extract the data for the cal­cu­la­tion of the open­ing area. In the exam­ple of the tuto­r­i­al we will use AreaHue­co, which togeth­er with AnchoHue­co and Alto­Hue­co are shared para­me­ters in the fam­i­lies of doors and win­dows. In some of the cus­tom nodes used in the script, these para­me­ters are tak­en by default, but if they do not exist, Width and Height would be used instead, to ensure that we always get values.

Cus­tom shared para­me­ters in a door family

We will work with a mod­el in which I have arranged dif­fer­ent types of walls, some with the pro­file edit­ed, and with open­ings made by doors, win­dows and Wall Openings.

Revit mod­el

It is impor­tant to have defined shared para­me­ters asso­ci­at­ed by project to the Walls.
In AreaBru­taEs­ti­ma­da we will store the final cal­cu­la­tion of gross area for each wall instance. The term Esti­mat­ed helps us to remem­ber that it is a cal­cu­la­tion made from oth­er val­ues and that at some point there is a choice between dif­fer­ent options.
In AreaTo­tal­Hue­cos all open­ings that open a wall will be added.
In AreaHue­cosIn­ser­ciones the doors and win­dows are added.
In AreaWal­lOpen­ings only Wall Open­ings that open a wall are added.
In Neg­a­tiv­o­To­tal­Hue­cos, the perime­ter areas of the open­ings that open a wall are cal­cu­lat­ed and added togeth­er. This data is used for the cal­cu­la­tion of form­work in con­crete walls.
In Neg­a­tivosHue­cosIn­ser­ciones only those for doors and win­dows are mea­sured.
In Neg­a­tivosWal­lOpen­ings only the perime­ter areas of Wall Open­ings are added.

Cus­tom shared parameters

First we will see the exe­cu­tion of the def­i­n­i­tion with Dynamo Play­er, and then we will go into more detail step by step with the nodes used. In the edi­tion of inputs all the names of the para­me­ters in game can be changed.

Dynamo play­er

In the first dia­log box we can con­firm or vary the mea­sure­ment para­me­ters of width and height of open­ings. The cat­e­go­ry drop-down is pure­ly testimonial.

Start­ing dia­log box

We move to the next win­dow in which we can con­firm the types of wall to ana­lyze. Since the com­mon use is for struc­tur­al wall form­work mea­sure­ments, by default in the exam­ple the types of archi­tec­tur­al walls are not select­ed. We also have infor­ma­tion on the num­ber of total ele­ments and the pre­s­e­lect­ed ones. To avoid slow­ing down, or even freez­ing the machine due to lack of resources, it is sug­gest­ed not to run the script on more than 1000 simul­ta­ne­ous ele­ments. In paren­the­ses the num­ber of copies of each type of wall is indi­cat­ed to make the final selec­tion. Once we’re sat­is­fied with the selec­tion we press OK.

Con­firm selection

The com­put­er will work on the cal­cu­la­tions and paste the data in the cho­sen para­me­ters, show­ing at the end a sum­ma­ry of the results.

Results dia­log box
This is the exam­ple of a wall with doors and win­dows, but with­out Wall Openings.
This is a wall with the edit­ed pro­file grow­ing in size.
This oth­er has the pro­file edit­ed reduc­ing its size.

The first group of nodes pre­pares the ini­tial dia­log with an explana­to­ry note, the selec­tion of the cat­e­go­ry of Walls, and the 2 para­me­ters of read­ing open­ings width and height in doors and windows.

First selec­tion nodes

Next we make a clas­si­fi­ca­tion and group­ing of ele­ments by type, dis­card­ing the stacked walls, because their para­me­ters are read-only.

Wal­l’s clas­si­fi­ca­tion and grouping
Walls.FilterStackedWalls cus­tom node

Then we make a pre­s­e­lec­tion based on a code that deter­mines which walls are struc­tur­al. We do it this way, because not always the walls cat­a­loged as struc­tur­al have that prop­er­ty acti­vat­ed. If in the stan­dard of your office it is like that, you could fil­ter for that property.

Struc­tur­al walls preselection

Next, we have the group that will show the dia­log of ele­ments grouped by type to con­firm the pre­s­e­lec­tion or mod­i­fy it.

Final selec­tion

Once we have the cho­sen ele­ments in play, we go on to get the nec­es­sary infor­ma­tion, start­ing with the inserts and then the Wall Open­ings. With­in the cus­tomized nodes, the infor­ma­tion obtained is also past­ed. We pass all the walls through each of them to be able to oper­ate at the end with them with­out the need for transactions.

Open­ings calculations
Walls.SetInsertsArea cus­tom node
Walls.InsertsOpeningsPerimetralArea cus­tom node

Cus­tom Node Walls.GetOpeningsDimensions. This node per­forms sev­er­al oper­a­tions. On the one hand, it sep­a­rates the Wall Open­ings from the rest of the inserts. Then, fol­low­ing an almost exact process pro­posed by Jacob Small, he obtains the geom­e­try of the open­ings until it reach­es the larg­er side of the low­er face of these geome­tries. With this, we cal­cu­late the area of the open­ings and then the perime­ter, to pass the data to the nec­es­sary shared parameters.

Walls.GetOpeningsDimension cus­tom node
Element.TwoParametersAddition cus­tom node

We extract and paste the totals in these groups of nodes.

Totals

Next, we only have to make the final cal­cu­la­tions of gross area adding the net area and the open­ings area.

Final total gross area

And we fin­ish with the group of nodes that will give us the sum­ma­ry of results.

Group of node to show results

We can final­ly see the work done in a con­crete wall sched­ule in which one of the columns shows the nec­es­sary area of form­work (2 times the gross area of each wall).

Struc­tur­al con­crete walls schedule

As you can see, this can be very use­ful for bud­get­ing with pre­ci­sion struc­ture work in ear­ly phas­es in which a detailed study of con­struc­tion meth­ods has not yet been car­ried out.

Com­plete def­i­n­i­tion image

Notes and acknowledgements:

· The present Dynamo tuto­r­i­al aims to mod­est­ly help the devel­op­ment of automa­tion in the work process­es of the AEC world.

· For con­fi­den­tial­i­ty rea­son and due to its high cus­tomiza­tion, none of the scripts can be shared.

· Thanks to all pack­age devel­op­ers for Dynamo, with­out whose effort, tips and gen­eros­i­ty it would not be pos­si­ble to extend the cus­tomiza­tion pow­er of Revit, con­sid­er­ably increas­ing its effec­tive­ness and effi­cien­cy. I would like to high­light espe­cial­ly the work of:

· Mostafa El Ayoubi (data | shapes)

· Andreas Dieck­mann (Clock­work)

· Kon­rad K Sobon (archi­lab & BumbleBee)

· Nate Miller (Lunch­Box & Rhynamo)

· Dim­i­tar Venkov (SpringN­odes)

· John Pier­son (Rhythm & Bang)

· Julian Benoit (SteamNodes)

· Thomas Mahon (Bimorph)

· Luke John­son (Bak­ery)

· Johnes Hou (Hot Gear)

· Col­in McCrone (Amper­sand)

· Dieter Ver­meulen (BIM4Struc.Rebar)

· Lau­renk Schmidt (Land­form)

· Tomasz Fudala (Struc­tur­al Design)

· Mod­el­i­cal

· Marc Tav­ernier

· For my part, I have devel­oped cus­tom nodes to sim­pli­fy def­i­n­i­tions and reuse them in oth­ers. When it is nec­es­sary for the under­stand­ing of the tuto­ri­als, I show the image of the cus­tom node so that it can be recreated.