Straight strips applied to a conical surface

Just wondering if there is anyone who can shed some light on a wee conundrum…

Working on a roofing design and am having a few issues getting exactly what I am after. Essentially I want to apply straight strips (any width) across this surface to see how they lie, and to then unroll to decide how I treat the ends (angle of cut etc.) I have tried multiple flow commands but never seem to get the result I am wanting. I don’t want to deform the surface strips when applying to the roof surface. The material we are wanting to use is copper which will come off a roll. We want to see how this application can be applied to this surface.Dowleyroof.3dm (133.8 KB)

File is attached.

Hoping someone out there might have a simple answer to a probably simple question… :wink:

Cheers in advance!

Hi Rupert - I’m not sure I understand what you need but just a guess:

Contour from the Top view, then UnrollSrf and select the results of Contour as the curves to unroll with the surface…?


Hi there Pascal,

Thanks for that. Yes, definitely that is one approach, however it doesn’t really give us any indication as to how a strip of copper will distort when applied to the surface.
We know there will be some distortion over the whole surface as the radius of the ‘cone’ is changing from the front to back…however if there was a way to be able to calculate and see how this will change it would be nice. The copper we are looking to use comes in rolls of 1m width. Little distortion at the widest part however much distortion as we get closer to the apex.

Of course the best way to go with these types of compound surfaces is paneled/tiled…but alas, we cant.

Hi Rupert - so… you want to know how it would naturally fall on the surface if you say unrolled a strip of tape across the surface - maybe starting in the middle, keeping contact with the roof all the way to the edge with no stretching or distortion of the material - something like that?


Hi there Pascal,

Yes, exactly. We have done some physical experiments using paper and an example surface, but being able to replicate that in Rhino would be quite helpful.

Do you have any ideas on how that might be done? Like I said, I have tried a few times using flow etc, but I think I might be getting something wrong in the setup.


Hi Rupert - the problem is of course NURBS are infinitely flexible… this sounds like something that might be solved with meshes - possibly in a Grasshopper/Kangaroo combination.


Hi Pascal, yes yes.
We actually come to a pretty accurate solution by

  1. Iso curves to make a strip on the surface, trimming and then unrolling that strip.
  2. Following that we created UV curves of the original surface.
  3. Then moved the unrolled surface border onto the created UV curves.
  4. Following that applied the curves to the object.


Not 100% physically accurate but good enough for an indicative visualisation.

Thanks so much Pascal.


Hi Rupert - another thing to try is to OffsetCrvOnSrf an iso to get the other curve to split with - not sure if it will make a big difference but might be worth looking at.


@rupertenberg @pascal A simple “exact” solution is available using the ShortPath command. When a strip with a straight edge is wrapped around a developable suface the edge will form curve on the surface which will be the shortest path on the surface between any two points on the curve. Shortpath creates such a curve. The stripe shape can be obtained using that curve.

ShortPath using two points on the surface which you want one edge of the strip to pass through.

ExtendCrvOnSrf to extend the curve to the edges of the surface.

OffsetCrvOnSrf to create the second edge of the strip with the desired width (assuming you want a constant width strip)

UnrollSrf selecting the surface and the two edge curves.

Trim the unrolled surface with the unrolled edge curves for the shape of the unrolled strip.

Hi David - thanks, I thought of ShortPath, actually, but I could not see how to show that it was the same thing as unrolling a strip.


Hi David,

Thanks for that solution. It is amazing after using Rhino since V1, albeit, when we use for specific purposes we find tools which fit our needs most of the time, to still find commands etc. which we have never used. I can see many situations now where I can use ShortPath!

Cheers David and Pascal!

Hi David - this seemed to me to be the fly in the ShortPath ointment - I understood that the strip should determine its path - that is, we might know one end of the short path but not the other ‘natural’ end - that is, given an initial direction, where would the strip fall on an arbitrary surface to minimize any stretching and compressing ?
@davidcockey @rupertenberg

Alternative 1: Experiment using ShortPath

Alternative 2: Use CurveOnSurface with only two points which also gives the shortest path curve. After the first point is selected CurveOnSurface has a live display of the resulting curve as the cursor is moved before selecting the second point. CurveOnSurface is a plugin which can downloaded labs:curveonsurfacev5 [McNeel Wiki] My experimentation shows very slightly different results for ShortPath and CurveOnSurface with two points but I don’t think the differences are large enough to matter for most applications. (Note, do not use InterpCrvOnSrf which does not give a shortest path curve because it appear to work in parametric space.)

Also, in general only strips on a developable surface will have no stretching or compressing. However if the surface is “close” to a developable surface than using ShortPath or CurveOnSurface should provide a strip which will have close to minimum stretching or compressing.

=) I rest my case…