MatchSrf results only in G1 or even lower - no matter what settings are set

i have this issue over a long time now. the command is set to G2, Controlpoints are enough, command does work but never reaches more then G1 in many cases. i tested over extraxtIsocurve and GCon.

in the attached example file i tried to reproduce this issue:
here MatchSrf makes a G2 continuity even worse and lowers continuity to G1. curvature is checked. i played it through all settings. enough controllpoints are set. -> result G1 in all cases…

please check attached example file.
is this a known bug or a restriction i missed?

matchsrf.3dm (101.0 KB)

not in all cases, though i also noticed and can confirm that, when you match an already continuous surface that it breaks up. you can set matching to tangency at this point and it will stay G2. but i have the feeling that it changes the rest of the surface. so try carefully if this helps.

i theorize that matching has some sort of progressive algorithm, which moves some cvs further in that case past the aim. or it has to do with the amount of points being available. i had the feeling i ran into some similar issue with matching curves which have too little points, here the thread where this was slightly discussed. it probably does not contain much concerning this matter but could provide a clue. idk

here in the image below this phenomenon for curves pointed out once more. the numbers represent the amount of matches. in a degree 2 curve with 3 points one can match repeatedly and it will keep growing forever having it set to continuity and position. maybe this has to do with it.

Looks like a bug to me. As @CJ_DE said there are sufficient control points for G2 matching.

Hello - make sure you have a very dense analysis mesh on Zebra -


He’s not interested in zebra. His complaint is that he started with perfect-curvature-matched surfaces and he used matchsrf and matchsrf changed the surface slightly so that it is no longer perfect.

This example is pretty trivial (the change in shape is about 1/millionth of a centimeter), but I have seen many cases where matchsrf makes the distance and tangency worse instead of better and not a trivial amount.
There really should be a max deviation readout next to each of the continuity boxes (like rebuild dialog has). The software should check if the output is better than the input and leave it alone if it is worse (or give the user that choice).

here some more examples:
(both A were split out of its base-srf, B is now with a seperate new plane, rebuild and then matched. all Srfs are d=3,cp=6)

_zebra smooth and oke with all A and B
_curvatureAnalysis ident with A1 and A1.1, both show G2?! but GCon doesn´t!
_B shows G1 with GCon and CAnalysis after matchSrf
_Tangent difference in degrees = 0.000 in A and B

→ seems like GCon doesn´t give good results in A1.1?!
→ matchSrf doesn´t work reliable (A/B1) in any case!

this is very bad - sry not so good! i realy need an explanation for this!

(by the way i often have the same bad results on NetworkSrf with curvature on → results in G1 or less only?!)

Gcon is giving you accurate results.

The reason you think it is not good is because you have been indoctrinated by marketing BS to believe that you need perfect curvature continuity for things to look good. The fact is in your example Gcon could be reporting a Radius of curvature difference of 1000 centimeters and you still would not be able to see any difference in the appearance of the surfaces. Those surfaces would still look the same.
Are these surfacesG2.3dm (80.1 KB)

Not all NURBS surfaces can have exact G2, G1 or even G0 continuity along the entire length of a common edge. Whether exact continuity is possible depends on the structure (number and arrangement of control points) and paramaterization of the surfaces. This is due to the nature of the NURBS math (not round-off error of finite precision digital calculations), and is in contrast with NURBS curves which can have exact continuity at a common point.

An algorith to adjust general NURBS surfaces so that they match across a common edge with the desired continuity, such as the algorithm used in MatchSrf, needs to determine the movement of control points which results in the closest match possible in some average sense along the edge. But the match might be not exact along the entire edge. It may be possible to improve the match by adding knot lines and control points - the more knot lines control points added the better the match might be. This is what the “Refine Match” option does, with the number of knot lines and control points to be added determined by the desired tolerance.

Any general evaluation of continuity between NURBS surfaces needs to be based on the acceptable tolerance. In contrast an evaluation of continuity between NURBS curves such as GCON can be based on whether the continuity is “exact” (within the round-off error of the calculations).

There remains the question of why MatchSrf sometimes will make the continuity worse when the input surfaces have close to or “exactly” the requested continuity. That behavior appears to be a bug.