Toposurface to NurbsSurface

In Revit, Toposurfaces are Mesh elements. By definition, a mesh contains points, edges, and faces. Topos are always more manageable to edit when they have fewer points and edges, but all of those edges can also make them appear unrealistic.

There are a variety of methods you can use to smooth out those edges, but one of the quickest ways to do this is to convert the Topo into a Nurbs Surfaces (in Dynamo, of course).

It is easier to see the edges of a Topo when it has fewer points, so I created a very simple surface (with only 32 points).


In Dynamo, the definition is quite simple. It requires three custom nodes- two from Landform and one from Clockwork.


The first node (Topography.Plane.XZ) creates a set of planes in the XZ direction (along the Y axis), the Clockwork node creates a set of nurbsCurves along those planes, and the final node divides the curves at a specified interval.

The output is a NurbsSurface and its points, which you can then use to create a new Toposurface in Revit.


Here is the definition again, but with a slightly different interval.


And the final results in Revit, with the 10′ interval in both directions (and 2838 points):



6 thoughts on “Toposurface to NurbsSurface

  1. The Code Block represents the number, in project units, of the spacing between planes/points/etc. correct? The smaller the number the more accurate but also the longer the definition runs right?

    • Yes, that is generally correct. The offset adjusts the spacing in the y direction, while the interval adjusts in the x direction. Though the interval spacing will adjust somewhat if the curves are not all the same length… but most will be the specified interval.

      Thanks for the comment.

  2. So I have a very complex surface approximately 6000 ft by 800 ft. I used 10 as my interval but it really did not smooth the contours and it took about 30 min to run, I then tried 5 as my interval but better result, just not what I am looking for. So I tried 1 for the interval and it ran continuously for 10 hrs and never completed the process. Is there anyway I can make this run quicker.

    I even did a split topo for just my site which is 1500 ft by 150 ft and ran it and it was still processing overnight and nothing completed it.

    • Yeah, I’m not sure if Revit can handle a Toposurface with that many points and I would not recommend trying to work with a Topo with points at 1′ intervals. Why do you need to add so many points?

      If you do split the surface, try making sure it is a orthogonal rectangle shape. Since the NurbsSurface is a grid of points, it handles rectangles more easily.

  3. The NurbsSurface.ByNurbsCurves node has an issue in Dynamo 2.x – IMHO due to the different way Flatten works. I’ve fixed that and will repost the graph shortly…

Leave a Reply

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

You are commenting using your 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 )

Connecting to %s