Strange surface - how to fix?

Strange Surface.3dm (2.7 MB)

This multispan, single surface is degree 3 x degree 1 and has a G1 discontinuity. RemoveMultiKnot returns “One object had no multiple knots.” Explode returns “Cannot explode single surfaces.”

My recollection is I created it using MergeSrf though I don’t recall the option settings used.

I need to eliminate the discontinuity. How ??? (I’ll split it at the discontinuity, and then MergeSrf with a different option settings but there should be a simpler method, like `RemoveMultiKnot.)

Version 7 SR16
(7.16.22061.3001, 2022-03-02)

From List:

surface details:
ON_NurbsSurface dim = 3 is_rat = 0
order = 4 X 2 cv_count = 10 X 2
Knot Vector 0 ( 12 knots )
index value mult delta
0 -9 3
3 -7 1 2
4 -5 1 2
5 -3.5000000000000022 1 1.5
6 -2 3 1.5
9 41.173434356778188 3 43.17
Knot Vector 1 ( 2 knots )
index value mult delta
0 0 1
1 80.738148259153036 1 80.74

Hi David - there is a fully multiple knot - these are (by design) not included in RemoveMultiKnot - but DivideAlongCreases splits it at the tangent point. RemoveKnot once there will let RemoveMultiKnot work but it is not a happy thing.

Fully multiple knots are special enough, I guess - that is not usually what one wants to clean up - more like the output from Sweep2, things like that.


What is the rationale for that?

Strange Surface_tp.3dm (3.5 MB)

Dear @davidcockey
is the attached file / surface something you re after ?
Degree 3 / 1, 7x2 CVs.
to get planar section in a single surface - setPt (Z only, cplane) is a nice approach.
or in this case: build a curve with 4 CVs (Degree 3) that have the same (World) X Coordinate. (Degree 5 will need 6 Points, “Degree +1”) - resulting in a straight section.

so this is not a fix - it is a manual rework / rebuild…

kind regards - tom

_DivideAlongCreases with _SplitAtTangents is used, _EdgeContinuity shows:

If you are looking for G2 continuity throughout and want to maintain the planarity of the span on the right, then _MatchSrf the left surface to the right after the split then _MergeSrf with _Smooth=No.

_PointDeviation reports Maximum distance at about 0.121.

This is begin of rant:

There IS no absolutely good rationale for not having a function that removes fully multiple knots.
The McNeel reason that it has not been implemented is about 80% laziness and 20% stupidity and 0% logic.

Whether or not McNeel gives the user a function to remove the fully multiple knot is not really the salient point. It is dead simple (for a competent McNeel programmer) to determine if removing a knot or two or three or four really changes the shape of the surface or curve more than the allowed tolerance. So why are the superfluous knots there in the first place when a competent programmer would know there is absolutely no good reason for their existence?. The only answer can be: laziness and stupidity.

As an example → Often when you create a surface using the tapered extrudesrf function using a very well behaved curve you will end up with a surface with fully multiple knots and that often causes problems with subsequent downstream functions.

Manually removing the multiplicity of knots will often fix the problem, while at the same time maintaining the surface accuracy well within manufacturing tolerance. Doing this makes the surface much much less likely to create future downstream problems that obstruct the process of making a desirable manufacturable model.

This is just one of a small handful of reasons that people who are looking for a good CAD program that will produce good manufacturable models take a pass when they evaluate Rhino. It seems that creating surfaces that can be manufactured is, unfortunately, something Mcneel has never considered important.

I like Rhino a whole bunch because it allows you to do things that no other CAD program lets you do. I have witnessed experienced SWX users knees buckle when I have shown them some very simple things that Rhino can do to fix their models that they have not a clue how to fix. But it is so very frustrating to watch McNeel flounder year after year after year because McNeel refuses to the few simple things that they could do to make Rhino a world class CAD program.

This is end of rant

Well, it’s better than bottling it up.


@pascal An explanation of why RemoveMultiKnot does not remove fully multiple knots would be appreciated.

1 Like

Hello - As I recall, the developer was pretty clear that we should not do this - these are more often there deliberately - a feature, not something to be ‘fixed’. I don’t think there is any technical reason not to do this or have a command that does it.


Pascal, thanks for the response. I completely understand why fully multiple knots are sometimes needed when creating surfaces in order for the surface to exactly match boundary curves, and that removing them will generally change the shape of the surface. But users should still have the ability remove fully multiple knots when the change in shape is acceptable.

I’ll start another thread with a request for the ability to remove fully multiple knots, and expand on why it is needed.

1 Like