Well… This is a loaded question.
I’m assuming the use case here is fireproofing, in which case I’m still a fan of using a clearance family for this as it’s more efficient in the field both computationally, effort wise, and over time.
- Duplicate the structural framing model.
- Delete everything but the steel that needs fireproofing.
- Disable analytical model for all the elements.
- Right click on your steel type in the project browser and swap it out for the ‘fireproofing profile’ version of the family.
- Load this model into the project for coordination efforts.
I like this because in the end that fireproofing is going to be a built up, and can impede on stuff like headroom and the like, so you should have something to refer to.
If you really want to stay clear of that or because you’re just looking to have fun:
- Get the beam’s family type.
- Get the faces from the type (yes family types have geometry)
- Get the first face from the list of faces.
- Get the perimeter curves from that face.
- Build a polycurve from those curves.
- Get a bounding box of that geometry
- Get the maximum point of the bounding box
- Build a vector by the inverse X and Z values for the maximum point.
- Move the polycurve (5) by that vector (top center of the curve should be the origin now)
Likely from here you want to put that in place, so:
- Get the location of the beam.
- Find the coordinate system at parameter 0 of the curve.
- Rotate that coordinate system about it’s origin by 90 degrees on it’s Z axis.
- Apply this coordinate system to the polycurve from the family type (step 9 in the other list)
- Build a solid by sweep of the curve.
A few caveats:
- The first list of steps might nto work with all structural family types. I only tested W shapes. Instead of ‘first’ you might need ‘last’ or minimum item by area, or some other bit of content. Bounding boxes can help as that family will always be aligned and oriented about the origin.
- You may be putting clearance where you don’t have a beam, as the beams have cuts that we’re not tracking.
- This may not work with rotated beams, as we rotated the coordinate system about it’s Z axis which could not align with the rotation of the beam.
All of those issues can be overcome with an alternative method:
Obviously there are some potential issues here, mostly around offset geometry becoming invalid (you can’t offset a solid into itself any more than you can put your hand though your leg), but it’s likely that the bulk of your families will work out just fine this way, and you’d get the 2" of coverage on the ends of the beam as well (though you may want to remove that in some cases.