Roof By Extrusion

Hi all,

I am looking at creating an arched roof on rhino inside revit, however the “add roof” command only permits horizontal curves. Has anyone found a way of using the roof by extrusion command in RinR?

Many thanks


It’s available via the revit api, but not as simple as Add Roof. I’ll put it in as a feature request and post a simple python version when I can.

1 Like

The would be brilliant, thank you very much!

Can you please send it to me too? I have the same issue. Thank you in advance


Attached you will find a way to create roof by extrusion, what you need to do is input a (joined or single) planar curve that is not closed into the profile, the component will create reference plane in Revit according to the curves plane and create the roof… only tested on the shown sample so please let me know if something needs adjusting.

RoofByExtrusion (14.5 KB)


Thank you very much, that is awesome - I will check it out!

Hi again,

I appear to be getting an “invalid Profile” error for the curve I am inputting a planar curve. I have attached the script with the internalised curve for reference. (14.0 KB)

Many Thanks


Hey @julian.parkes ,

So I tried your curve and some other curves and for some reason they were giving that invalid Profile error due to the generated RefPlane in the code not working as expected, so I did a tweak to generate the plane within GH and a custom component and now is working better.

But unfortunately, either way your specific curve is not working to create the Roof though, I even tried adding it inside Revit as a model line then creating a roof by extrusion from the UI and the extrusion fails, so give the new definition a try with another curve and let me know. (You can try by using the RiR “Add Model Line” component and testing it) (17.5 KB)

Hey again,

This is a revised version of the first definition I sent.

So, aside from the curve needing to be planar and closed, the plane of the curve needs to be vertical, just like in the UI while creating a roof by extrusion you have to pick a vertical plane… and as you can see in the below GIF, out of the 4 input curves only 3 roofs got created because the line like curve’s plane is the XY plane and not a vertical plane.

RoofByExtrusion (17.0 KB)

1 Like

Hi Mohamed,

many thanks again for all the help, it is greatly appreciated. The script is working pretty well, although it does get a little confused when the orientation is changed! A couple of the roofs to go upside down and one is deleted all together lol

Apologies, the error was my end, I have sorted the is and now it all works perfectly!!

1 Like

Hello, Mohamed, thank you for the script. Its working great and is exactly what I was looking for.

I was wondering though - how is it possible to implement autoupdate and cleanup functionality in it?

I think I would like it to update on input change and store and delete IDs of previously created elements.

I’m total zero at coding for Rhino/Revit, so any advice on how I should approach that problem and what methods are to be used would me much appreciated.

Sergey, The element tracking isn’t exposed in the RiR 1.x, that is slated for 2.x.

Oh, I see. Thanks for quick reply! Looking forward!