Hi,

I’m looking for a node/way to find the position (coordinates) of rebar in a beam.

Seems like “element.getlocation” doesn’t work for rebar.

cheers,

Dennis

Hi,

I’m looking for a node/way to find the position (coordinates) of rebar in a beam.

Seems like “element.getlocation” doesn’t work for rebar.

cheers,

Dennis

Dynamo for Rebar and BIM4struc Tutorials

What version of Revit are you using? The method was changed in Revit 2017 so the node will probably not work in 2016 or earlier releases.

If that’s the case you can have a look at this post;

That might be the problem then. I’m using Revit 2016.

I’ll try tomorrow on Revit 2017. Thanks for the help !

Your Python script works perfectly. I now get the coordinates of my rebar.

My rebar is a number of stirrups. Do you think it is possible to get the separate coordinates of each stirrup ?

When I use the script I get the coordinates of just one stirrup.

It’s not completely straight forward, but have a look here:

In 2017 you could try to feed a list of bar positions to the getcenterlinecurves node

I found another script I had written once, but forgotten about. Think it does what you want:

```
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
view = doc.ActiveView
#Convert input from dynamo to revit
rebar = UnwrapElement(IN[0])
#Set options
mpo = MultiplanarOption.IncludeAllMultiplanarCurves
#Get info from rebar
numOfBars = rebar.NumberOfBarPositions
quantity = rebar.Quantity
layoutRule = rebar.LayoutRule
if numOfBars > 1:
#Find visible bars and get their centerline curves transformed to correct position
centerlineCurves = []
for i in range(numOfBars):
if not rebar.IsBarHidden(view,i):
posTransform = rebar.GetBarPositionTransform(i)
revitCurve = [c.CreateTransformed(posTransform) for c in rebar.GetCenterlineCurves(0,0,0,mpo,0)]
centerlineCurves.append([r.ToProtoType(True) for r in revitCurve])
else:
centerlineCurves = [r.ToProtoType(True) for r in rebar.GetCenterlineCurves(0,0,0,mpo,0)]
OUT = centerlineCurves
```

How can we read a rebar set?

Python Nodes Basics

Getting all rebar geometry in dynamo

How to Handle Variable Input List Length/Nesting in Custom Nodes (Python)

Seems like something is wrong with the number of arguments in the GetCenterlineCurves

(still using Revit 2016 btw)

perfect !

Now I need to find the intersection of these coordinates with the beam curveline.

The reason I need this is because I’m trying to export the rebar stirrup positions with their (relative to the beam) x coordinates to textfile.

There is off course a simpler way…To determine the distance between the x-coordinates

Is there a way to only list the x coordinates of the first curve of each element ?

Another problem is that this method does not work a set of different stirrups.

It gives me the curves of just one set.

Ok…I’m getting there. Wrote myself a pythonscript to get all the stirrup curve coordinates.

Now I’m trying to get all the separate distances. This might be a stupid question but is there an easy way to calculate the distance between all these points ? As you can see I know how to do it between the first two points, but I need a list of all distances.

Another option might be to extract just the x values from the points and load those into a python script.

Any ideas ?

Solved it !

With a little help from @Einar_Raknes

Note: This only works on a beam with stirrup rebar. No other rebars.

Next step will be to filter out the stirrups.

Stirrup distances.dyn (11.7 KB)

Removing mpo works, but how can the Python Script take multiple model elements and not a single element?

@Gcf_Design Refer this post @Einar_Raknes has described how to handle list with multiple elements.