Creating One face from a group of faces that share edges

I'm having some trouble trying to generate a singular TopoDS_Face from a group of TopoDS_Faces that dont neccessarily share the same plane or domain, but share at least an edge. By sharing edges I mean if we have TopoDS_Face S1 and TopoDS_Face S2, where S1 contains edges e1,e2,e3,e4 and S2 contains e5,e6,e7,e8. I can guarantee that at least one edge from each surface will be touching, but they could be of different lengths.

The reason to merge them is to be able to access the U,V coordinates of the two surfaces as a whole.

Fusing doesnt work as the faces still retain their information.
Sewing and Gluing give similar results to fusing.
I could build a BSpline surface but that requires knowledge of the U,V coordinates (I think?)

What has been promising and worked for some scenarios is BRepOffsetAPI_MakeFilling. The issue is that this doesnt give me consistent resulsts.
The current approach:
Step 1: Create a list "edges" of all the edges in all the faces
Step 2: Filter that list and remove all touching edges
Step 3: Add touching edges to new list "support"
Step 4: Add(edge from edges, face that holds that edge, Continuity G1, true) to BRepOffsetAPI_MakeFilling
Step 5: Add(edge from support, face that holds that edge, Continuity G1, false) to BRepOffsetAPI_MakeFilling

This works amazingly on some groups of surfaces and crashes on other groups.

Can someone let me know if im doing this wrong or if there is a better way?

Thanks in advance!