How to Create Revit Floor from Rhino Topography Surface or Mesh

While using the exact same grasshoper definition i do not see the output in revit…

I really cannot understand why this is not sending an output floor into revit.


tried the same method with a new file, a simple rectangular base floor and one height point.

Get the Element ID of using the Element Passport component and paste into the Manage>Select By Element ID, it may be a units/location issue and be out of the view. Selection Box (BX) will isolate the element you selected by ID.

It looks like you are using floors for roadwork, one thing to consider is the scale and accuracy required.

In a large site you will want to clean up your points considerably.

1 Like


the selection by element ID takes the base floor, without the height points applied to it

I duplicated the mesh boundary, projecttocplane, then used that to generate a new floor, then used the script I posted to add the points from the mesh to the floor.

That is what i did to.
Even reacreated the floor directly in revit, but it seem the script is not working for some reason. it does not apply any point to the floor element

I have a feeling it’s a tolerance issue. Try changing the rhino units to feet.

Sadly the whole document needs to stay in meters or i won’t be able to collaborate with our partners (engeneers, landscape architects etc…). The python script does not reference any parameter that has something to do with units.

  • the file i’ve uploaded you used (and seems to work on your side) has it’s units set to meters.
    I really don t understand why the script sends an output that has with no point height applied to it, even when i try it with a single point.

Yes, I understand but you can create a new file with just the geo you need to translate, change the units, and translate the rhino mesh to Revit floor. You don’t have to change units in Revit. And it won’t be a different scale or have any impact on anything else. All that matters is if it works. I’m sure you don’t want to manually enter in all these points :thinking:

Haha yes, i am certainly not going to enter all these points.
I’m trying it in feet with a whole new file hope it s gonna work.

Can you upload your python grasshoper element please ? just in case mine is outdated ?

I got it directly from that link I posted. I even went to that link, redownloaded the file and worked specifically from that just to make sure it was still working.

One part of the process here is to clean up the input data from Rhino. When all this gets input to Revit it will be too much for Revit. Are all the points you are trying to input important? Just a few points for critical elevations should be enough. I might use only these points:

It resulted in this:

What is the error you get on your Python component? The downloadable example works, but it could get into a sitation that the transaction stays open.

Here’s a quick example, requires Elefront 6 legacy & the latest RiR Daily (others should work but i know the query category component was just updated)

Please open up Revit Imperial and run Step 1 and then 2.

Roads_101.3dm (69.9 KB)
Road_Work_Step_1.gh (16.0 KB)

3dm is flat closed polylines and a topo (currently off)
Step 1 will create new floor types and materials.
Step 2 adds the floors to the document and then adds the points which were projected to the Topo.

Road_Work_Step_2_add_Floors.gh (16.3 KB)

when you activate the python component it will throw errors that you will need to dismiss in Revit, we’ll get a native component added that will suppress those.

I’ll make a quick video tomorrow with some additional details.

2 Likes

Hi,

Thanks a lot for this script i m gonna try it out.
I ve been trying several methods with no succes. Even when reducing the amount of points. The python component still does not apply any modification to the revit floor (floor that i created with Rhino inside) and does not return any error code.

I m gonna try your script, if it does not work i ll assume something is wrong with my revit application

Thanks !

UPDATE : the script works when i create a random rectangular floor in revit. The point that are localized in it’s boundary are applied. When i create a floor using RIR (using the add floor element) the script does not work.


For some reason the script never works. Tried it several times. With se exact same definition. Also with a single floor. Double checked that every single point is within the boundary of the floor in plan view but the script just won t work =(… Floors stay flat.

UPDATE : tried using the script with a floor made in revit, it worked.
Tried the script with floors made with rhino inside, it did not work, and python grasshoper element sends a transaction error. This is really frustrating

UPDATE : we tried it on multiple computers at the office with multiple revit versions. The pyhton element simply is’nt functionnal for some reason i cannot understand.
GHX TEST.gh (11.8 KB)

UPDATE : here is a screenshot of the file where i applied scott’s recommandations

If it’s a transaction error then you might have to click back on Revit, then go back to grasshopper, and sometimes you even have to recompute the canvas. I have run into this a lot and it is why I always add a run boolean toggle to these python scripts so that I can control when it runs.

When will this happen? I’ve been using this component for many years now (even before RIR, when I created something similar in a Dynamo python component) and it is always a hassle. It would be much better if there could be a built-in component to do this that could also work with the element handling.

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.