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).
So far, exporting to .sat seems to be the most efficient way to get the surfaces into Civil 3D.
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).
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.
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.
This may seem like a minor detail, but the difference in Civil 3D is critical, since you cannot add curved lines to a Surface.
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.
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.
To prevent this failure (and crashing), you need to add split lines that separate the curved face from the straight face.
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.
4 thoughts on “Extract Top and Bottom Floor Surfaces”
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.
I think is great. Allow people to understand better how to use Dynamo…interoporability is the current pain to everybody in any software…
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!