Looking for a dynamic surface(sheet metal) unroll plugin or similar

Hello All,

Wondering if there is a utility/plugin/routine for rhinoceros that dynamically keeps the unroll srf results up to date. Even anything close to that would be appreciated.

For reference I work for an aluminum boat manufacturer and going from modeled boat to cut parts for a router/plasma table is the process i am trying to be more efficient at.

Thank you for any and all input/insight.

1 Like

Hi Eric- I don’t know of anything that will do this. I imagine it is possible to make a script that would update the unrolls on demand though (i.e. not live).


We do this in Rhino with an elaborate script that re-unrolls everything with marking lines and text quickly so changes are fairly easy but is specific to lofting plies for composite manufacturing.

SolidWorks does what you’re looking for; it updates the un-rolled part when the 3D is changed but it comes at a steep price.


Yes for sure, I am actually a Solidworks certified professional and have used solidworks for many years in conjunction with autocad and rhino, the problem is both the cost of solidworks, and solidworks doesn’t have a good marine hull form plugin for hull stability and speed predictions that i am aware of(we use orca). I am super interested in your script, what i would like to do is be able to add surfaces to a list of surfaces that would be unrolled at the same time to an individual base point on the top plane when the script is run. I’ve written a few in my time for autocad and a few in excel, looks like i need to dig into this one.

Hi Eric,

In addition to my PM I think the multiunroll script from Mitch might be a good starting point:


Grasshopper has unroll…

Second that vote for grasshopper, I have a rather large parametric engine for an inflatable product that does live unrolling and markup of panels while designing:

It would be a fairly simple process to develop a script to suit your needs.

Looks like I need to learn grasshopper, any recommendations on where to start? Thank you all so much for the insight!

Do you already have modeled surfaces in Rhino that unfold the way you want?? That’s half the battle, maybe more. If you can post an example of several surfaces and the result you are looking for, we can put you in the right direction.

Here is an example of a modeled boat, The dream workflow would be something like this:

  1. Model the boat
  2. Go through the surfaces and associated curves to be scribed on the plates during plasma cutting and unroll them utilizing a modified unroll command that would also tag each group of objects you selected for the first unroll as an a numeric tag number that would be saved within the drawing, and save an xy picked location for the resulting flat pattern to unroll to. All unrolled objects would be output to an “Unroll Layer”.
  3. As the model is changed and surfaces are adjusted, trimmed, extended they would retain the group tag given to them by the first unroll command.
  4. after the 2nd iteration was completed you would run a second macro that would use the group tags to reunroll all those surfaces to the resulting xy that is still saved for that group and delete the previous output at that location.

That would be the rough outline of the dream, live unroll would be fine too if the script allowed for organizing the output on the top plane or similar.

I am just an hobbyist but went through design in Rhino, use of Grasshopper, then differents operations, automatic generation of drawing for laser cutting then fabrication at home … See this

Just that to say that I followed something that is described here and that uses Elefront plugin. The video is bad quality but very useful. Elefront when baking destroy old models … I think you will like it.

and that

That is the workflow i use and can certainly help with – typically on easier geometry than a boat though; which is where i think getting surface creation optimal for unrolling is the biggest challenge here. How it’s fabricated creates a lot variables, that have to be considered as you are developing a “model is changed and surfaces are adjusted, trimmed, extended”.


1 Like

Correct, the surface creation to create faired hull surfaces is difficult however we have a workflow that works for us and gives good results just utilizing the unroll command. the majority of the parts in a boat end up being flat plate with no shape or just sharp corners that are very easy to unroll into sheet metal flat patterns. I am just looking for help in automating the repetitive nature of going from model in 3d to flat sheet metal patterns.

You came to the right place. Rhino / Grasshopper is accurate and fairly easy to learn,with a great support community. Its just a matter of asking pointed questions as you develop your particular workflow. Best done with an image, description and associated geometry.

Hi Eric,

Can you elaborate on what the reason for a second itteration would be?
Say you have modeled the boat, and flattened all parts.
What is the incentive to edit the surfaces and unroll again?
Is that after a first build and you need to update the model or is it that you want to update the flat parts after reviewing the 3D model?

The way I’d go about scripting this in your scenario, is by assigning a unique name to the original surfaces.
Their unrolled counterparts would carry the same name yet reside on a different layer.

When updating your model, you would need to make sure the new surfaces have the same unique name.

Then when you want to update the unrolls, the script would:

  • Ask user to select updated surfaces ( or just update all surfaces on a specific layer)
  • search corresponding unrolled surfaces and their curves and delete them
  • unroll the updated surfaces with al geometry grouped with it
  • position the unroll result as was the previous unroll positioned

This last action is somewhat difficult as you would need to find a way to store the unroll position and orientation in a way that does not rely on the unroll result position and orientation, for this can change when a surface is edited. I’d suggest to add some reference points or curves on the original surface that define a point and orientation axis.
These can then be used to orient the unrolled surface result.



Your script workflow would definately work, and the unroll position doesnt have to be exact, a bounding box corner would be enough. for placement.

To answer your first question about iteration, there are only two reasons, either this is the 2nd build and the changes are lessons learned, or we are taking a previously built boat and trying to salvage some engineering time to make a similar boat. We are a small company with only two engineers and we only have had 2 contracts in the history of the company that were multiple vessel orders. all the rest were custom one offs, or variants of those custom one offs.

Being a solidworks user i know the benefits of parametric modeling and am trying to integrate some of that into my workflow with rhino where it makes sense to do so, learning grasshopper and scripting, but by nature custom boats are like a skyscraper. you are only going to build one.