Area dimensions in unroll command

I made a surface and unrolled, but I need the Area dimensions to be completely equal at end. Because I want to cut and execute sheet metal
If the areas are not equal, they will not fit together after cutting
Is there anything more accurate than GeoGYM Unroll? (25.4 KB)

That is a double-curved surface.
No matter how you want to solve the flattening/unrolling, there will be an error, a deformation, something inaccurate.
I don’t know which math/method is using GeoGym unroller plugin, I don’t have that plugin.
I’ve used the Rhinocommon unroller via a c# script.

The flattened result certainly is different, many differences! One of the difference is a different area, sure.
You can hack back your target area by scaling the results by the square of ratio of the areas: (25.6 KB)

PS Forget Bifocals, unistall those, use Sunglasses instead

1 Like

I am not going to manipulate the final number !
This is of no use to me.
Because we know that when the areas are not equal, you will notice when assembling the spreaded surfaces that the surface together are bigger or smaller than the original surface . As a result, it is not placed in the desired place

this is what many scientists trying to solve to map the globe on the paper!
seems you could resize the poly-face by calculating the surface curvature to meet acceptable tolerance between min and max distance of each poly-side start/end point to neighbor points.

1 Like

It seems you didn’t understand, i guess.

I did not manipulate the final number, i did manipulate the geometry.

You are trying to create a shape that MUST have an error (the flat version of a double curved surface).

Either give more specifications of what you want to achieve, or it’s impossible to help you…


This algorithm that is used in these plugins, if it can expand the page explosively, it may reach the base

But your opinion about reducing the size of divisions may reduce the error. or turning it into a mosaic or mesh network. But finally it does not give the desired final arc

Yes, but in which dimension and direction did you manipulate the geometry?
i think your work is completely out of control and most likely will not match the fragmented surfaces

:rofl: Wow, that’s pretty far off :exclamation: Riccardo knows what he’s talking about.

When a surface is spread, you don’t know from which dimension it will fail !!
But when you multiply the dimensions in the flat scale, you have multiplied it in all directions !!
If you think a little, you will laugh better

But I think Riccardo will finally solve it

Hi @arch.salimi,

You might have a look at Rhino’s Squish command.

– Dale


some background on unrolling here

if you understand the theory you might get a controlled solution.
kind regards - tom


Good . Then the surface I have is non-developable (curved in two directions) It will probably have the same irregular areas of compression or stretch point during flatting.

This command seems to be useful. I am checking on the form.
How can I run it in Grasshopper?


Sorry for the delay, I’m on holiday with a 300 buck 10 inch tablet pc …

… let’s hope so! :rofl: I like to be corrected when is due.

You can see I arbitrarily choose to scale uniformly from surface center.
You asked to have same area, I thought you had a particular need for that and you knew what you were doing. At this point I’m sure this wasn’t the case.

Thinking about a flat disk mold-pressed into a pot, i think globally the area increase, more stretching than compression.
Usually it’s simpler to manage a stretching than a compression because compression might cause “wrinkles” …
Also in other scenarios, it’s more common to have sheets of material being stretched up to target shape, never compression.
I can only think about heat shrink tubes if I want to look at compressed-to-target.

You asked for same area target, that’s a strange specific need imho…

Thank you @dale and @Tom_P for the reference about Squish. I rarely used it and didn’t really understood the difference with unroller. Always stuff to learn!

Attached a solution that calls Squish method via c# script and you can see the parameters of that method. It gives an area ratio really near 1 …
(multithreaded for performance, really needed for my current setup…) (15.9 KB)

using System.Threading.Tasks;

private void RunScript(List<Brep> S, ref object B)
    int n = S.Count;
    Brep[] breps = new Brep[n];
    Parallel.For(0, n, (i) => {
      BrepFace bf = S[i].Faces[0];
      Rhino.Geometry.Squisher sq = new Squisher();
      SquishParameters sp = new SquishParameters();
      sp.BoundaryCompressConstant = 1;
      sp.BoundaryStretchConstant = 1;
      sp.InteriorCompressConstant = 1;
      sp.InteriorStretchConstant = 1;
      breps[i] = sq.SquishSurface(sp, (Surface) bf);
    B = breps;

Many thanks to @maje90 for the good and technical help
And I especially thank @dale , who finally got me out of the challenge

I checked all three on my surface, and what turned out to be the squish is much closer to reality, including tension and pressure.

But there is a problem; In unroll mode, if we divide the first surface as much as possible and then unroll, the amount of error will decrease.
But with squish mode, the error is close to zero for one or more divides.
I would like to know that we have reduced the area error rate, but will the dimensions of the flattened surface be the same as the reference surface after re-rolling and will it fit properly?
this mean that the squish command changes the dimensions in the right directions? How to be sure? (42.2 KB)

I request @maje90 , if possible, to provide the SquishBack command and the Unroll_back command separately in C# :pray:

Nice script.

Divide domain and isotrim in the green group can be used instead of the purple group… (21.9 KB)

What is solved for you is the squish command
If compared with the purple group, the result is the same
The dividing method is not effective

Which method are you saying is not effective? (31.0 KB)

Of course the result is the same.

1 Like