Slightly Un developable surfaces

Hello- I think Squish is the best candidate - have you played with the Material setting and the Deformation settings?


Hi @jdelooze ,
Squish can be picky and you’ll have to learn what works well and what does not. I think you can forget Smash for your task. From your description I would try DevLoft and then add the compound curvature which you can apply with the English wheel.
Can you post some sample geometry?

I played with squish parameters and listed all the affected boundary length to analize what was going on but I can’t preserve the boundary lengths, even the option of preserve boundary doesn’t actually preserve the boundary.

Hi smash will most accurately preserve the boundary lengths so that adjacent edges of surfaces will match corner to corner but it will only work for what is described as a trimmed surface. It will not work for a valid surface.

Sorry, but I cannot confirm that. May be a special case…

Hi Jdelooze

Can you share an example 3dm file with a surface that you want to flatten. I’d like to see if I can help tweaking squish settings.


What do you mean by a “valid surface”?

Why do believe that Smash only works for trimmed surfaces?

Thanks Willemstad I’ll be in touch in a couple of days as I am on holiday

If Rhino describes it as a trimmed surface it will smash and the boundaries are preserved if Rhino describes it as a valid surface then just one of the sides becomes a straight line and loses any curvature it had.

Surfaces in Rhino can be trimmed or untrimmed. A trimmed surface is simply an untrimmed surface with portions “cut” away. All trimmed surfaces have an underlying untrimmed surface. If the What command describes a surface as “valid” without any other quailifiers then it is an untrimmed surface.

Shrink can be used on a trimmed surface to reduce the size of the underlying untrimmed surface to it’s minimum possible size (if the trimmed edge is an isocurve) or close to it’s minimum possible size. (if the trimmed edge is not an isocurve).

If Smash is used on a trimmed surface then Smash flattens the surface so that one edge of the underlying untrimmed surface is a straight line. It also shrinks the flattened surface.

Understanding the basics of untrimmed and trimmed surfaces is very helpful when using Rhino.

Thanks David. I’ll investigate further on that basis but even if I fix this issue my main problem is trying to flatten a surface without affecting the lengths of the boundary edges.
It seems like the option of “preserve boundary’s “ in squish should be the answer but it doesn’t and the lengths of the boundaries are changed.

That’s why I suggested to start with _DevLoft. But it depends on your geometry if this makes sense.
I think this problem might be solved with Grasshopper/Kangaroo.

BTW. There was another thread you may find interessting: Kuka & English wheel paths from doubly curved surface:

Thanks Jess I’ll try that and look at the other topic

Willem help file.3dm (1.4 MB) Hi Willem, Ive finally cleaned up and simplified a file to play with. Im trying to unroll or develop 3d surfaces which only have slight shape but trying to preserve the boundary length as much as possible because I can introduce as much stretch as I want with the English wheel. Any help pointing me in the right direction would be much appreciated.

Hi jdelooze,

Unfortunately I only had time for a quick look at your file. And I do not see a quick ansers to give.
Time is limited at the moment, maybe someone else can look at the example file.


OK thanks.

Yep, a lot to talk about… but in general _Squish seems to work ok with your surfaces. You may split them into pieces like you’ll fabricate it, before you squish it, then you’ll get less deviation at the boundaries.

There are also some surfaces with negativ Gaussian curvature in your model, and you may know that you’ll have to stretch the boundaries to get these anticlastic shapes…

Attached is a model which demonstrates what I meant with DevSrf. Note that the unrolled surface has almost the same shape like the squished version. I think the deviation does not mean much when working with the English wheel on such a long piece (which of course would not be practical).

However the deviation of the squished srf comes from the surface’s UV orientation and I’d guess that the unrolled srf fits better.

P.S.: It is not necessary to make developable surfaces to get good cutting data for your model.

V5 3DM:
Squish_vs_UnrollDevSrf.3dm (310.4 KB)

1 Like

Hi Jess, I cant open your file as Im on Rhino5 if you can save as an older version I would like to take a look.

Thanks Jess, I had dismissed Unroll srf early on as I couldn’t get it to work but now realize my relative tolerance was too small. I can get squish to work within probable acceptable limits by preserving edge setting to rigid and stretch only. Smash is still a problem for a trimmed surface but I now don’t need it.
The proof will be when I start fabricating and see if the edges match. Time to start cutting some sheets.

I’ll try to explain some general issues: Rhino should not unroll surfaces with compound curvature, BUT it will unroll any surface which is at least linear in one direction (u/v). Then it does not even check the Gaussian curvature (which is a bug IMHO) and it simply _Smash-es the surface. It will report the difference in area of the curved and unrolled surface, but in rare cases it may happen that stretching and compressing cancels out. Rhino will not unroll surfaces where the “ruling-lines” do not follow one of the NURBS directions (u/v) no matter if the Gaussian Curvature is zero overall.

_Squish should be used to flatten slightly un-developable surfaces but you’ll have to take care about the topology. You may search the forum for squish failures and bugs to see some examples which it does not like. It helps to know that squish creates a mesh under the hood and uses that to calculate the deformation. Looks like meshes created with the new _QuadRemesh command in V7 work pretty good with _Squish. The optional parameters in _Squish are nice but can be tricky. Of course you cannot expect to “preserve the boundaries” length and use “stretch mostly” on a saddle surface (negative Gaussian curvature).

_Smash is most flexible and will flatten almost any surface. But if you cannot Squish it, then _Smash probably will not help much for your kind of work. However it should also work with trimmed surfaces so if you have an example which does not work then please post it.