I put the old Brep closest point from Rhino 5 so it must now work for you.
The logic is simple
- Divide the surface with curves (it allows to suppress part of curves not linked)
- Make a division of the surface (here a mesh) on the surface
- For each division (face of the mesh) search the distance from the surface division
- Make a index for each surface (with series component)
- Order the distance and index
- Take the first distance/index, so the closest surface division from mesh face
- Put each face in a branch of tree (use of the C#, but I am sure there is a component for that)
- Join the faces on each branch so it becomes a mesh
- Extract the edges of the meshes
There are others strategies :
- populate each surface division with mesh faces, make each “island” grow. I have a script for that but I don’t want to share it (Mesh clustering)
- Make a program that takes the curves and simplify them