Thanks @Willem, I will give it a try.
It seems to me that Rhino is calculating a value for compression/stretch on points (not edges) but it should already give a good idea.
I was thinking the compression/stretch may be calculated as the difference in area of all adjacent quads/triangles, or maybe using sampling points on the mesh.
By any chance, would the code for the post-processing step be public?
To anybody coming to this question:
We’re using a variation of this solution in our production environment.
Fine mesh then Quad remesh then Squish.
It would probably work for most scenarios. You can stop reading here if this works for you.
However in our case, we still get very different results for very similar input shapes, or by changing the targetedgelength property of QuadRemesh.
So we try about a hundred of these parameters and calculate a score to select the best.
The main component of the score is the deformation (max(max_squish, max compress)) where squish/compress is evaluated using another answer: iterate in parallel through the Mesh.TopologyEdges get the Length of the 2D and 3D Edge.EdgeLine.
After finding an acceptable deformation (below 4%), we add a malus to the other scores when their targetedgelength is higher (because it will result in a coarser mesh).
Using this score system, we get one of the smallest deformations, and a rather smooth mesh. This expresses our priorities (first= accuracy of flattening, second = tradeoff between accuracy and smoothness once we’re good enough).
Thanks a lot for the help in this forum, this solution is now used for our production and it’s all thanks to your help!!!