- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi everyone,
I’m trying to build a Dynamo script that automatically generates stirrups inside a beam, but I’m running into issues with the geometry and placement of the rebar. I’ve spent several days trying to troubleshoot (even with ChatGPT) but I still can’t get it right, so I’m hoping someone here can point me in the right direction.
What the script does so far
The script starts by asking the user for several inputs:
The beam element to place stirrups in
The rebar diameter
The stirrup shape (rectangular for now)
The spacing (eventually I want to support 3 sets of stirrups per beam — two end zones + one middle zone — but I am currently testing with just one set)
With Python, I extract:
The perimeter curves of the beam’s cross-section
The surface and geometric data for reference
I compute a centerline for the stirrup by offsetting the perimeter curves inward.
The offset considers:The beam’s cover
Half of the bar diameter
I feed the resulting curves into Rebar.CreateFromCurves (via the Create.FromCurve node in Dynamo) to generate the stirrup.
The problem
Even though the offset geometry looks correct (conceptually), the resulting rebar:
Has incorrect dimensions
Is sometimes larger than the beam itself
And worst of all, is being created outside the beam, instead of inside the section
I’ve double-checked:
Coordinate systems
Units (I fixed an earlier mm vs cm issue)
Offsets
The curve order
The shape matching Revit’s default stirrup families
But the problem persists.
What I’m trying to understand
Why do the stirrups get created with the wrong dimensions even though the input curves should match the adjusted section perimeter?
Why does Revit place the rebar outside the beam, even when the curves are clearly inside the cross-section when inspected in Dynamo?
Is there something special about the coordinate system or curve direction that I’m missing when working with Rebar.CreateFromCurves?
If anyone has run into this before or can spot what I might be doing wrong, I would really appreciate the help.
This is part of a larger workflow I’m developing, and I feel stuck at this point.
Thanks in advance!
Solved! Go to Solution.