LandXML to Topography.ByPoints doesn´t work as expected

Hello, I´m new here, so I hope this thread doesn´t exist already.

I exported a LandXML file from Civil3D. In this file are 3 surfaces listed. Now my aim is to import it in revit and convert it to a topography. It was no problem to extract all the points and faces and generate a mesh (picture above). But with the Topography.ByPoint node I get a topography which doesn´t look right (picture below).

I’ve already tried a lot. But now I have no idea what goes wrong. Does somebody has an idea?

I think this could be a case of how revit topography works interpolates differently to civils 3d.

To get around this you need more points to get the same surface within revit, you could export the surface as a .sat and get dynamo to read this then split it up and get the points from it to then put into your script to create the topography

Note: if you are using .sat file, watch out for units

Thank you for the hint!

Civil 3D does not allow me to export my DTM to a sat-file, because it needs to be a solid.

If you export it to a solid then save the file as acis(.sat) file then you can continue above.

Have you looked at the civil engineering revit addon as that might help with some of the above(not fully tried the latest version)?

I did something similar here:
Maybe you can find it useful. I guess if you have only one surface you can simplify a bit.

@Brendan_Cassidy I´ll look at it!

@jostein_olsen I’ve looked at your link before already. But it´s important that I create topography(s) at the end and not mesh(es). So that Revit recognize it as a topography which can be modified with the topography/site tools.

Have you tried creating a surface in Civil3D and import it in Revit as a 3Ddwg? And then use that as a base for the topo in Revit? That have worked way better for me sometimes.

No, I haven´t tried that yet. How can I use that as a base for the topo?

It really seems to be that the LandXML file has not enough or the right points for Revit. With a landxml file from the internet my script works. The mesh looks so good. Is there no possibility to generate more points from the mesh or something like that?

You can run divided lines down the length of it and find the intersection of the points from the divided line with the mesh to generate more points.

Just importing the 3d-dwg and selecting it as a import instance in topo editor seems to work better than just from the points.

@jostein_olsen When I do it in that way the topography looks similar like the topography I created with my dynamo-script:

@Greg_McDowell With which nodes can I do that?

Check out – – for one workflow idea.

Greg McDowell Jr

@Greg_McDowell Thank you for the workflow. However, every time a failure message occurs when I try it.
The Topography.IntersectionWithPlane node first shows an empty list. So the Nurbssurface.ByNurbsCurves only creates a list with zeros.

Looks like you’re operating on the wrong list level. Try flattening the list after the Python node.

Greg McDowell Jr

I´ve tried this before, with a similar result:

No one has an idea?

Hi @NancyRue

Could you show watch node for “Topography.IntersectWithPlane” at “NurbsCurveByContolPoints”?

Hello @Kulkul, yes:

@NancyRue Try removing “null” values using “List.Clean” node with preserveindices set to false.

@Kulkul Good idea but unfortunately the same result: