Toolbar Menu

Not on toolbars.

Surface >

Surface Flattening >

Squish Double-Curved Surface

The Squish command flattens a non-developable (curved in two directions) 3-D mesh or NURBS surface into a flat 2‑D pattern.

The Squish command marks areas of compression with a red point cloud and areas of stretching with a green point cloud and displays statistics about the amount of compression or stretch. Up to ten text dots mark the locations with the most dramatic deformation. The number in the text dot is the percentage of change in length.



Change in area from original.


The material will be compressed when the 2-D pattern is deformed into the 3-D shape. The percentages are an estimate of how much of the pattern will be compressed.


The material will be stretched when the 2-D pattern is deformed into the 3-D shape. The percentages are an estimate of how much of the pattern will be stretched.

Command-line options


Allows a mesh to be split at a seam so it can be flattened. This is good for closed surfaces like cylindrical shapes.


Avoids distorting boundary lengths.


Choose an option depending on your bias for stretching or compressing, and the ability to specify custom deformation settings.


No preference for compression or stretching.


Strong bias for expansion when the pattern is deformed into the 3-D shape.


Absolutely no compression when the pattern is deformed into the 3-D shape.


Strong bias for compression when the pattern is deformed into the 3-D shape.


Absolutely no expansion when the pattern is deformed into the 3-D shape.


Custom deformations.

Lets you set the parameters used by the custom deformations. There are four parameters you can set.


The default value for these parameters is 1 and they can be set to any positive number. A larger value reduces the amount of the specified deformation compared to what happens when all four parameters are equal. For example, if you want to severely limit interior expansion, you could do something like:





If you want to preserve boundary lengths you could use the settings:






Specifies settings used by the CustomA/CustomB/CustomC options.


Describes the type of material that will be used for manufacture.


Minimizes stresses when forming the 3-D surface from the 2-D pattern when a rigid material will be used for manufacture.


Limits geometric distortion as much as possible when a pliable material will be used for manufacture.


The outside of the 3-D surface is up in the 2-D pattern.


The outside of the 3-D surface is down in the 2-D pattern.


Adds the red and green point clouds and text dots to the model.


Technical details and caveats

Squish is an algorithm that works on meshes. Squish flattens the mesh by "minimizing the changes in facet area and changes in facet edge lengths" between the 3‑D mesh and the 2‑D mesh, subject to some constraints.

For example, if A,B,C are the corners of a 3‑D triangle and a,b,c are the corresponding corners of the 2‑D triangle, the changes in edge length are

d1 = |Distance(A,B) - Distance(a,b)|

d2 = |Distance(B,C) - Distance(b,c)|

d3 = |DIstance(C,A) - Distance(c,a)|

da = |Area(A,B,C) - area(a,b,c)|

DL = d1+d2+d3

DL2 = d12 + d22 + d32

DA = da

DA2 = da2

D = some combination of DL, DL2, DA and DA2

The "minimizing the changes in area and or edge lengths" above means create the 2‑D mesh so that "D" is as small as possible.

In practice, there are thousands of facets and many ways to minimize D, most of which don't make practical sense. So Squish constrains the answer to prevent the 2‑D mesh from folding back onto itself and forcing certain 3‑D points end up in specified 2‑D locations.

A trimmed NURBS surface is squished by squishing a dense mesh of the surface.

The squish options determine how DA, DA2, D1 and D2 are combined and allow for more complicated ways to calculate of DA, DA2, D1, and D2 and to allow for a bias towards stretching or compression.

However, the Squish algorithm is much too simple to even begin to model the true physical properties of most materials that come in sheets, particularly those that where material thickness plays a role and those that can compress or stretch any appreciable amount,

In short, if a sheet of material is expensive, cutting it is expensive, or bending it is expensive, or related issues in the manufacturing process are time critical or money critical, then consider using Squish to give you an initial hint about the shape of a pattern, but real material and manufacturing expertise will have to be used to create a pattern that will work on the shop floor.

Related commands


Toolbar Menu

Not on toolbars.

Not on menus.

The SquishBack command returns curves and points on the 2-D pattern to the original squished 3‑D shape.


  1. Select 2-D object.
  2. Select curves and points on the pattern.


Suppose we wanted to put a “Rhino” brand name in the black circle on this 3-D NURBS model of a shoe last.

First use the Squish command to generate a 2-D pattern of the last.

Then use the TextObject command to create the white “Rhino” text as curves on the 2-D pattern.

Finally, use the SquishBack command to “unsquish” the white Rhino text onto the 3-D last.


Toolbar Menu

Not on toolbars.

Not on menus.

The SquishInfo command provides information about the settings used to squish the object.

See also


Flatten a surface without restriction to single-directional curvature.


Flatten (develop) a surface or polysurface with curvature in one direction to a planar surface.

Flatten curves and surfaces




Rhinoceros 7 © 2010-2024 Robert McNeel & Associates. 10-Apr-2024