There is a little rough(not that smart) but simple way using Surface Split.
For offsetting boundaries, you can use native Offset Curve, but depend on the offset distance, the results may not be consistent. You could use clipper when if you are OK with the results are polylines…
Grashopper question pattern_re.gh (11.9 KB)