Elliptical stair

Recently I was asked to create an elliptical stair in Revit. For anyone that has tried to create ‘complex’ forms in Revit, you’ll understand how difficult it can be to make these forms. I tried several methods within Revit to generate the stair, all of which proved impossible or inadequate. In the end I created the stair using Grasshopper, which was significantly faster and a much more robust workflow. The workflows detailed below outline both the failed Revit attempts as well as the successful Grasshopper script.

Intuitively, one would think that the first place to generate an elliptical stair would be the stair tool. However, upon exploration of the ‘Stair by Component’ tool it became evident that Revit only allows you to create a full-step spiral or a centre-ends spiral stair, neither of which will generate an elliptical stair. Even if you select ‘Create Sketch’ the only curve options available to you are based on arcs or circles. So again, not that useful in creating an elliptical stair.


Next, I explored the ‘Pick Lines’ tool thinking it may be a valid workaround. However, upon further investigation, I discovered that Revit wouldn’t allow you to pick a pre-generated ellipse, such as a model line, even if the ellipse is split into two segments. Interestingly, this is also true if you try to create an elliptical wall, with the only workaround being to create a mass and then use the wall by face tool. So in sum, the OFTB Revit stair tool is incapable of creating an elliptical stair. So what are the workarounds? 


Logically, the next place to look was the ‘Model In-Place’ component. The first issue with this methodology is that there is no category for ‘Stair’ which means even if we were successful in modelling the elliptical stair, we wouldn’t be able to tag or schedule it easily and would require even more workarounds. The positive though is that within the sketch environment, Revit allows you to draw ellipses and/or use the Pick Line tool on existing ellipses.  

Revit_Inplace mass_1800x650

Since the geometry is elliptical, it is not possible to draw a profile and use a revolve or sweep to generate the form. We need to work in plan and draw extrusions for each tread. This process sounded painful and quite tedious, so I created a mass family to act as a rig for the geometry. A mass family was chosen over a Generic Model family for its ability to generate Reference Points hosted at the intersections of reference lines/planes. With quite a bit of work, this methodology could work. However, it was decided that the family’s constraints were highly susceptible to breaking when flexed. Therefore, the family would likely need to be rebuilt several times to achieve the desired outcome. This methodology was, consequently aborted.


For a long time now, I have been a big advocate of open BIM. In my opinion, this means harnessing the power of various software, since no software can do everything, and then combine this data/geometry into a single integrated BIM model. For this reason, I have no hesitation in integrating Rhino/Grasshopper models into a Revit model.


The Grasshopper script utilises the Elefront plug-in and will need to be installed for the script to work. The elliptical stair is fully parametric with the ability to change stair width, floor-to-floor height, tread thickness, etc. as well as the ability to reverse the stair and change its start position along the ellipse. Two variations of the script are provided. The first method treats the stringer as a solid, continuous balustrade. The second method has a stepped stringer at the landing. The script does not generate geometry for additional balustrade or handrails.


Once the stair has been generated and baked into Rhino, it is merely a matter of exporting the geometry as a *sat file, creating a new Generic Model family in Revit and import the *sat file. Like the Model In-Place method described earlier, this methodology still won’t allow you to set the category of the generic model family to ‘Stair’ and will, therefore, require some Revit gymnastics to schedule and tag correctly within the project.

Although this method means that editing the geometry in Revit is near impossible, the ability to quickly make changes in Grasshopper and update the Revit family means that managing design changes is quick and relatively easy. Of course, it would be ideal if Autodesk could develop Revit’s capability so that we could generate the elliptical stair intuitively within Revit. Still, until then, this is the best workaround I’ve discovered.

9 Comments on “Elliptical stair

  1. downloaded the grasshopper file and elefront.
    Opened the grasshopper file with elefront installed.
    jiggled the grasshopper parameters.
    looked for some button to generate stairs …
    what do I do next? Am I missing a rhino model? Do I attach the parameters to a model that I must create?

    • You don’t need to do anything in Grasshopper. Just enable the Grasshopper geometry preview in the top right of the UI. In Rhino, go zoom extents and you should see it.

      • I downloaded the plugin but I can´t find the script.
        Where can i find it?

  2. The ellipses dont appear when i open the document so im blindly changing sizes because i cant visualize it, is there a way to fix this?

  3. This issue has already been raised in previous comments. Just enable the Grasshopper geometry preview in the top right of the UI. In Rhino, go zoom extents and you should see it.

    • Hi Ivana. The link is already there at the bottom of the page

      • Many thanks for the prompt reply. I am not able to visualize it in grasshopper though. I can only bake each time..is it a cluster issue?

        • You need to enable the geometry preview as mentioned in earlier comments.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.