Open a closed curve

Strange I can’t figure this one out: how do I open a closed curve? Basically I want to open a closed curve at its seam, while maintaining the exact same shape of the curve - split the seam point into 2. The open curve would have a starting point and an ending point in the exact same place.

Further along these lines :smile: : how do I create an open curve, with the start point and the end point are in the same place? When I place my end point, Rhino automatically closes the curve. I suppose I could create the last point away from the start point, then use point snap to place it correctly. Is there another way to do it?

Last question: when I create a curve, Rhino gives a Sharp option. What is a Sharp point, and how do I convert a sharp point into a “dull” point? :wink:


The answer to both these questions is “You can’t”. Once a curve startpoint snaps to its own curve endpoint, the curve automatically closes. In Rhino it is not allowed to have an open curve with concurrent start and end points. Why do you need this?

Running MakePeriodic on the closed curve with the kink in it will remove the kink and make it continuous.


You cannot have a curve with coincident start and end points that is not closed, but you can yank the ends apart using testSeamOpener. That may or may not actually be useful for what you want to do.
(test commands do not autocomplete, are undocumented and unsupported and ‘at your own risk’)



And, if, for some reason, you need the start / end point to be at a different location, you can use the CrvSeam command to move it.

Thanks Pascal. This is useful - I think it should be part of the main UI, no?

I’m making fabric patterns using Unroll Developable Srfs - it’s actually fine if my curve is closed, just as long as the start/end points are “sharp” or “kink” type.


Oh, OK, you can do that by using _MakeNonPeriodic (in most cases I think). --Mitch

I’m creating a surface using Sweep2 that I intend to unroll (for pattern making). However, when I use cross section curves that are closed, Sweep2 produces a polysurface result. When I use cross sections that are open (with the beginning and end points extremely close to each other, kind of “faking” a closed surface), Sweep2 gives me one surface result, which is what I want. Question: why can’t we create a curve with a coincident start and end point? For me this would be very useful. Is there a technical reason why this is not possilble?


It won’t do that unless you have curves that are kinked. Kinked curves - open or closed- will produce polysurfaces with Sweep, Loft, etc.


Yes my cross section curves have a kink at the “seam” position. This is where I would like the coincident start/end points to be, if I could keep the curve open.

If all the closed curves have a single kink and the seam line is lined up at the kink points, you will still get a single surface with Sweep. However, it doesn’t sound like it’s going to be developable unless either the rail or the cross sections are straight - otherwise you will have a double curved surface…


SingleKinkSweep.3dm (401.3 KB)

Thanks Mitch- Yes all the closed curves have the kink in the same place - they are all copies of each other, then tweaked/scaled to fit the shape I need. All the kinks line up at the seam. I get a polysurface result. I do get a doubly curved surface however, and I was planning on using Squish to flattened it.

Shouldn’t happen, unless at least one of your curves has more than one kink in it… Can you post the curves?


OK I think I see the problem here - the cross section curves were made by joining 2 straight segments with an arc. Where the arc portion starts, there is another kink. You were right about that. How can I ‘unkink’ only a specific point? MakePeriodic smoothes the entire curve…


You could replace the arcs with curvature continous blends, turn on the control points and delete the control points where the curves originally joined. Depending on accuracy needed, you’ll have to move the control points so get closer to the shape of the original arcs.

Without seeing the curves, it’s difficult to know the best way to repair them. One thing to try is to use RemoveKnot at the kink point - once or twice at the same spot depending on the curve - to get rid of the kink point. The other thing to do is try to artificially create a tangent condition by lining up the two control points on either side of the kink point plus the kink point itself along a straight line. If all of your segments are tangent, Sweep should create a single surface.

In any case, either of the above methods will change the shape of the curve somewhat.


I know that this is a very old thread, but the testSeamOpener is a very useful command. I created a complicated surface and later found that I needed a portion of it to create a shape for Sweep2. I needed to extract part of the curve I used to create the surface. This command worked perfectly for me to extract the section of the curve I needed.

Old thread… yes, but “testSeamOpener” does a great job for me. I am "Cutting Plane"s through a sorta cylindrical surface > “Intersecting” for a curve > "Flow"ing those curves into a rectangular surface. Before this command, the closed curves from “Intersect” became wonky closed curves on the rectangular surface and unusable for me to create patterns to “Flow” back onto the sorta cylindrical surface.
Thanks Pascal!

Thank you Pascal. Ii is very useful command.