How to Create Revit Floor from Rhino Topography Surface or Mesh

i already did it but it s not fixing anything. I’m gonna re-install everything on my pc because i really can’t understand why the same exact definition works in scott’s example and gives me 0 output on my pc.

well, what is the error that the python component is returning?

I think it’s a units issue. Try the attached Revit 2022 file and previous support files.

Also note that since this is a temp python component each time you run it it adds points. In the example if you are changing point spacing it’s good to change to Replace to clear the previous points.

Roadwork_00.rvt (2.0 MB)

1 Like

No promises but should be able to get it in a daily in the next week or so.

Nice !
I’m gonna try it once more when i re-install everything on my pc. There is no reason the ghx definition shown by you guys won’t work.

I’d like to sincerely thank you all for this thread your answers and your amazing work. Rhino inside extended our capabilities, we are now able to work efficiently with our partners on projects that require BIM procedures. The only thing lacking for us is this possibility of creating native floors that can follow topography. Our office deals with architecture, urban design, landscape architecture and roadwork+infrastructures. That is why the floor element is key in our methodology.

Anyways thank you for this amazing piece of software and keep up the good work !
We are looking forward to the next implementations (and also rhino 8 ! object manager maybe ? :wink: ) Good day

Thanks! See the video below going through the example files from above, some of which may apply to the work you are doing. I think with this process, some Topography and a few trees you could have a pretty dynamic site workflow going.


This is great thanks a lot !
The only question that remains is the units.
Why is it you think that documents in meters can cause problems to this component ?

I was able to use meters without issue, mm was a problem. The script was created before some unit conversion was implemented.

Try this instead (3.2 KB)

1 Like


We’ve been using the script but we keep getting this error ==>

Is this common ?

Something is happening to the incoming floor. How are you using the script? What is the floor tracking set to? or are you enabling the python script just once?

The way i m using the script is as follows :

Step one : disable grasshoper solver
step 2 : disable “add floor component” and set tracking mode to disabled", disable python component"
Step 3 : select desired floor boundary and desired topography.
Step 4 : enable “add floor” component
Step 5 : enable “add floor” component" then enable python component
step 6 : recompute grasshoper.

Sometimes the script workes fine. But sometimes it sends errors like the one shown above or errors saying “transaction”

With tracking disabled it will create a new floor on each re-compute, creating multiple floors in your project, but should add points to the last once you enable the python component. I’ll test your process in more detail here shortly.

I found that it’s better to disable the tracking replace mode when working with a lot of floor elements. Otherwise i get too much “transaction errors”.

I restarted the process and managed to make it work.
It seems like it’s better to recompute the floor creation step, before recomputing the python element.
Python element should then be enabled when the flat floor is created.

Here’s the definition we use, if anyone would need it ==>

UPDATE : script seems to keep producing errors. Problems appear when using it multiple times to create multiple floors. I don’t know if it’s a tracking issue…

1 Like

It seems like its trying to keep track of the previous floors, a better workflow would be to copy the entire script except for the add floor Component and add a new Add Floor component that would keep Tracking the new elements you create.

Or Use the Release the tracking component and replace the Add Floor Component


UPDATE ON THE TOPIC. If this can be of any use.

Everything is running smoothly now with the las script uploaded by Japhy the Mar 4 2022.

We have been able to automate revit floor creation from autocad/rhino drawings with rigourous layer management and referencing.

It appears that the best way to generate the non-planars floors in revit is to disable the tracking on the “add floor component”. Also, it’s better to run the add floor component before runing the python script. Disabling pyton script when revit creates flat floor is the safest method since tracking can get a bit messy when having a lot of floor geometries to process.

Since this is workign quite well we are looking forward to trying a native rhino inside component for this !



hI japhy

I was wondering if you guys have made some progress on this subject ?


I’m not clear on how exactly to help you. Can you provide a specific example of behavior and expectations?

I was just wondering if you guys added a new grasshoper componnent that adds floors with point inputs.


And i was also wondering if there is any way to create direct shapes from rhino meshes in such a way that the interior mesh edges get categorized in revit as interior mes edges (so that we would be abled to hide interior edges)

No new component yet, there will be a topo add points soon & they should be really similar, but once again, no promises (i don’t make the components)

The directshapes are limited in Revit & the Revit API, particularly in the graphics control.

1 Like