Extract Top and Bottom Floor Surfaces

If you are working with shape-edited slabs in Revit, it can be difficult to coordinate with a civil engineer who is working in Civil 3D. It is fairly easy to export a Toposurface to a mesh, but solids are an entirely different matter.

Even if you do choose to export your solids as meshes, Revit will export the entire solid as individual mesh faces. This is not very useful in Civil 3D, since there is no way to isolate just the top or bottom faces.

But, of course, this can be done with Dynamo. And I have created a custom node that can extract the top and bottom surfaces of any element.

The main objective with this node, was to extract the top and bottom surfaces of shape-edited slabs. But like I said, it should be able to pull the top and bottom faces of any element (I have also briefly tested it on walls) .

So in Dynamo, first extract the geometry of the elements, then find its faces, and plug those surfaces into Surface.TopBasePolysurface (available in today’s update of Landform).

floor_mesh_def01

So far, exporting to .sat seems to be the most efficient way to get the surfaces into Civil 3D.

floor_mesh_def02.PNG

From Civil 3D, just import the .sat file. The origin in AutoCAD will be at the Revit Project Base Point (ideally, this should be a coordinated survey point or benchmark).

civil3d_sat01

I was able to add the imported surface to a C3D surface by exploding the polysurface into 3D lines, but I am no C3D expert, so there might be a better method.

civil3d_sat02

If you are working with any curves, I would recommend downloading the Mesh Toolkit. This will allow you to convert any curved edges/faces into a proper mesh. In this workflow, the first part of the Dynamo definition is slightly different.

floor_mesh_def03

This may seem like a minor detail, but the difference in Civil 3D is critical, since you cannot add curved lines to a Surface.

civil3d_compare

Also, when working with curves, you will need to add break lines at certain intervals. I have found that break lines (or split lines) are needed to separate the straight portion of a face from the curve potion. For example, if you try to run this shape-edited slab through the definition, it will fail.

slabshape_curves01

In fact, if you have selected multiple floors and one of them fails, Revit will probably crash (this happened to me several times). So make sure that your Surfaces are generating correctly before connecting to Surfaces.TopBasePolysurface. Also, I would recommend saving both Revit and Dynamo before running.

floor_mesh_def04

To prevent this failure (and crashing), you need to add split lines that separate the curved face from the straight face.

slabshape_curves02

And finally, I am fairly certain that this new node will not work in older versions of Dynamo. Last night, I updated to 0.9.2 (from 0.9.0), and then had to rework the node due to some changes in Surface.NormalAtParameter. So, be sure to have at least 0.9.2 if you want this node to work correctly.

Advertisements

4 thoughts on “Extract Top and Bottom Floor Surfaces

  1. Nice explanation, but as a workflow this is about the most convoluted and painful you can imagine. And then what of phases, design options, iterations, client changes… No criticism of you, just of Autodesk’s interoperability between its own products!

    • Ha, yeah it’s not a perfect workflow. I would say it is not particularly complicated, especially when compared to some workflows. Either way, better than nothing.

  2. My Revit Program crashes as soon as i load the Surface.TopBasePolysurface node but its only the case in Walls and Foundations, if select floors then there isn’t a issue. Can you take a look. Thanks!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s