Você está na página 1de 11

Linking Analytical Nodes

with Structural Elements

BACK TO ALL POSTS (/BLOG/)

October 2, 2014 (http://dynamobim.org/linking-analytical-nodes-with-structural-elements/)

MARK THORLEY (HTTP://DYNAMOBIM.ORG/AUTHOR/MARK-THORLEYAECOM-COM/)

A colleague of mine in the structural team approached mewith a problem hes been having in Revit
and explained his workflow. Currently the analytical nodes found in elements such as beams,
braces and columns produce little data and information readily available for scheduling or
extraction from Revit. This means that information is usually taken from other software packages,
and then has to be manually entered into Revit for drawings and tagging. It was at this point I
thought this process could be improved through the power of Dynamo.

So I decided to test the theory out on a sample project


(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/1.png)

Within this project there are over 5000 structural framing members so this will provide a good test
run. The first step is to create the parameters in the Revit project that you will need for the
analytical nodes. The only schedulable parameters available for analytical nodes are Connection
Status, Node Number, Comments and Count. The value in the parameter Node Number defaults to
0 for all nodes, so a manual process would need to take place to renumber and assign values to
each node. Why do this as a manual process when the information is already within Revit, just
buried amongst the API? We can use this parameter going forward, but we need to create
parameters called X Position, Y Position, and Z Position. These are Number fields for the type of
parameter.
(http://dynamobim.org/wp-content/uploads/forum-
assets/mark-thorleyaecom-com/10/02/2.png)
Moving into Dynamo we can select all the analytical nodes in the project using the select category
node. When we use this tool however it selects the hub and reference point of each analytical node
separately. We can simply filter the outcome to list only the reference points as required. This can
be done in many different ways, but I chose to extract points using the List.GetItemAtIndex with a
simple number range fed in.

(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/3.png)
(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/4.png)

From each reference point we can then extract the information hidden with Revit. We first extract
the information relating to the X, Y and Z position of each point along with the Revit Element ID. We
then use the Element.SetParameterByName node referencing the project parameters we created
earlier on and plug the values in accordingly.

(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/5.png)
(http://dynamobim.org/wp-content/uploads/forum-
assets/mark-thorleyaecom-com/10/02/6.png)

Once we have this information readily available within Revit schedules we now need to create a link
between these and the actual structural framing members. Firstly lets create another couple of
parameters for the structural framing families. We need Start Node Number and End Node
Number as Integer parameters.
(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/7.png)

If we select all structural framing members in dynamo in a similar method to before we can then
extract the location curve for these elements. Once we have the curve as an element within
Dynamo we can query its start and end point. Then using a Lunchbox node (found on the Package
Manager) we can convert these points to strings.

(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/8.png)

(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/9.png)

If we take the Curve.StartPoints in this first instance, we just need to repeat the next few steps for
the Curve.EndPoints at the end. We need to use these string values and compare them to the
original reference points of the analytical nodes. To do this we also need to convert the reference
points to strings in the same manner. Now we have two lists of strings to find the corresponding
analytical node for each member family. As we want to compare each of the member strings to
every instance of the analytical node strings we need to run the compare through the function of
List.Map to produce an output of true and false statements with nested lists. This means it creates
a nested list for each of the member strings, where it compares the value to every instance of the
analytical node strings, returning a value of true or false dependant on whether they match. As a
result in every nested list there is the same number of indexes as there is in the analytical nodes
string entry. All of these values should return false except for one which will be the same.

(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/10.png)

Within our list we want to extract the index where the value has returned true for each nested list.
To do this we use the List.Map node again but run it through the List.FilterByBooleanMask node.
With the help of the map node, the count node gets the total length of each sub list. That number is
reduced by one (because lists in Dynamo start from 0), and then fed into a number sequence to
match the number indices. As we have already defined a conditional statement, we can reuse that
conditional statement to filter only the list indices that match the predetermined condition. As a
result this gives us the index of each nested list which returns true.
(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/11.png)

Once we have this list we can flatten completely as we now no longer need nested lists. If we use
these values as the index to look up in the original list of analytical nodes we can extract the
corresponding element ID. This ID becomes the value input for the Start Node Parameter in our
structural framing families. If we repeat these last few steps for the Curve.EndPoint and End Node
Number parameter we have a completed script.
(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/12.png)

(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/14.png)
(http://dynamobim.org/wp-content/uploads/forum-assets/mark-thorleyaecom-com/10/02/12.png)

This methodology can be applied in many different ways Im sure but this proved a very successful
way of utilising data embedded within Revit and making it available for scheduling. The same
principles could be used to insert information from other software packages in relation to forces
and loads and applying this to either the analytical nodes or the framing members. In another
example within our office we have used the defined curve in the framing members within dynamo
to extract information about its radius in the case where it is created using an arc or to rationalise
splines. Finally a special mention to DimitarVenkov for his contribution to this workflow.

Mark Thorley is Assistant BIM Manager at AECOM Sports London. Coming from an architectural
background he has extensive knowledge of Revit and BIM and has been implementing Dynamo
within the office for over a year now. AECOM Sports are always trying to push the boundaries of
parametric modelling and integrating Dynamo within the workflow is creating a smoother BIM
process.

@MarkThorley1 (https://twitter.com/MarkThorley1)

https://www.linkedin.com/pub/mark-thorley/49/921/55a (https://www.linkedin.com/pub/mark-
thorley/49/921/55a)

Add you must be logged in to comment

SIGNUP

Learn (/learn/) Explore (/explore/) Forum (https://forum.dynamobim.com/)


2016
Gallery (/gallery/) Blog (/blog/) About (/about/) Help Center (/help-center/) Autodesk, Inc

Terms & Conditions (/terms-conditions/) Credits (/credits/)

Você também pode gostar