Structural frames oriented perpendicular to each curve


Is there a way to orient structural frames perpendicular to each curve? Here is a screenshot of my unfinished script (including the script). I just do not know what to put in the ‘Value’. As you can see in the other screenshot, frames are not perpendicular. (45.2 KB)

What is the parameter you are getting with the List Item component?

Can you post a small example of the revit file as well?


Hi Japhy, thanks for your prompt response. I was trying to get the ‘Cross-Section rotation’ parameter and I missed including it. At this point, I only have these four frames in Revit and as you can see the angle of rotation for each beam is not correct.

frames.rvt (4.7 MB) (50.5 KB)

Here’s a quick example of controlling the rotation, for some reason i had to convert to Radians though. @kike (51.7 KB)


The tricky part for you is going to be getting the correct vector direction to rotate to. The panels you are working with aren’t planar & you will have to approximate a vector from the angle of the adjacent face, then do some math to get the correct rotation. Perhaps a unit circle at the mid point to intersect the two faces. Branching is going to be tough align too (vector to member).

1 Like

Rhino.Inside.Revit components work in Rhino document units for length values and in radians for angles like any other OOTB component from Grasshopper.

The idea behind this is to avoid mixing units on the same Grasshopper document.

1 Like

@Japhy @kike do you think there could be a way to use the actual surface vectors (unlike the diagonal panels that I have shown previously as an example)? For Rhino and visualization purposes, I have an actual surface with structural members swept along the diagrid curves (here is my script for that).


Look through some of the grasshopper threads on crease angle, or getting the angle between surfaces. I’ve seen very similar to what you are trying to do.

Thanks! I will take a look. Just leaving it unresolved for now, in case others have a way to resolve this.

Hi I am running into something similar.

I am placing some beams by some curves, The curves consist of lines (Slanted) and arcs.

The beams for the lines go perfect, but the beams an the arcs are rotated 90 degrees visually. When I check the parameters of the arced beams, the cross-section rotation is 0. How is it possible that grasshopper places them 90 degrees rotated visually

Hi @Joël_van_Herwaarden,

Revit Cross-Section rotation is measured in the frame of the curve for curved elements.

Is this a grasshopper thing because this is not the vase if i do this by hand or with Dynamo

Now I have to do extra steps and extra checks to get my beam right.

In previous projects where I used RI, this didn’t happen?

Is it the same type??
Could you please share the family here?

BOL_SF_RogiroLigger.rfa (464 KB)
Same Family
just made it

BTW i cannot reproduce the result I get from grasshopper by hand. I cannot imagine how grasshopper does this


Let me check.

1 Like

This is what I get.

And a vertical arc


What version of RiR do you have?

Latest, downloaded it this morning, I am using Revit 2020, I will also check this in 2022

As for your result, This is the same as what I get, the only difference between your model and mine is that the crosssection rotation of your beams differ (which should happen).

If you turn them both to 0 you get something like this, which is what I desire

But if I do this with grasshopper I get this as shown below. Both the cross section rotations are relative to their plane, which is not desired

This is what I get from the tooltip.

But this is not what Revit UI is doing.

1 Like

Apperantly the Revit UI and Dynamo.

But what happends in the Revit UI and in Dynamo (and in previous versions of RI which I used in previous projects) is more desirable, because it is more predictable. I now have to manually rotate each beam either 90 degrees or -90 degrees because some beams apparently have a flipped work plane then others.

There is no logic in the beams placed with RI, thus not usable