**Edit** * Does not depend on `PlanarFaceList` and we can distinct the boundary lines. ``` Clear["Global`*"]; pts1 = {{0, 0}, {1, 1}, {2, -1}, {3, 0}, {5, 2}, {6, -1}, {7, 3}}; pts2 = {{5, -2}, {0, 0}, {1, 2}, {5, 1}, {2, 2}, {4, 3}, {5, 4}}; pts3 = {{4, 2}, {3, 2}, {2, 3}, {-1, -3}}; curves = {curve1, curve2, curve3} = BezierCurve /@ {pts1, pts2, pts3}; g = Graphics[{Arrowheads[.02], Arrow /@ curves}]; lines = MeshPrimitives[DiscretizeGraphics@#, 1] & /@ curves; data = Region`Mesh`SplitIntersectingSegments[lines]; pts = data[[1]]; splits = data[[2]]; intersections = Cases[splits, l_ /; Length@l == 3, -1]; boundaryLinesIndexs = Join[{#[[1, 2]]}, Range[#[[1, -1]], #[[2, 1]]], {#[[2, 2]]}] & /@ Partition[intersections, 2]; reg = BoundaryMeshRegion[pts, Line /@ boundaryLinesIndexs]; Graphics[{{HatchFilling[], reg}, curves, Arrowheads[{{Large, .5}}], Thread[{{Red, Green, Blue}, Arrow@pts[[#]] & /@ boundaryLinesIndexs}]}] ``` [![enter image description here][1]][1] * https://mathematica.stackexchange.com/a/295351/72111 still work for this case, but it can not distinct the three boundary lines. ``` Clear["Global`*"]; pts1 = {{0, 0}, {1, 1}, {2, -1}, {3, 0}, {5, 2}, {6, -1}, {7, 3}}; pts2 = {{5, -2}, {0, 0}, {1, 2}, {5, 1}, {2, 2}, {4, 3}, {5, 4}}; pts3 = {{4, 2}, {3, 2}, {2, 3}, {-1, -3}}; curves = {curve1, curve2, curve3} = BezierCurve /@ {pts1, pts2, pts3}; g = Graphics[{Arrowheads[.02], Arrow /@ curves}]; ``` ``` lines = MeshPrimitives[DiscretizeGraphics@curves, 1]; data = Region`Mesh`SplitIntersectingSegments[lines]; pts = data[[1]]; splits = data[[2]]; segments = Flatten[Partition[#, 2, 1] & /@ splits, 1]; graph = Graph[Range@Length@pts, UndirectedEdge @@@ segments, VertexCoordinates -> pts]; faces = PlanarFaceList[graph]; polys = Polygon[pts[[#]]] & /@ faces; Show[g, Graphics[{HatchFilling[], EdgeForm[{Thick, Red}], polys[[2]]}]] ``` [![enter image description here][2]][2] ``` reg = MeshRegion[pts, Line@segments]; graph = MeshConnectivityGraph[reg]; Graphics[{HatchFilling[], BoundaryMeshRegion[pts, Line@Append[#, First@#] &[PlanarFaceList[graph][[2]][[;; , 2]]]], curves}] ``` [1]: https://i.sstatic.net/hG63r.png [2]: https://i.sstatic.net/VXn4i.png