Squish polygon across multiple adjacent surfaces

I’m attempting to project a rectangle onto a curved, open polysurface, such that after the rectangle is projected, the length of all four sides is preserved on the curved surface. The difficulty appears to stem from the fact that the projection spans 4 separate, joined surfaces.

I’ve attempted to convert the polysurface to a Mesh->Squish the mesh->Draw rectangle onto mesh->SquishBack, which produced discontinuities in the projected shape. I also tried to use FlowAlongSrf, which doesn’t seem conducive to polysurfaces.

Projecting the red polygon onto the blue polysurface distorts the rectangle an unacceptable amount (as expected, using Project):

Are there any reliable techniques to project a 4-sided polygon, whose opposing edges are equal in length, onto a convex surface while preserving edge length? Thank you for any useful guidance.
FOAM Demo.3dm (17.7 MB)

Hm… it won’t be a projection if the line lengths cannot change - you might try Drape to make a temporary target surface, then flow separate lines onto that with History. Then with DimCurveLength you can noodle the inputs and get the lengths to match.

FOAM Demo_Maybe.3dm (747.6 KB)

Oops - looks like I deleted one of the target lines, but you’ll get the idea. Base and target drape are on a separate layer.


@pascal Maybe I was on the wrong track by using Projection. In essence, if my goal is a 25x75mm ‘rectangle’ on the polysurface (assuming shortest paths between points & no other funny business), is there any non-iterative way to achieve that, given one particular starting point on said polysurface? I will try your drape/dimCurve method for now. Thanks Pascal!

Hello - if you project two too-long lines onto the polysurface or drape, then OffsetCrvOnSrf one 75 units and the other 25 units, then trim the results to one another, that should be pretty durn close.
(Or project the ‘cross hairs’ the middle of the target area and offset both sides by half the dimension… same idea)