surface_id (guid): the surface’s identifier
explode (bool, optional): If True, the resulting surfaces ar not joined
following_geometry ({guid, …]): List of curves, dots, and points which should be unrolled with the surface

just set the second argument to false and go from there.

Probably because the surfaces are not exactly developable. UnrollSrf is intended for unrolling developable surfaces. If a surface is not exactly developable it is not mathematically possible to flatten the surface without distortion.

Have you tried using Patch to convert the mesh into a surface. You may need to experiment with the number of U and V spans to obtain the desired accuracy.

Interesting. I use Patch frequently to obtain surfaces from a relatively dense set of points / mesh and obtain good results. . The density of input points / mesh may need adjusting. The maximum edge length option is one method to increase the density of a mesh. As I mentioned above some experimentation with the number of U and V spans used in Patch may be needed to achieve the desired accuracy without a sufficiently smooth surface. Patch produces a single degree 3 surface without creases. If the input represents a surface with creases etc. then a single application of Patch will probably not produce the desired result.

If the input does not have creases then Patch should be able to produce a single surface which will Smash or Squish with sufficient accuracy. Of course if the surface is non-developable the flattened surface will not be unique. Different assumptions/settings for flattening process will result in different results.