I took some type on the RhinoCommon documentation and I found so many surface classes (not Mesh) and not sure what is the difference.
What is the difference?
In Rhino.DocObject:
BrepObject Class, RhinoObject and SurfaceObject as well as
In Rhino.DocObject Custom:
CustomBrep Object
in Rhino.Geometry:
Brep Class, Surface Class, NurbsSurface Class.
They are all different but in the Object Type Enumeration we have only two type of surfaces; Brep and Surface. I am still not sure what the difference is between them.
The distinction between “geometry” and “rhino object”. A Rhino object lives in the Rhino document, and is basically a piece of geometry, and some associated information about its place in the document (layer index, display information, etc. etc.). So, there are SurfaceObject, BrepObject and CustomBrepObject (which all inherit from the base class RhinoObject).
The distinction between a surface and a polysurface. Polysurfaces (including possible trimming information) are called BRep (which stands for Boundary Representation). Both inherit from GeometryBase, like all other types of geometry (Mesh, Curve, etc.)