Difference between Two Curve Commands

Hi Everyone,

an Intro that can be skipped

I’m working hard to try and confuse myself with the results of an experiment I probably don’t really need to know.

I work as a finish carpenter, and do my fair share of staircases and handrails. The vast majority of these are straight runs… and a few have been simple curves that bender rail is capable of dealing with.

So far I have not had the opportunity to get involved with a showcase style staircase that goes past the range of what bender rail can handle. But I’d really like too one day, and until then… I mess around with modeling, and design them in Rhino.

Main Question (simple form):

Is there a way to get the Curve Command to create the same path that the CurveThroughPoints command generates?

… and getting long winded, (I’m sorry to say):

In the picture below… I have rising treads with a set offset from each edge.

Sometimes, I’ll just run the Curve command… and set all of my control point where the offset and leading tread edge intersect… and that gets me a nice curve that doesn’t go through all of the control points that I clicked on.

Alternatively,… If I actually add in Points to these locations… and run the CrvThroughPoints command… I will end up with a curve that stays on course every time.

Color Key:
Cyan Curves = CrvThroughPts cmd
Magenta Curves = Curves cmd

Curves_Diff (handrail tests).3dm (2.4 MB)

Attempts to save face, and minimize my foolishness:

I guess it goes without saying that different commands exist for good reason… and that just because two commands share a common word (‘curve’) doesn’t mean that they should act the same way in a software program.

But I can’t stop from thinking that if I better understood the details behind this difference… I’d be doing a better job at modeling with Rhino.

Is it possible that these two tools create a different type of curve… i.e. the Regular Curves command doesn’t have an option for different Knot, and Curve types like whats available in the CrvThroughPts command. Or does it, and they just happen to be settings that are available somewhere else.

Anyhow, Thanks to everybody who made it this far… I really like this forum… But I’m starting to push myself a bit harder now because frankly I want to model much better that I currently do. I’m guessing that having a stronger understanding of how the NURBS Curves work… can only help with generating better surfaces.

Take Care, and Thanks Again,


Hi @JimD
Take a look at the Interpcrv command, instead of using Curve. Basically curves in Rhino have two types of “controls”: edit points and control points. Edit points are always on the curve (and it is those you input with the Interpcrv command - as long as your curve is degree 3). Control points are not on the curve (except for the end points if the curve is open).
If you use Interpcrv you should get what you are seeing with CurveThroughPoints and if you want to edit the curve using these points, use EditPtOn.
There’s a lot of theory behind the two types of points and the different degrees of curves/surfaces - I’m not the one to explain it to you, but there’s lots of info online. Wikipedia’s article is a good place to start :slight_smile:
HTH, Jakob

1 Like

Thank You, Once Again, Jakob.

I have benefited from your good advice before… and I still appreciate all that you have said to me.

The Iterpcrv command sounds like the perfect tool for my handrail path experiments. I’ll save a good deal of time, by not having to go in and set points in place at every tread position.

Sadly, I’ve looked at the NURBS info before, and frankly, it doesn’t sink in as deep, and as fast as I might have hoped for.

So I think I’ve realized that I went about this the wrong way… and this very question sort of shows what that mistake is… Mainly, I haven’t yet made a point of associating which control types goes with each tool/command. and that certainly seems like something I should know in advance before I try and sort out any of the back theory behind the curve types.

The other mistake I made is that I didn’t address this stuff on a consistent basis… I jumped in and read for too long… and then set things aside for too long. I’d be better off studying this a little at a time but at a very stead rate. Something like an hour or two twice a week… instead of a deep dive twice a year.

Take Care, Jakob… and Thanks Again,

Just to be clear - curves have both edit points (always on the curves) and control points (more often not on the curves) and both can be used to edit. InterpCrv lets you place input locations that are more like edit points - the curve will pass through those points, and the Curve command lets you place inputs that are control point. Note CrvThroughPt also lets you choose how the input will be used.


1 Like

Thank You, Pascal

