I thought this was a simple operation to perform but I can’t seem to figure it out!
I would like to create a Structural Framing Beam from a set of rotating profiles using Dynamo.
The profile does not vary in size and is constant throughout the length of the Beam
The profile is always perpendicular to the Path curve
I should be able to precisely define the rotation of each profile along the curve
Is there a way to do this? The StructuralFraming.BeamByCurve component does not allow me to do so.
From a geometry perspective I could of course:
Divide the Path curve
Generate perpendicular planes
Rotate each plane accordingly
Orient the profile curves to each plane
Perform a sweep to obtain the solid form of the beam
The problem with the above method is that the result will not be a ‘beam’, i.e., I would not be able to change the profile of the beam natively in Revit and maintain the rotation of the profiles. And, it would not register as the appropriate Beam in a schedule.
I am new to Dynamo and there is probably a workaround available that I am unaware of.
I did see something by RevitCat using Adaptable Components which might work as a last resort:
I think what you have is a problem with how Revit defines beams, and what you are trying to do is more complex than the allowable definition.
Beams in Revit are line-based families. You can use different types of curves to define the “Line” in Revit: Straight line, Arc, Partial Ellipse, Spline…
One thing these all have in common is that the definition is planar: All of these curves are limited to definition in a single plane. You can monkey around with this a bit by changing parameters such as Start/End offsets, Z and y direction projections, etc, but the underlying definition is always planar.
If I understand your sketch correctly, it appears that it curves in 3 dimensions, so the Beam.ByCurve node barfs on the curve you are feeding it because it doesn’t know how to handle it. (Anyway, that’s my guess, because I know more about Revit than Dynamo)
So, I think you have 2 options: Adaptive components (whose geometry is essentially generic, but can be applied to every category) or in-place families (which may not be possible because in general, Revit doesn’t give you the tools to create true 3d curves, which is why people use adaptive components and Dynamo for more complex geometry.)
Now, just how these beams will behave when you try to work with typical Revit beam behavior (Beam joins/cutbacks, analytical models, level hosting, etc.) is a whole 'nother story.
Let us know what solution you come up with and why it works (and what about it doesn’t) and why the other options weren’t successful.
I agree with @Joe.Charpentier.
I just want to put an accent to some things:
You can definitely use the mass/adaptive environment in Revit to make that geometry.
It cannot be set to the structural columns/beams category.
it could be a reusable 2-point adaptive component.
You can definitely use Dynamo to create the geometry and import it as a Structural Beam/ column. But in revit it will be just a static component, a family instance with no parameters for controlling the geometry.
in both cases - Cutbacks, coping, etc is as Joe said another story.
I see another option here though.
A series of swept blends in a traditional structural beam family + Dynamo:
Here’s what I got:
Three Swept blends. Each profile is rotated 30 degrees counterclockwise. You can set it as a parameter, you can
probably do some math to keep the surfaces tangent to each other.
And I used Dynamo to place the family on some random nurb curve:
From what I understand, essentially I could get the form defined as a ‘beam’ as long as the path curve is planar, in which case I could use Rhino+GH to first optimize a complex 3D curve into a series of planar single-radius arcs, and then use the arcs as the paths for the swept blend.
Family parameters are accessible from Dynamo. There are nodes like Set ParameterValue By name and get parametwr by name.
Did you create a parameter in the family?
The dynamo definition and corresponding family can be downloaded here (sorry I am still not allowed to upload files):
The script can apply the profile to any planar curve and you can adjust the rotation angles of the end profiles using sliders. Each profile rotation is associated with an ‘instance’ parameter in the swept blend type definition.