Bug in extend surface? See file

Hi @pascal and @wim.
I have a customer who upgraded from Rhino 5 to Rhino 7 as he just got a new mac (not m1).
But he complains that untrim and extend surface is horribly slow, so I asked for a dummy file and I see that extend in Rhino 7 on Windows is horribly slow and buggy too.

Please take a look.
Just run ExtendSrf and try the edges.

210407_rhino5_test.3dm (3.5 MB)

Hi @Holo

I confirm what is explained, very slow operation here.
Tested on Rhino7 for Mac Version 7 (7.5.21096.11002, 2021-04-06)

I don’t know how was obtained the trimmed surfaces, but what is questioning me is the tolerance I see here.

I don’t have a clear answer, but what I see is that simplifying the surfaces ie with FitSrf or RebuildUV, fixes the problem, the ExtendfSrf operation becomes really speedy.

For now tolerance is my concern (maybe I am wrong ), let’s see if someone can clarify this with more robust arguments.

The good news is that it is easy to fix.
Hope it helps.

Rodolfo Santos

The surface is from a well working Rhino 5 file, that file was then just opened in Rhino 7 and saved.

The customer just bought a heavy duty mac and Rhino 7 to handle bigger projects, but right now the old mac and Rhino 5 works better, so we are testing to see if Rhino 5 can run on the latest OS with the latest hardware.

Hi Holo, I’ve tried your file on V7 Win10.
I confirm (as Rodolfo stated) that the extend srf has some problems… probably due to trimmed borders…
Untrimming is working fine and, after untrim, the extendsrf works fine too.
I’ve tried also to FitSrf (U3 V3 Tol. 0.001 Retrim=yes) and the result is good too (extendSrf works fine as expected).
Wouldn’t be better to call FitSrf before ExtendSrf instead of putting V5 on new Mac?

Thanks, I’ll pass it along as a workaround. V5 doesn’t work on Big Sur anyway, so he has to adapt to new processes anyhow.

Hi Jorgen - I see this, thanks.

RH-63761 ExtendSrf: Slow in V7


If the original structure of the trimmer surface is not necessary anymore, then it may be better to use:

  1. ! _DupEdge to copy the 4 edges of the trimmed surface.
  2. ! _RefitTrim of the trimmed surface.
  3. ! _RemoveMultiKnot of the trimmed surface.
  4. ! _MatchSrf _MultipleMatches on all 4 surface edges with the “Continuity: Position” and “Match edges by closest points” options.

Maybe it’s another BUG, but ! _RefitTrim does not work after ! _FitSrf. :slight_smile:

But the big issue here is that it all works fine in v5. So why should v7 need to rebuild the surfaces and the trims?

In general, that trimmed surface has lots of imperfections. If you extract an edge and run ! _CurvatureGraph on it you will notice that the graph hair is very uneven. Also, the extracted curve itself seems to have a few areas with kinks. The latter is easy to notice if you select one of those points and move it in any direction - that will expose the sharp kink.

That’s correct

Extruding two edges of one of those surfaces leads to unexpected results.

We get one Srf and one PolySrf.

The flow of CP’s is irregular at few locations
Screenshot 2021-04-10 at 07.53.33
And yes, lots of kinks involved here

Starting from this, it is not surprising that Extending such a surface takes some time to compute.

Based on these observations, I would not point Rhino 7 as the main problem.

I would instead investigate to try to understand which approach has been taken to obtain those surfaces in Rhino 5. ( possibly, in the context of the original RH5 file with all history relationships available things are more easy to manage… )

If the problem described here is related to the modelling approach, this may happen again no matter which version of rhino will be used…

Rodolfo Santos

1 Like

The first rule in the NURBS surfacing bible says: “Keep the geometry as clean as possible”. :slight_smile:


Available soon on Amazon…
Rodolfo Santos

1 Like

First commandment: you will have no other Cad other than Rhino.
Second commandment: do not take the “Autodesk” name in vain.
Third commandment: Remember to sanctify the Mcneel webinars.
Fourth commandment: Honor Bob and consort.
:joy: :joy: :joy: :face_with_hand_over_mouth:

I absolutely agree to that when working with high class surfaces, but the problem here is that it should not be necessary to change a workflow that has been used for 20 years just because the new version has some issues or has been tuned to be much more picky. V5 works, the modeller is a skilled, fast Rhino modeller that uses this workflow to quickly sketch up ideas, so rebuilding surfaces when form finding is not desired. He would rather continue using V5 than mess with all this. MAYBE this would not be a problem if it was built from scratch in V7 though…

Anyway, thanks for all the input and workarounds, and please keep em coming!

I also use some not-so-clean surfaces if time constraints put me into a hurry, however, over the years I figured out that I actually work faster when my geometry is cleaner, because that way I avoid random issues that may lead to slowdown. Just like the example trimmed surfaces from this topic.

The “problem” with NURBS modeling is that the new surfaces using trimmed edges are always more complex than the input geometry, and sometimes lead to issues with tolerances and inability to join edges. This is why it’s essential to reduce the complexity of the input geometry as much as possible.

Also, keep in mind that Rhino 5 had something called “Relative tolerance”, and as far as I remember it was removed from Rhino 6 and Rhino 7. Maybe this is the reason for the different result between Rhino 5 and Rhino 7 while your customer tries to extend a trimmed surface?



@dale can you comment this please?

This topic gives some more light about what “Relative tolerance” is:

Essentially, the “Relative tolerance” is an alternative override tolerance used only by some Rhino tools that need a higher or lower tolerance than the “Absolute tolerance”. It’s a good thing to have “Relative tolerance” as an option, especially if it could be set to the “Split” and “Trim” tools to use, say, 10 or 100 times more precise tolerance.
I remember that I had troubles with trimming certain surfaces with a curve at a very small angle (almost parallel to the surface edge) and created a topic somewhere on this forum long time ago to describe the issue. It happens from time to time and the solution is to temporarily make the “Absolute tolerance” from the default (my default) 0,001 mm to 0,0001 mm or 0,00001 mm, then trimming works fine.