Далее пытался в стене найти окна или двери, но вся проблема в том, что одна стена может учавствовать в построении нескольких комнат, и если я нахожу в стене окно, то не факт что оно будет в выбранной комнате.Сергей, окна, двери и любые другие элементы, находящиеся на стене, фактически не являются границами стен. Антон подсказал веерный метод для обнаружения границ помещения.
А как быть с потолком и полом, просто через соприкосновение с поверхностью я не могу определить тип объекта?Разве? Я у себя применял подобное.
Виктор, спасибо, за подсказку, с окнами и дверьми все получилось, обычным перебором и проверку свойства Room.
А вообще тут всё сильно зависит от аккуратности моделирования. Попробуй ещё с SpatialElementGeometryCalculator поковыряться, получая все граничные элементы по конкретному помещениюДа, "ковыряю"... Можно вопрос тут задам:
День добрый! то есть из файла не понятно, что некая точка А - это одна поверхность стены, а точка Б - это другая поверхность той же стены?У двух стен Edge будет одинковый, как их сравнить? По точкам?
А что если сделать так:
для каждой стены берем LocationCurve, делаем её копию (метод Clone), затем вызываем MakeUnbound() - получили бесконечную прямую.
Затем попарно их пересекаем метод Intersect(), если пересечений нет (метод возвращает SetComparisonResult.Disjoint - There is no intersection found between the two curves), значит стенки параллельны, мы можем у LocationCurve второй стены взять GetEndPoint(0), вызвать curve(первой стены).Project() - в результате определить расстояние между двумя параллельными стенами, точнее между их осевыми, а дальше можно уже просто сравнить значения и сделать нужные телодвижения