В данных, извлеченных из DWG, у вас нет двух прямоугольников. У вас 8 строк, с другой группировкой. Основываясь на этом примере, вы можете предположить, что первые 4 строки будут представлять один прямоугольник, а следующие 4 строки будут представлять вторую. Это правда в этом случае, но вы не можете зависеть от этого. Все будет зависеть от того, кто создал DWG, какие инструменты они использовали, и рисовали ли они прямоугольники в последовательности или чередовали ли они рисование, удаление, рисование, перемещение линий.
После импорта линий вы можете сгруппировать их сами, сделав поиск. Начните с первой строки. Любая другая линия, конечная точка которой совпадает с конечной точкой первой линии, является частью той же формы. Повторите процесс, используя конечные точки первой следующей строки, ища другую строку, которая имеет общую конечную точку.
Этот алгоритм, безусловно, выглядит как место для использования рекурсии, стандартный контейнер, такой как вектор или карта, Возможно оба. Кроме того, координаты являются плавающей точкой, поэтому вы должны быть осторожны с операторами сравнения и решить, насколько близко находится достаточно близко, чтобы быть одной и той же точкой.
Наконец, вам необходимо определить требования приемлемых / недопустимых входных файлов и решить, что делать с данными, которые не совпадают. Хороший общий алгоритм может найти треугольники, прямоугольники или любые связанные формы линий. Существует еще один уровень сложности, связанный с определением того, образуют ли соединенные линии простой замкнутый многоугольник, если линии пересекаются, и т. Д. c.
Намного проще, если вы можете быть уверены, что входные файлы всегда содержат только строки, которые образуют прямоугольники. Если вы не уверены в этом, ваша программа должна как минимум определить, когда она не может найти прямоугольники и безопасно завершить ее.