There are essentially three different methods for creating Topography in Revit:
- Place Points manually
- Create from Important Instance (dwg)
- Create from Points Files (csv or txt)
When working with survey files, the first option obviously is not feasible and the third option usually has less than desirable results. Since surveys are done with real-world coordinates, they are almost always larger than Revit would prefer, and so if you try and import points while creating a surface you will usually get the warning:
“Imported Toposurface Points are located a large distance from the model and might not display properly. Points will be centered on the model instead.”
And this is almost always bad news, since you now have no idea where Revit decided to place your points. And sometimes the points will still not import correctly. So I typically always creating Topo using Important Instance.
But now with Dynamo, you can easily import CSV and LandXML points and then use those points to create Toposurfaces, other meshes, or even shape-edited Floors.
Importing points from a csv or txt file only takes a few nodes:
But, as I previously mentioned, the points probably have some very large x and y values will need to be adjusted for Revit. So, take your Survey Point coordinates and subtract them from all of the points.
And I created a node, Point.ShiftCoordinates, that will do this:
I also created a node that combines the import and point creation process, so the entire definition can be simplified even more:
Extracting points from a LandXML file is slightly more complicated, but still quite straightforward.
I used a sample file (GSG_features_alignments.xml) that can be downloaded from LandXML.org. I would also recommend downloading Lunchbox, since it has several nodes that allow you to easily extract the data from an xml file. In this definition, I extracted all of the points using DataSets.GetXMLNode (the LandXML format defines points with “P”).
For a slightly more robust definition, check out Jostein Olsen’s post, Ammo: LandXML surfaces to Revit. He also demonstrates how you can create a pure mesh element from the points and faces, which will give you the true triangulation from the xml file.