Included in my list of mistakes is that I adopt, and think about these terms in too casual a way. The natural overlap between the words… should not be taken as a license to assume too much, or to get sloppy about their actual existence and function within the Rhino world.

So I’ll try to tighten up my definitions here, and hopefully that will change the way I think about these tools too.

I do feel like I understand everything that You and Jakob say, and even most of the other posts that I read… it all make very good sense. But then there is still that other side of the feedback loop where if you can’t explain it back to someone else… you have to keeping think about it, I suppose and I need work on this side of things to.

So Thanks, Pascal. Please feel free to hold me accountable if you feel like it. I don’t want to burden you with extra work… But I very much like to see the sort of comments you just made.

I think in the near future I’m going to post up a comment where I write about what I think I know, and then let people point out where they think I’m going off track, if they wanted to. That will help me clarify and edit down my own thinking about how this all interconnects.

Take Care,


CrvThroughPt is spelled CurveThroughPt.


So I’ve noticed a duality here. I was working with the two different commands we’ve been discussing… Curves, and InterptCrv and it’s easy to make sense of the way control points, or edit points interact with each curve.

Do these two commands generate the same NURBS curve?

or maybe better stated…

Does Every NURBS Curve have Both Edit Point and Control Point properties throughout the length of the curve?

Because it seems so…

If I draw a curve with either command… I can make Edit Points appear if I run the EditPtOn cmd. or I can get Control Points to appear if I use the PointOn cmd.

And this is a VERY WELCOME benefit (discovery) for me, in that I can have the best of both worlds at any time. regardless of which command I use to draw in a curve.

I do realize that the two different edit modes (if I can call them that) might not place the points where I would have set them at input. (e.g. in my handrail path example above a curve drawn in with the Curve cmd isn’t going to magically snap it’s edit points to the locations I would have used just because I run the EditPtOn cmd… those edit point are going to be placed where the theory needs them to be for the curve to stay true to its path… I would imagine).

So in a way my question about the duality of NURBS controls, might be one of theory vs. implementation.

Rhino’s two different edit mode options… reveal a characteristic of a curve which I don’t see mentioned in the NURBS articles I’ve seen. The articles tend to focus on the math behind one of the control handle types… but they are not really showing how both might exist along the same curve path.

Incidentally, Is it alright if I refer to these collectively as 'control handles’? or does that start messing up terminology that appears later on in the theory.

Take Care, Everyone,


Only true with InterpCrv and Knots=Unifrom nor with CurveThroughPt and CurveType=Interpolated and Knot=Uniform

Not true with InterpCrv and Knots=Chord nor with CurveThroughPt and CurveType=Interpolated and Knot=Chord


If you create a curve using control points, for example using the Curve command, or the CurveThroughPt with CurveType=ControlPoint then the control points of the resulting curve will exactly match the input points. With the two commands mentioned the curves and edit points of the curves will also be identical but that is not always the case depending on the knot parameter values. Curve and CurveThroughPt generate curves with “uniform” knots.

The term “control handles” is usually used for the Bezier curve formulation of control points. Note that every Bezier curve has an exactly equivalent NURBS curve.

1 Like

Thank You, David.

I think your comment is Great. You’ve managed to add in enough clues to let me go back now and revisit the Bezier Curves, and find what comparisons I’m able to.

Like a lot of people, I suppose… I learned how to use the pen tool in illustrator and freehand some time ago. I always thought I used that tool fairly well… and I often think about it when drawing in CAD programs. Now that I know there is some commonality between Bezier curve, and NURBS curve ideas, that’s going to be a nice piece of the puzzle here. Maybe not so much because it will help in Rhino… but because I have past experience with it, and like it or not… there is always a part of me that thinks in terms of Bezier control handles whenever I’m drawing any path. regardless of the program or the tool I’m using.

(speaking of Rhino commands) It’s nice to see some interconnection here. In the past I just use these tools as independent things… but now I’m realizing that they also function as a set, and complement each other.

Ultimately, that’s what needed to find… even though I didn’t express it as such.

Take Care, David, and Thanks Again,