Generate separate topography

I’m a landscape designer who has been using Revit for several years, but I’m still relatively new to Dynamo. At the moment I mainly use Dynamo for automatic family placement, parameter population, earthwork quantity calculations, and similar tasks..

One of the most time-consuming parts of my workflow is the creation of Toposolids (Revit 2024) or traditional Toposurfaces (Revit 2023) depending on the client’s requirements. I usually work on long railway corridors where we design large-scale environmental restoration areas. For each project I typically need to generate 100 to 500 separate topographies, and the process is both long and occasionally buggy.

Here is what I currently do manually:
I import survey data extracted from Civil 3D, create the main topography (or Toposolid), and then split it into multiple areas using hatch boundaries. I use the Split tool to generate all the individual topographic elements.

Is there a way to automate this entire workflow using Dynamo?
The manual process is extremely time-consuming, so I’m trying to streamline it.

One idea I had was to somehow isolate the points that inside each hatch boundary maybe using masks or spatial filtre cause i think is impossible split. and then generate the corresponding Toposurfaces or topossolid automatically. However, I’m not sure what is the best approach or whether there are existing nodes or packages that could help.

I feel like it’s doable since earlier this year I read about Revit 2026 improved the stability of boolean operations for toposolids. You will probably need boolean operations during the splitting. And there was another convo from my recollection that discussed how to prepare multiple subregions to create toposoilds but I failed to find that post, sry.

How about posting a little demo of the files?

In Dynamo import curves defining each toposolid, create a surface, import the points, use projection method to see which points lie over/under the surface(2D) and create a toposolid.

I think a workflow similar to this will do.

It’s probably best to publish the surfaces from Civil3D, then link in the surface (using ‘Link Topography) rather than regenerating them from points in Revit.

It’s quite an open-ended question- best to post samples and narrow it down to a specific query relating to Dynamo


Okay, I have prepared an imaginary view of an area where we have some topographic triangles created in CIVIL 3D and some hatches . At the moment, for the design workflow, we are using Revit 2023. As I mentioned, the idea would be that the triangles (in this case) that fall inside the hatches (or the hatch boundaries) could be isolated from the rest, like a mask. I’ll show an example.

My normal workflow is to create the topography and then use the Split command on the topography and select the areas to divide, but often there are really a lot of them.

For strange reason I can’t upload file in the forum

New users can’t post files to keep the community safe. I have updated your trust level, but it can take a few minutes to take effect. If after waiting a bit you still can’t post you can provide a link to a open folder on a file sharing service (onedrive, acc, google drive, wetransfer, etc.) of your choice.

DEMOHATCHTOPO.rvt (5.3 MB)

I’m using revit 2023.

Okay inside the file I’ve imported the ref-CAD

Thank you!

1 Like

just give the topo surface some thickness, extrude the hatch into a solid, and let revit kernel operate boolean intersection, then you just filter the results by world space normals to grab the faces you need. the downside is you cant save the output under topography category. but if you’ve used maya, 3ds max or blender before, you could let them handle the heavy lifting instead. just export as .fbx, bool op, then bring it back as a .stl and select topography category during import. that way you don’t even need to extrude the surface. revit demands two solids for its own boolean, so solid conversion is basically unavoidable there, at least in rvt 23.

another way is the more rvt-only approach, but it’s going to be code heavy.

you flatten every single triangle onto the xy plane and clip them with a hatch. and i mean triangles, not just points.

speaking of triangles, you are going to run into 3 different cases:

  • tri lives inside the hatch (keep)
  • outside (cull)
  • intersecting. if it intersects, you might end up with a smaller tri, quad, or n-gon. (if you only check points, the result will look like a jagged saws since removin one point culls a whole face at least, even if part of it was supposed to stay).

so for those quads and n-gons, you need to triangulate them yourself. eventually remove all duplicates because topo creation rejects the input containing dups in terms of (x,y). now since the clipping happens in 2d, you lose depth info and you could probably bring them back onto the topo surface. (snap, projection, rays and etc.) once that’s done, you create new topo. but after experiment, im inclined to believe revit doesn’t care about your mesh data input. it takes them but just… rebuilds the mesh the way it wants, rearranging indices, which means the final topo might not look exactly like what you expected with few vertices sticking out or dipping in. (could be my fault tho. indices could be messed up when i removed the dups. and i found the methods are marked obsolete, so i might give it another go with newer builds when i get around to it.) so i think this route requires some manual touch in the end.