Cross Section Rotations for Columns/Beams

Hi all,

I have created some columns with the standard “Add Column” (or “Add Beam”) component. You can see from the image that the columns are oriented differently even though I have not set any Cross Section Rotations. I did some initial checks and noticed that my lines are not exactly vertical which is the reason for the rotation error.

I know I can fix my issue by simply making the lines exactly vertical but I am interested into how the local coordinates of the beams/columns are determined. How does Revit (or Grasshopper) interpret the orientation of such lines?

Thank you,

Nothing fancy, we just push the curve you provide to Revit.
Have you tested to bake those lines to Revit and create a beam in Revit snapping to line start and end points?
You should have same result.

Hi Matthew,

Feel free to try the Geometry Gym Revit link for this, we have additional checks to detect this situation and create the intended column.



Hi @kike, @jonm,

thanks for your tip. My question relates to how Revit inteprets the curve and generates the local X, Y, Z axes for it to create the column or beam. For beams, it follows the same principle as in Karamba3D, however for columns there seem to be some disscrepency in this behaviour.

The local Y-axis (green) is at right angle to the local X-axis and parallel to the global XY-plane. This specifies the local Y-axis uniquely unless the local X-axis is perpendicular to the XY-plane. If this is the case, the local Y-axis is chosen parallel to the global Y-axis.

@jonm, your plugin works to fix this issue but it would be interesting to know how Revit natively deals with this topic. I assume this is more of a Revit question, rather than a Rhino question, as you @kike said, Rhino simply pushes the curve directly to Revit.

RhinoRevitBeamOrientations.3dm (27.1 KB) (22.1 KB)


I haven’t found the threshold documented where revit changes behaviour from vertical to non-vertical.
If anyone is aware of this, I’d appreciate to learn it.
We did implement a test to validate upon creating a column.

I remembered that DXF uses this algorithm to generate object coordinate systems.

I have not tested it but maybe Revit uses same strategy and same threshold.

1 Like