3d curve creation, series of same degree & pt count crvs needed

I need a set of 3d curves of equal degree and point count from which to model into adjacent surfaces to combine into a single multi-faceted surface with some follow up filleting.

The need is for 19 curves built to close tolerances, all in a 15" high by 48" wide by 10’ long arrangement

I have begun guide curves in profile and plan views from which I had intended to make the 3d lines using crv from 2 views. The guide curves are all degree 5/6 point

Results of c2v cmd are 3d curves of differing degrees, differing point counts and w/ shape variation.

Manipulation of control and edit points by hand is not working.

Can anyone pls suggest a better process or a way to quickly and accurately rebuild 3d c2v lines?

Tommy M.

Hi Tommy -
Can you post an example set of curves?

@tfostermorphis - see if this helps at all - I don’t know what your curves are like, but if you can get a copy of the nice curve somewhat close to the Crv2View output (or any nasty curve), then run this script, it may clean up well enough.

Example - TuneUpCrv2View.3dm (32.5 KB)

MatchCurveStructure.py (1.2 KB)

To use the Python script use RunPythonScript, or a macro:

_-RunPythonScript "Full path to py file inside double-quotes"


1 Like


Thanks for responding.

Here’s a file showing two of 19 adjacent nurbs curves. i.e. 19 in profile and 19 in plan.

I have yet to do the first thing re scripting.

I’ll go now to see what I can find on how to…


Tom M.



I’m back to scripting in Level 2 Manual.

How badly might I screw this up?


Hi Tom - it looks to me like it will be hard to closely match the 3d shapes with the single span curve - at least in any fully automatic way, but the tool I posted can help you pull it closer if you get it somewhat close by point editing.

starting curve

First try -

If you give the curve a little more to work with - insert a couple of knots, if can start to get close -


Trying to automate curve fairing for boat building, frankly, isn’t going to work. It’s an art not a science. The “solution space” of the problem is literally infinite, the rebuilding tools are too crude to get you more than partway. If it could be done it would have by now–maybe if you want to get into machine learning, I dunno maybe? Do you have 1000 clean hull models to train it on?–many many people make boats with Rhino. It just takes some practice to get the hang of, and time to do.


Thanks for working with me on this.

I am following SCRIPTING instruction in Level 2 Manual.

What exactly should be showing in Options> File Search paths?

What I am loading ends up not being selectable in Rhino Script > Load Script File. The Load button remains grayed out.

If kinks and knots are inserted will opposite curves in surface development have to have the same number and location of kinks & knots?



Jim C.

I have 2d profile and half-breadth (plan) curves for a multi-chined planing power boat. We cannot combine info to create accurate 3d lines?

Most Rhino hull development that is showing to date is organic forms, displacement hull, or single chined planing hulls.

Maybe we have reached a limit here.

Thanks for looking at this.

Tom M.

Hi Tom - instructions for running a pythong script are in the same post with the script -

To use the Python script use RunPythonScript, or a macro:

_-RunPythonScript "Full path to py file inside double-quotes"


Well, no. There’s no NURBS math that says that this curve in top view + some other arbitrary curve in side view=a perfectly fair 3D curve. Even if there was it’s not physically possible to input them accurately enough. If you want a fair curve…just draw the curve in 3D?? What is the aversion to doing that? It takes minutes.


Okay, I’m working on it…


As per Level 2 Manual instruciton I haveI have placed _-RunPythonScript “Full path to py file inside double-quotes” in Options > File Search Paths.

Tools > Python Script > Run gives me a “Run python script” wind with a folder samples, image attached.

The “advanced” folder is empty.

I see no option for script to make loose curve from 2 view"operation.

Hi Tom - I uploaded the script itself to the post above.

Download that py file.
In Rhino, use RunPythonScript and navigate to where ever you saved the py file and select that file.

Or, use a macro:

_-RunPythonScript "Full path to py file inside double-quotes"

Which is handier because you can run it from an alias or button. Note the dash in front of the RunPythonScript command in this case.



If I accept the C2V 3d line, as is, w/ variances in point count compared to 2d input, 6 pt to 50 or 60. Degree appears to remain same as input curves. Form appears accurate.

Maybe all 3d lines, regardless of number of points, could be made with existing C2V cmd and sections might be made at each station. Results would be that a point set, for each 3d line will be arrayed longitudinally with a point at each station/section.

If I re-draw thru these points, will the new curve conform to the desired shape w/ consistent degree and point count between pairs for surfacing? My intent is to surface w/ edge curves w/ minimum, matching, point count and degree.

I’ll give it a try as we try to get the script for C2VLOOSE, going.

Thanks again for your commentary.

In the Level 2 Manual there is no instruction re saving and retrieving the script.

I’ll try to get it set into the alias cmd group.

I copied and pasted the script into Options>Alias Command macro. Exception window result:


The alias’ command macro would contain just

But first, left click and save:

The link is saving into my download file as a word Doc PY file.

I got it saved as a Notepad file and changed it to a Rhino 7 file.

MatchCurveStructure.txt (1.2 KB)

I enter the C2VL (Alias) cmd and get the same Exception Occured window.