Read E57 pointcloud in IronPython

Has anyone found a way to read pointclouds with E57 format in IronPython or C++?

Regards,
Terry.

Easiest would be to just script that:

import Rhino

# loaded manitou.e57 from http://www.libe57.org/data.html
f=r"E:\RhinoModels\e57\manitou.e57"

Rhino.RhinoApp.RunScript("_Import \"{0}\" _Enter".format(f), False)

What I did not mention is that the pointcloud is too big and must be decimated before being added to the Rhino Document. Thus I need to read the file into memory and then create the pointcloud geometry. After this it can added to the Document. This is what I now do with XYZ and PLY format files. Rhino’s current limit is no more than 2GB of pointcloud data (points@12B each + colors@3B each + normals@12B each + intensities@4B each). This means clouds with over about 200M points will not be fully displayed.

The E57 format is an open standard with C++ code available for reading/writing files. I have looked at the code and the provided examples but do not yet have my head around how to do this for pointclouds. Eventually I will puzzle it out. But if someone has already done this, then it would be great to ride their wave into the beach.

For Lidar scans it seems that the E57 format is the most used and so I want to provide direct support for it.

My script also provides other benefits besides decimation for pointclouds like filtering by distance, computing normals, creating elevation, contour, slope and slope direction maps. It has an aggressive performance goal of less than 1 minute for pointclouds with 1 billion points. This includes import, decimation, computation of normals and creation of a color map.

Regards,
Terry.