# Curve.GetPerpendicularFrames Method not working in Rhino 6.2

hi, it seems that Curve.GetPerpendicularFrames Method is not working in Rhino 6.2. No returned value…

http://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Curve_GetPerpendicularFrames.htm

Please provide a working code sample and a file containing a curve that does not work for you.

Thanks,

– Dale

its working now…thx

Hi @dale, I didn’t want to open up a whole other thread, but today I noticed that `Curve.PerpendicularFrameAt` and `Curve.GetPerpendicularFrames` return different results for the same curve parameter.

I wondered if this is due to the perpendicular frame needing an initial value for minimizing twist? It was on a planar curve, so there would be no torsion. How is the perpendicular / RMF calculated in Rhino anyway? I’ve come across several techniques and am curious about which one you use.

Thanks!

Hi @tom_svilans,

I can see where you’d be confused, based on the method names and descriptions on the online help.

`Curve.PerpendicularFrameAt` - Returns a 3d frame at a parameter. This is slightly different than FrameAt in that the frame is computed in a way so there is minimal rotation from one frame to the next. The `OrientOnCrv` uses this.

`Curve.GetPerpendicularFrames` - Get relatively parallel frames at selected points along a curve. `Sweep1` and `Sweep2` commands use this.

Does this help?

– Dale

Thanks, @dale, however those sound very similar to me, but they are apparently not…

`Curve.PerpendicularFrameAt` returns a frame with minimal torsion, as opposed to `Curve.FrameAt` which appears to be just the Frenet frame at that parameter (using tangent and curvature vectors).

`Curve.GetPerpendicularFrames` also returns frames that, as you say, are mostly parallel and have minimal torsion, but just seem to be calculated differently somehow.

The reason for all of this is a custom class which queries a curve for an orientation frame. The two methods seem to only differ in that one returns a single frame and the other returns multiple frames, so I assumed that perhaps `Curve.GetPerpendicularFrames` is just somehow performance optimized for getting multiple frames at once.

I guess I’m wondering how they differ in getting the normal of the curve, since they show different results… Just confused by the whole thing!

In the meantime, for my purposes I can use `Curve.GetPerpendicularFrames` and get what I need. Another caveat of that method is that it requires at least 2 parameters to work… putting a single parameter in results in a `null`.

Thanks for the help!