Unroll doubly curved surface

I’m having a bit of issue with unrolling doubly curved surfaces in grasshopper (itseems like we cannot unroll double curved surfaces in grasshopper), or getting a planar curves of doubly curved surface which have more than 4 edges which has to be cnc cut, basically i have to nest this curves, i’m using rhino nest to optimise and save spaces in board, but it doesn’t work well with non planar curves.

You can’t unroll surfaces that are not developable.
One solution could be to triangulate the surface and make a kind of planar figure with the triangles. It helps to visualize the surface but its not good for cutting.

Hi @aloysiusdsilva6,

Does the Smash command help?

– Dale

THANKS, but that is a rhino command right? is it possible to do it in grasshopper?

yes, you can take a c# component and put inside:

Rhino.RhinoApp.RunScript(string script, bool echo);
//script: The command to send
//echo: Set to true for the command to appear in Rhino’s command prompt

The component will need one input for your surface (as surface) and one for your command (as string)

For saving: Rhino.RhinoApp.RunScript(“Save”, true);

1 Like

@dale do you know if the Smash command is an unroll with high tolerances or has a different logic?

@aloysiusdsilva6 The Peacock’s Unroll component allows you to adjust the absolute and relative tolerance, so by giving it a high number you can surely unroll it (losing accuracy).

hey thanks, i’ll try that.

Yes I believe so.

– Dale

Do you have script file in grasshopper. Please share

Double click to edit the enclosed Python which is a nearly English-like language. Setting tolerances high (0.1?), from panels containing numbers, will afford Smash.

Python code:
import Rhino
unrolled =
unrolled_curves =

for i, s in enumerate(surface):
unroller = Rhino.Geometry.Unroller(s)
unroller.RelativeTolerance = relative_tolerance
unroller.AbsoluteTolerance = absolute_tolerance

unroller.AddFollowingGeometry(curves[i])
b, cv, p, d = unroller.PerformUnroll()
unrolled.append(b[0])
unrolled_curves.append(Rhino.Geometry.Curve.JoinCurves(cv)[0])
Unroller TEMP.gh (3.3 KB)

Hello dear expert, sorry to bother you. I am curious why I get this prompt: “Solution exception:expected float, got NoneType” after I put a hyperboloid model in this script? Is there anything I operated in a wrong way?
Unroller TEMP.gh (23.2 KB)