How can Surface.Trim() keep original UV domains?

You need to do the following:

  • extract the u- and/or v-isocurves that you want to use for trimming (or any other surface curve, does not need to be iso-curves)
  • convert the surface to a Brep
  • use BrepFace.Split(curves) to split the one face of the Brep
  • choose which part to keep of the resulting Brep.

https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Surface_IsoCurve.htm

https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_BrepFace_Split.htm