Steel element locating for comparison of distance to a fixed point

Hi all,

I am looking for a way to tag of the the structural steel elements in my Revit model with a x,y,x coordinate in Dynamo so that I can then have Dynamo calculate the distances from each element to a set point in my model. The idea is to use this in helping to locate tower cranes more efficiently. I have been trying to use the information from this post to help get me started but it is making me break down into every family and I would like to do it with all the structural steel at one time. Thanks for the help.


Hi Drew/William

I think this is achievable:

  1. Determine reference point on each structural member
  2. Calculate vector length between base point (crane) and structural element ref point
For 1:
  • what elements are included- beam, columns, trusses etc ??
  • would reference point be in middle of element, base, furthest away from base point etc
For 2.:
  • For crane lifting studies- the horizontal distance from crane & lifting mass usually matters (but not the elevation or z value) is this what you want ?
  • What output do you want e.g schedule with structural element mark & distance from crane, colour code members based on distance etc ?


I would assume the XYZ you are looking for is the midpoint of each column/beam. Unfortunately, this means that you are going to have to drill down into each element somewhat, and you will have to do different things to different types of elements.

To start with you will want to use the Element.Location node (from Clockwork I think). This will give you Revit’s understood location for each element…but none of thes are what you are looking for

For instance:

Vertical columns will give you the bottom reference point - you will need to add/subtract the bottom offset, top level, and top offsets to then calculate the midpoint.

But…slanted columns will return a line representing the column- which you can use PointAtParameter (using 0.5) to find the midpoint.

Most beams will behave the same as slanted columns (returning a line) so you can follow the same method outlined above…

Exept beams made using the family template for “Trusses and complex framing” which will return a point that likely means very little to anyone except the author of the family.

All of this is one method to get the info you are after.

Alternatively, you could take each element and extract its solid geometry, then Union the geometry as needed so that you have one Solid per element. Then use Solid.Centroid to get the center of each element (assuming all the elements are of a similar mass - steel).


Currently I am only looking at beams and columns and will eventually expand it to work for trusses and concrete elements that will be lifted. I think for my concept putting all the reference points in the middle of the structural element will do and then can be moved later to be more precise.

Yes I am really only interested in the vector length in the horizontal direction as the height of the lift does not change the cranes capacity to lift an object. I will be combining this distance with a mass of the element and running it through a script specific to each crane to analyze how that crane would fare on a project or if another option would be better. Then it will color code the members on the model based on the cranes ability to lift it. Also, I am putting in a safety factor to scale back the cranes lift capacity and then anything that can be lifted but is over what the safety factor allows and would be a critical lift will be colored a different color.


Hi Drew

Refer to

looks like Vikram has worked it all out




Also- I was thinking how you might determine the optimum position for a crane, i.e working backwards rather than analysing a particular position. It is an interesting mathematical puzzle

(In practice, the crane position is determined by other factors, such as structural support, structural penetrations in floor slabs etc)

One idea was to work out the centre of gravity for all the elements together- but this would skew the position near multiple objects, especially heavy ones in a similar place. It is really just the furthermost one that matter.

If you were to generate a circle in a horizontal plane, centred on each element & with radius based on the element mass & with a suitable scaling factor (say controlled by a slider) you could visually determine the optimum position i.e minimum lifting capacity




Hi Andrew,

I am working on this too.

I ask my subcontactors to deliver the weight, and also the center of gravity of their element through their IFC file. (position of each element to the common zero point position)

Then you get the position of your crane to the same common zero position…