Building a spiral ramp with angle/gradient restrictions

Dear support team

For a museum project we are designing a spiral ramp that needs to fulfil building laws concerning the slope gradient. Is there an elegant way to display the angle or the gradient from the 3D object or do I have to calculate it manually? Because of the spiral it is not such a easy thing to quickly calculate it manually.

Thanks a lot.

Perhaps this can help?

Hello wim

Thanks for your help. Since I am working on a mac I am not sure if I can use GH. In general there are no such tools to display dimension and other measurements like angle in rhino itself? Is it really needed to install GH mac after all?


@fxtran22 FYI

GH is included on the WIP version of Rhino for Mac:

1 Like

On method I can think of is to extrude the spiral you want to analyze (the inner curb I presume) vertically, then unroll the resulting surface. By measuring the tangent angle versus one of the reference vertical edges you should be able to demonstrate that it fulfils the slope restriction requirement.


the main problem is that the spiral which rhino offers does not have a constant slope. a steady gradient would need a logarithmic change on a linear cone.

if you dont want to use grasshopper you would have to construct it but its a bit of a work of course. thankfully a steady gradient has a linear projection i believe, meaning that one can help with constructing it from a side view.

so you start with a truncated cone and a curve in your defined gradient lets say like here 5° then intersect the cone with the curve to get a point which is the mirror point of the curve again. this you proceed till you are at the top.

or you calculate the intersection points. as you can see below they get shorter. once you have set up the formular that might be pretty easy to get the points on the curve and connect them.

then you project those curves onto the cone and voila steady gradient. or you use circles from intersection point to intersection point rotated by 5° and trim one half off each side.

take it with a grain of salt of course.

1 Like

Nope, does not work that way. As you can clearly see in your pictures the gradient wavers between 0 and 5 degrees every quadrant. The projection of the angled lines and the half circle method will give different results, but the resulting incline still wavers. I have been trying various other methods, like projecting a cylindrical spiral onto a cone, or something with squish/squisback, but I am not there yet…


yup… i was just using CurvatureGraph and saw that its not correct. it straightens out at the intersection points as you say. so something like a projected sine wave maybe… cant wrap my head into it anymore for now.

Yes an elegant display in Rhino does exist. Its called draft angle analysis ( menu analysis>surface>draft angle)

the draft angle is calculated relative to the cplane z-axis and you would want to look at angles relative to horizontal so you need to use the compliment of your angle. For instance if you set the angle to 87 to -87 anything that is out of the range 3 to -3 off horizontal will show up

The only spirals (or helix’) I can find have a constant pitch, i.e. the z-increase for every revolution is constant. But since your path radius decreases with height, the incline becomes ever greater. It is most apparent when you make it a full cone, the highest part of the path approaches vertical.


First of all thanks for all your answers. I will try out all the suggested methods tomorrow in the office. I will then report which solution suited me the most. Anyway I wish you a happy and peaceful end of the week!


Analyzing the path incline is one thing, but of course it is better to construct it at a constant gradient in the first place. Here is a method to approximate it on a cone-like surface.
Suppose you want a constant gradient of 10 degrees. Below are the steps to create a set of point objects at every 10 degrees rotation (nothing to do with the gradient, just an easy number that happens to be the same).

  • Draw the base circle ,the axis and the top circle for reference. Draw a chord line between the front quad points of both circles. Rotate the chord line 5 deg. anti clockwise. Copy/rotate the chord line 10 deg. clockwise. Connect one or both of the lines with the axis to find the top of the cone.
  • In front view, create a line at an angle of 10 deg. starting from the bottom end of the left chord line. Trim the right chord line with the angled line, from the apparent intersection upwards. Delete the angled line.
  • Set a point object at the base of the left chord line, and one at the top of the remainder of the right chord line. Create a circular array with the last point around the axis, with 36 point objects. Set a point object at the top of the cone.
  • From now on it gets laborious. Each of the 36 points have to be scaled in sequence. The origin is the top of the cone, first reference is the point at the base of the left chord line (each step), second reference is the last scaled point object.
  • Create a curve through all points with InterpCrv


(Edit: I stopped after two revolutions. Told you it is laborious…:roll_eyes:)

(Edit2: I found an easier way: after you have done a single revolution, create the curve and scale/copy it the same way as the points, then merge all the curves to a single path)

(Edit3: The first reference point for scaling can be any point on the lower circle, I used a single point since I prefer to hide the blue layer, and only keep the point objects in view)


Concerning the fact that our project will be build in the next few years we need to consider the possibility to build the object. So the remark from maxz is indeed a very important one. Having a constant gradient in every part of the ramp is probably essential. Also thanks for the effort.

It is even more complicated in reality because the ramp will consist of different spirals on each level of the building. Considering the building laws with the gradient we will then play with the lenght of each spiral (which leads to different turns per level).

For now I will stick with the given tips. Next year we will know more about the ramp. Thanks to everyone and a merry Christmas.

Is This that you want?
Draw with command InterpCrvOnSrf

ConicalSpiralWithConstantSlope.3dm (3.0 MB)

VittorioConicalSpiralWithConstantSlopeV5.3dm (3.0 MB)


Maybe you should read the rest of the discussion, that is constant pitch, not constant gradient.