Unroll SRF exits a polysrf

Hi,

could anybody explain what did i wrong drawing my curve? I have a single surface, i try unrollsrf and the result is a polysrf.
i found this post multiple knots and @Helvetosaur showed a solution but i’d like to know how to avoid this to happen.

Thanks!


UNROLL.3dm (75.7 KB)

Your initial extrusion doesn’t seem to be a surface. If you can explode the red curve into two segments, the result will also be two surfaces.

Hi, thanks for answering!

you cannot explode this curve:

and the extrusion is a single surface

the problem appears if you try to unrollsrf or use dividealongcreases (@Helvetosaur trick).
Never had this situation before, not sure if it’s related to the curve tool (handlecurve),

Any idea @Gijs ? Just to avoid this while tracing curves

The curve has a multiknot. If you ConvertToBeziers, you’ll see that the curve becomes two curves.
You can also see this if you look at the control point structure and the curve: the control polygon is touching the curve:

The same location will show a split after ConvertToSingleSpans on the resulting extrusion.

2 Likes

ConvertToBeziers is not useful for determining if multiknots are present. ConvertToBeziers splits a curve at every knot, not only at multiknots, into single span curves.

ConvertToSingleSpan is the equivalent command for surfaces.

2 Likes

you’re correct about that. I don’t know if there is a way to test curves for multiknots.

I only know RemoveMultiKnot and check the result

I know of two ways to determine if multiknots are present.y.

RemoveMultiknot command will report if it finds and removes multiknots. Use Undo if you want to keep the multiknots.

List command and examine the results to see if the multiplicity of interior knots is greater than 1.

1 Like

Yes I know that one, but it won’t show you the locations. Also there is no way to tell if there was one or multiple multiknots.

ah, I didn’t know of its existence.
I see there is access to Multiplicity in RhinoCommon, but I found it rather confusing.
For example, if I run this code on the curve from this thread

#! python 2
import Rhino

import rhinoscriptsyntax as rs

crv = rs.GetObject("select curve to test")
if crv:
    c=rs.coercecurve(crv)
if c:
    for i in range(c.Knots.Count):
        print c.Knots.KnotMultiplicity(i)

I get

3
3
3
2
2
3
3
3

as output

List is semi-secret and the second line of it’s reports is:

DEVELOPER DEBUGGING INFORMATION ONLY
Use the Rhino “What” command.

However List provides much more informaton about objects than What and can be very useful in understanding what is going on with objects, provided the user has some knowledge of NURBS.

For the curve from this thread List reportst:

Rhino object: curve
DEVELOPER DEBUGGING INFORMATION ONLY
Use the Rhino “What” command.
Runtime serial number: 41
name: “”
id: 4D05921E-3A14-4323-A424-C84D162EB1F7
layer index: 1
render material index: -1 (from layer)
ON_NurbsCurve dim = 3 is_rat = 0
order = 4 cv_count = 6
Knot Vector ( 8 knots )
index value mult delta
0 0 3
3 0.5 2 0.5
5 0.99890824908440301 3 0.4989
Control Points 6 non-rational points
index value
CV[ 0] (-272.74892919008335, 546.86844278331387, 0)
CV[ 1] (-298.98500892067398, 503.03259999879083, 0)
CV[ 2] (-312.74892919008312, 481.53352942784829, 0)
CV[ 3] (-312.74892919008312, 372.3227174555708, 0)
CV[ 4] (-271.50894807410805, 271.18307107812331, 0)
CV[ 5] (-151.55399111764982, 241.52556370531792, 0)

The difference between the List and RhinoCommon results for knot multiplicity is the List results show one line per group of repeated knots (multiknot) while the RhinoCommon results show one line for each individual knot, whether repeated or knot. So 3 lines compared to 3 + 2 + 3 = 8 lines of results.

2 Likes

thanks, yes I see that now.

I’m curious:
How can I create a curve with multiknots?

one way to do this is to merge two curves with smoothness=0