Normal directions are matched prior to evaluate surface but evaluate surface and SUrface.NormalAt() returns different result. As you can see, surface at index 16 is flipped to match the base geometry, but it seems that NormalAt() returns normal vector that is not flipped.
I have tried same operation with baking the surfaces and flipping the surface manually and also tried with joining them to polysurface(which also matches face normals) but results were same.
Am I doing something wrong?
Please see attached GH.
In RhinoCommon the Surface type supports no trims, and no normal flipping. For that you need BrepFace, which is what a Grasshopper “surface” really is.
NurbsSurface is same as Surface except NurbsSurface let’s you access more properties, constructors, and methods. Surfaces are a protected class and are the root of NurbsSurface. Same goes for Curve > NurbsCurve. You can see it here in the inheritance tree: https://developer.rhino3d.com/api/RhinoCommon/html/T_Rhino_Geometry_NurbsSurface.htm