Despite all segments joining curve will not close


#1

Hello All,

I have had this problem in the past, there has never been a consistent workaround.
I am taking geometry from a partner with a loose tolerance legacy program and stitching his linework for laser, and very occasionally get the results that follow.

The curve in this example file does not close. If I CrvStart, explode the curve, join the segments that meet at the point, and then join the whole thing again, the new crvstart point will fall somewhere else! Talk about crazymaking… Simplifying does not help, btw.

Anyhow, I have generated an example file and checked to make sure this problem is repeatable, which it is for me (on Rhino5r8).

Looking forward to your feedback!

  • Dave

curveproblem.3dm (931.6 KB)


(John Brock) #2

HI
I haven’t dug through it point by point, but the CurveBoolean command will quickly “fix” it and makes a clean closed curve.

This is a handy technique for cleaning up bogus curves from TrueType fonts too.


#3

I will try, thanks much!


(Pascal Golay) #4

I do not see anything wrong with the curve so far- it looks to me like it ought to be closed. CloseCrv says it does that but the result is still open. I’ll stick it on the bug pile…

-Pascal


(John Brock) #5

Found it

I found it by extruding the curve and using ShowEdges to display the naked edges. That highlighted the two overlapping curve ends.


(Pascal Golay) #6

Hi JB - Hmm- yeah, there is a self-intersection there but it looks like it should still be a closed curve, wouldn’t you say?

-Pascal


#7

yes, I did the curve boolean and it showed the same flaw. Strange how the mark curve end tool puts a point in a relatively random places though, that misinformation was what stumped me…

However I appreciate the introduction into the boolean curve tool, thank you!


(Pascal Golay) #8

Hi David - that is as expected - if you explode and rejoin a bunch of curves, the order joined will not be the same, necessarily, so on a closed curve (which I still say this one is, despite the confusing feedback from Rhino) the start and and can be anyplace.

-Pascal


(John Brock) #9

I found another one.
CurveBoolean fixed it up quickly here.


(Pascal Golay) #10

Hi @cognitdiss OK, so it turns out the easy way to fix this is to convert it from a series of arcs to a NURBS curve. The problem appears to be that arcs are defined by angle and not start and end points- somewhere along the line these are not ‘adding up’ correctly. If the curve is a NURBS curve, then the segments are caculated by start and end point locations. To convert this curve to NURBS, turn on points for the joined curve and select one point, Nudge is (Ctrl+ Left Arrow key) & nudge it right back again (Ctrl + Right arrow) The curve is now NURBS and closed. (note the little looped area that John pointed out is still a problem as far as the shape goes, but does not affect the curve’s closed or open ness.

-Pascal


#11

Pascal, Thanks so much for the effort on this problem!

Is there a way to convert more than one curve to NURBS at a time?

  • Dave

#12

I’ve come across situations where the curve boolean created the same flaw as the original and found that by exploding the curve before _CurveBoolean usually results in a clean result - as in your example here.


(Pascal Golay) #13

Hi David- I guess the dumb-but-effective way would be to turn on points for all your curves, make sure at least one point is selected on each and then do the Nudge-UnNudge on all at once.

-pascal


#14

Thanks, I used curve boolean on them, worked great too!
By clicking outside of the closed curves i was working with they all booleaned at once, very helpful!

    • Dave