Unroll fails

(I don’t need a workaround, but I’d like to know the reason why it fails.)

Unroll fails in this example:


CP_UnrollFail.3dm (348.8 KB)

_What tells me this untrimmed srf should unroll, it is degree 1 in one direction.
I tried to find out if there are multiknots.
_RemoveMultiKnot doesn’t remove knots, so there are none, or?

I _DupEdge d the curved borders.
_RemoveMultiKnot doesn’t remove knots.
So are the curves ok?

I made a _Loft from the two curves, style = developable.
This surface doesn’t unroll either.

Then I used the left curve only.
I looked for multiknots manually, but didn’t find any.
Made a copy to the side and _Loft.
Doesn’t unroll.

Extruded the left curve using gumball - unroll failed as well.


There must be something wrong with the left surface edge.

Any ideas how to analyze it?

my guess: its a tolerance-issue.
the surface is not developable - it can t be unrolled exactly.
its a ruled surface - but not all ruled surfaces are developable - (but all developable surfaces are ruled).

there is torsion at the lower end - draw the normals (_line normal) and you will see it:
(curvature-Analysis, Gaussian curvature will also show it - with the limitation of judging a the values like -0.0003869637)

unrollSrfUV will do it

unrollSrf will do it, if you scale the surface by 100 (which somehow is a hint, that it s a tolerance issue)

kind regards - tom

Hmm, ok, but that doesn’t explain why the extruded left curve doesn’t unroll either:

For now, I assume a weakness or bug in _Unroll, until I know better.

ok - so where does the curve come from ?
_ MakeUniform
and the surfaces will unroll.

the knot vector looks like this:

index          value                             mult     delta
          0       1.4438866944421342     3
          3       4.1020508003980893     1       2.658
          4       4.1022702995041174     1   0.0002195 <---- !!!
          5       8.2041016007961787     1       4.102
          6       8.2047934381803724     1   0.0006918 <---- !!!
          7       10.255127000995223     1        2.05
          8       10.256055007518505     1    0.000928 <---- !!!
          9       12.306152401194268     1        2.05
         10       12.307316576856632     1    0.001164 <---- !!!
         11       14.357177801393313     1        2.05
         12       14.358578146194759     1      0.0014 <---- !!!
         13       15.382690501492835     1       1.024
         14       15.384208930863824     1    0.001518 <---- !!!
         15       16.408203201592357     1       1.024
         16       16.409839715532886     1    0.001637 <---- !!!
         17       18.183418796765892     3       1.774

so every second knot value is nearly identical …
it looks like it should be a multi-knot …
maybe some import or coding misstake ?
i would call it “nearly” piecewise bezier style knot.
… and this can cause tolerance issues when evaluating the curve / surface

after uniform like this

 index        value        mult   delta
          0           0     3
          3           1     1       1
          4           2     1       1
          5           3     1       1
          6           4     1       1
          7           5     1       1
          8           6     1       1
          9           7     1       1
         10           8     1       1
         11           9     1       1
         12          10     1       1
         13          11     1       1
         14          12     1       1
         15          13     1       1
         16          14     1       1
         17          15     3       1

best - tom

It’s from a customer who made the surface in a jewelery design.
He already knows a workaround (_Rebuild).
In fact, his whole model is crap, as if he made it pixel precise.
Small 0.01 errors everywhere, unfixable in acceptable time.
Solution: New from scratch.

No, all the geometry was made in Rhino with standard tools, no GH.
In this case Booleans were involved.
I can’t retrace exactly, unfortunately.


Thanks @Tom_P for the detailed analysis.
I learned a lot.

CP_UnrollFail_knotFixed.3dm (377.0 KB)

by script i fixed the knot vector:

      index                     value  mult       delta
          0       1.4438866944421342     3
          3       4.1020508003980893     2       2.658
          5       8.2041016007961787     2       4.102
          7       10.255127000995223     2       2.051
          9       12.306152401194268     2       2.051
         11       14.357177801393313     2       2.051
         13       15.382690501492835     2       1.026
         15       16.408203201592357     2       1.026
         17       18.183418796765892     3       1.775

now unrollSrf works…
happy modelling … cheers - tom