Creating Topography from Pointcloud with dynamo

Hello.

I’m wondering if it was possible to create a topo surface based on a Point cloud scan by using Dynamo.
I’ve been searching multiple places for answers but I’m not satisfied with the results. I have no experience with topo what so ever but it would be fun to see the results!

The pointcloud was captured by a Dji drone with pix4D app, i then processed an LAZ. file with RecapPro. after this i Imported it into a revit project

Entirely possible @patrick.kabia :slight_smile:

You will need to extract the ground points from your data before proceeding into Dynamo or Revit.To do this, use of external software such as CloudCompare will be necessary. Reduction in point numbers via random sampling or Octree (spaced intervals) will also be required to ensure that any Topographical element doesn’t have an extremely complex series of control points, as this will be detrimental to model performance.


It would be easier to export the extracted points to an XYZ formatted file and read that file to create your points in Dynamo.

Then you should be able to use the OOTB node as intended. :slight_smile:

5 Likes

thank you.
can you explain how to reduce point numbers via random sampling?

This can be done in CloudCompare but also via editing the text file inside / outside Dynamo.

Random Inside:

Random Outside:

I am not able to demostrate the Octree reduction inside Dynamo at this time (will see when I can do this) but the example of how to sub-sample points in CloudCompare can be found here.

https://www.cloudcompare.org/doc/wiki/index.php?title=Edit\Subsample

3 Likes

Civil3D will create a surface from a pointcloud
If you know how C3D works with dynamic edits to surfaces- such as reducing triangulation- it can work pretty well

Otherwise- I’d agree with Ewan- Cloudcompare is the best bet
Note that Cloudcompare has both a UI mode and a commandline mode- either way, you use the subsampling function. In addition to the random or octree methods, the spatial method often works best as it makes the point spacing uniform

Dealing with very large numbers of points and complex triangulated surfaces probably isn’t the strength of Revit/Dynamo

5 Likes

thanks for all the support.
the reduction of points was a sucsess, i managed to import the treated xyz file.
but im not able to retrieve multiple coordinates with my Code Block

I looked at your script @Ewan_Opie. what does the “P” stand for?
image

p is just a variable identified to be taken as the input for the node .
In this case p is a list for input.
[ __ ] is the index within the list at which to extract the data.
If you change the Transpose status of the Data.ImportCSV node you should be good to go. :+1:

this worked out, but when im running the skript I get this error. im not sure of what this meansimage

The node expects doubles (numbers) so you will have to ensure that the object type of the values you are feeding it, and convert if necessary.

1 Like

hi, is this a typo? how can x*0.1 take out 30%?
image

Hi @Ewan_Opie

i applied the method you mentioned above and then i successfully created the topography but I failed to make 3 points in dynamo to form delaunay triangle.

Can you please tell me a little but where is the problem and what i have to do to fix it? pls

So you want a triangulation of the surface?

Hi @leonard.moelders
yes, something like this

You could try to create a triangulated mesh first:

https://dictionary.dynamobim.com/#/Geometry/IndexGroup/Create/ByIndices(a_int-b_int-c_int)

and then fetch the points in correct structure again:

https://dictionary.dynamobim.com/#/Geometry/Mesh/Query/VertexPositions

Hai Ewan, Can you plese tell me how to extract the xyz points from cloud compare.