Unroll Twilight Zone!

I use the Unroll component a LOT, and somehow, with this set of surfaces, there is no way I can get it to work.
Since there is no GH Unroll component (Shame on you David !) , I use ones from plugins ; namely :
-Fabtools
-Wombat
-Lunchbox
-(None in Pufferfish. Strange…)

Although some of those surfaces have a (slight) compound curvature , they will unroll fine in Rhino with UnrollSrf.

I’m really at loss with this.

All Unrolls Fail.gh (887.0 KB)

You can use this simple script to unroll these surfaces, whenever it fails you can increase relativeTolerance slightly.

    Rhino.Geometry.Unroller unroll = new Rhino.Geometry.Unroller(brep);
    unroll.RelativeTolerance = relativeTolerance;
    List<Brep> breps = new List<Brep>();
    unroll.PerformUnroll(breps);
    A = breps;


osuire.gh (397.4 KB)

1 Like

this is what Rhinocommon offers:

unroll.gh (11.6 KB)

Hi Mahdiyar

Your C# component works with my surfaces.
TomTom : no luck ; same as with the 3 plugin components I tried.

But WHY ?

I‘m doing exactly the same as Maydar. Just that he reduced tolerance. Just compare the code

Indeed,

The Relative tolerance was the blocking point here.
Looks like a “must have” input for a practical “Unroll” component.

The strange part is that the UnrollSrf Rhino command worked with the file tolerance settings, and I thought that Rhinocommon tools used it also by default.

I realize that the Fabtool component has all the desirable inputs, including curves, points, etc…

Thanks guys.

you can mix both components. just add an additional input of type double name it relativeTolerance and copy maydars second line of code into my component at the same location. Its just weird that this happens. Are you sure you are unrolling developable surfaces only?

Hey, Tom

My surfaces are internalized in the definition from my initial post.
Now that I understand where the problem is, I can do everything I need with Fabtool’s Unroll component.
But I’m still wondering about this tolerance thing : why does it work in Rhino and not in Grasshopper ?

-(None in Pufferfish. Strange…)

I try not to have the same components that exist in many other plugins, and if I do (like rebuild surface) is only because I find them necessary to use with my other components like tween surfaces and I can’t guarantee the user has the other plugins installed. :smiley: I don’t really find unroll so useful in my workflow.

Quite often Rhinocommon functionality is not as robust or equal to its Rhino commands. Most grasshopper-plugin-developer rely on Rhinocommon, hardly anyone relies on a own geometric library. I don’t know of a plugin which offers an own implementation of unroll.
There is a professional plugin called ExactFlat for Rhino. Its quite “expensive”, but it can also unroll double curved shapes, physical accurate (depending on the material). I don’t know if this is also available for Rhino 6. In Rhino 5 it also had compatibility issues with others plugins such as VSR/ASM.

You can however create macro-like behaviour in Grasshopper to use almost any Rhino function.
Bake, get guids, select guids, call the _unroll command by runscript or sendkeys. Wait in between and load the flatten shape back into GH. This kind of scripting is a bit more challenging, but doable.

Well, there is room for yet another Unroll component :
The one that comes closest to have everything is the one from Fabtools, but I’d be glad to do away with fabtools altogether since is has not been updated for V6 and is no longer maintained.

An Unroll tool would fit nicely in your “Surface” toolbar :slight_smile:

1 Like

Thanks Tom,

Can Rhinocommon be called from Python scripts ?

yes: import Rhino.Geometry as rg or just import Rhino. Rhinoscriptsyntax is also Rhinocommon. Its just a wrapper around it to call it better in a pythonic way.

Yay !

Brilliant.org will soon make their Python section available.
That ought to be interesting

I had also some problems a while ago and I did this:


I think it works in your case:

20190210_UnrollThat.gh (390.5 KB)

Here I mix my script with @TomTom, and make it work in both C# and Python.


osuire.gh (398.3 KB)

Nice !

Fabtool’s version has an option for not exploding /exploding (+spacing), and options for labelling.
If cou can add those, then it’s the ultimate unroll component !