Offset geometry on the front and back of a curved solid

Hello, I have projected a geometry onto a thin-walled curved solid. I would like to have the projected geometry on the back as well. Originally, I simply calculated the normal vector and moved the geometry. This worked without any problems for a cylinder, but if the curvature is greater, this no longer works as the geometry is not shifted evenly (see image). My mistake is that the surface has several normal vectors and not just the central one. I need to calculate a number X of normal vectors of the surface in order to move the geometry correctly.
Theoretically, the Offset function in Grasshopper is perfect for this, but i need it to be a closed brep and i cant get it to work…

I want it to work with any kind and number of geometries.

On the picture the red geometry is the projected on and the pink one is the one i moved.

Offset Geometry.gh (3.0 MB)

Does anyone have any ideas?

Best regards Tim

General case (but requires code unless there’s some add-on around):

  1. Get a Brep (a single Face thing).
  2. Morph it to some target Surface (not BrepFace)
  3. Get the BrepFace and use the RC Method : Brep thick = Brep.CreateFromOffsetFace(face, dist, tol, bothSides, createSolid); The last 2 are bools.
  4. Notify if you want a demo C# that does that.

BTW: as Plan B you can do your “flat” Brep(s) first and then Morph’m to the target Surface. That way you get rid of the restriction (i.e. using a single Face as above)