Group curves, then line up curves by their average X or Y coordinates

Hey all.

Sorry this question may be a bit confusing, hopefully I’ve managed to clearly explain myself.

My overall goal here is to try and automate generating floor plans from point clouds. I’m at the stage where I’ve simplified it down but because of the nature of point clouds, the lines produced are all slightly off. I’d like to simplify it further and align (overlap) all the wall lines with one another so they are the same X or Y coordinates.

Extract Walls from PointCloud - Example.gh (19.0 KB)

I’m thinking it could be something along the lines of creating a small ‘bounding box’ around all the lines within a certain tolerance then grouping the lines that are in the same bounding box and averaging their X or Y? Basically group curves within a coordinate range, then average their coordinates. I’d then like to remove the parts of the lines that overlap, but that’s a separate question.

Pretty new to this so any advice would be much appreciated :slight_smile:

Cheers

Strange reverse engineering issue that one.

Are clouds LIDAR sourced? If so FYI Leica Geosystems (the top dog on similar matters) has an extensive portfolio of pts > mesh > objects “conversions” - mostly used in digitizing complex old AEC projects (plants, refineries and the likes) to some AEC BIM platform .

Other than that the general case of what you describe is addressable via code … but this is not an hour of work task.

Sorry about the late reply.

It is, seems like is should be easier than what it’s turning out to be.

I’ve looked into that a bit but it doesn’t quite do the job of simplifying it down as much as I’d like.

I’ve found a bit of a long winded way of doing it that I thought I’d post. I’m not going to explain too much, hopefully you can work it out in the file, but it’s pretty much what I suggested with using bounding boxes and then merging the colinear lines.

Extract Walls from PointCloud - Possible Solution.gh (101.9 KB)

Your Topology is more or less easy. That said, the general case of this is a classic Clustering by Angle and Distance. Appears peace of cake … but in fact is quite tricky. For instance given a random order of lines (could be Curves as well), a given angleDelta and a given distDelta:

The easy case:


The tricky one:

That sort of stuff.

1 Like