Extracting and Simplifying Mesh Boundary Edges

I have some imported road meshes that are kind of messy and I want to extract their edges, trim and join them, and then patch between to edges to get the site topography. I’d also like to have the line work to rebuild the roads to fix them. I’m trying to figure out an efficient workflow for this as I know how to do it manually but want to avoid as much mindless work as possible.

So far, if I duplicate all of the mesh edges, CurveBoolean does a good job cleaning up the outlines of the geometry the way I want but inherently gets rid of the height value for each point, which I need to preserve to create my topo. DupMeshEdge moves in the right direction as I can extract the edges from a mesh and it preserves their heigh position, but I can’t do this operation with multiple meshes at once.

Perhaps this is more of a Grasshopper exercise or is there a command or string of commands that would work well for my use case? I’ve seen some people recommend ExtractMeshFaceByDraftAngle or ExtractConnectedMeshFaces, but since this mesh is not one continuous piece but a collection of smaller segments those commands don’t seem to help me move towards my goal. So far I have used grasshopper to extract the mesh edges and cleaning up the lines manually.

Any help is greatly appreciated.

Extract Mesh Edges.3dm (270.0 KB)