Seeking advice, tips, etc. on 'distance validation' between Revit model and Pointcloud data

Hi all,

I’m currently diving into the front-end of a new script development and could use some guidance, insights, or general advice on how to approach something like this.

My end goal is to automate the updating of element locations (or to initially find the ‘offset’) of our Revit elements using AsBuilt data gathered from PointCloud scans. I would like the script to use the shapes/ size of the Revit elements to find a similar shape and size in its nearby area of the PointCloud to determine is accuracy in terms of placement.

I have done some work in the past with PointCloud and the sastrugi package/ the Revit API to get PointCloud points into Dynamo but I have no idea on where to start when trying to check if a model would be accurate in regards to a PointCloud scan.

Any tips, further literature, general directions and/or thoughts about this would be greatly appreciated.

Run way. :laughing:

The Revit elements are structured into individual elements. The point clouds are not.

As such you’re comparing structured data (revit) to unstructured data (point clouds). You could do fancy object extraction on the point cloud, but there wouldn’t be a reference to the matching element. Even if everything was perfectly aligned but I installed the fixtures in the order B C A instead of A B C your point cloud won’t know that the order changed, just that the object found at location B doesn’t match the design model at A.

1 Like

Would it be a solution to extract a specific part of the point cloud based on the location of those revit elements? e.g. a 1x1x1m. area?

Amigo @Daan buenas. Create a Best Fit element for your Cloud point may be?? like this you can evaluate since your surface of the sphere to the outer bounding box of your model Elements!! just an idea

Hi @gilberto.arechigaiba ,

Thanks for the suggestion, the main challenge however is that I need to have an algoritm/ approach that uses a set object/size, e.g. a cuboid of 0.2x0.2x1m. which is then, using that shape, compared against the point cloud to find the best fit of that specific shape.

The problem with having a point cloud as input is that the data is not structured/ organised whatsoever, its just points and there is no differentation between walls, floors, elements, etc.

So perhaps it would be better to rephrase my challenge as trying to create an algoritm which can find a very specific shape within a point cloud (with a margin).

Maybe. Depends on how accurate the build was. ‘Get points in the extended bounding box’ and compare each with the distance to the faces of the desired objects in the same area.

You’re going to be doing a lot of work on this, and many very skilled programmers have tried similar to find that the data is too inconsistent. This isn’t to say ‘don’t do it’, but to say you’re in for a lot of work.

The assumption made is that the elements are drawn quite accurately and only differ slightly, e.g. 5-10cm maximum from the AsBuilt location. If that’s not the case then the script should only notify the user that no similar/ suitable element in the pointcloud was found.

Im thinking of starting with having a small pointcloud containing points of part of a wall and floor and an installation element of the same shape and kind as modelled in our models. I found an interesting algoritm, at least by its description, online called “PCL Sample Consensus” which may be what im after but I haven’t done any testing as of now.

I think that an ideal output/ tool would be that the end user runs the script and then sees, in a sort of book/ overview per checked element a sort of visual analysis of the distance from the element and then the option on, e.g. update the AsDesigned element, to the AsBuilt location.