Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: user32 от 13-02-2021, 10:05:04

Название: Найти точку на границе со стеной у семейства
Отправлено: user32 от 13-02-2021, 10:05:04
Здравствуйте,
У меня есть семейство не основе стены/перекрытия (проходки). Мне необходимо получать точки на границе со стеной как центральную так и угловую, но всегда с одной стороны.
Например вот такие:
(https://i.postimg.cc/PLtDdVHs/2021-02-13-09-55-34-Autodesk-Revit-2020-2-rvt-3-D-3-D.png) (https://postimg.cc/PLtDdVHs)
Я думал получить через bounding Box, но не могу понять как мне получить ту плоскость, которая параллельно стене,  возможно ли как то это сделать?
Может быть тут какой то другой подход можно применить, а не через Bbox?
Не могу понять что-то
Название: Re: Найти точку на границе со стеной у семейства
Отправлено: Александр Игнатович от 13-02-2021, 14:28:26
Не совсем понял вопрос, честно говоря, но, ты случаем, не Wall.Orientation ищешь?
Название: Re: Найти точку на границе со стеной у семейства
Отправлено: user32 от 15-02-2021, 09:32:08
Возможно это тоже пригодится. Идея заключается в следующем. У меня есть проходка, например, я беру у нее boundingBox, затем я у Bbox беру ту плоскость, которая параллельна стене и которая по координате X меньше и уже на ней я получаю точки которые мне нужны.

(https://i.postimg.cc/2bv1LgF9/image.png) (https://postimg.cc/2bv1LgF9)
Название: Re: Найти точку на границе со стеной у семейства
Отправлено: Александр Игнатович от 15-02-2021, 11:35:28
Так стены не обязательно параллельны OX или OY. Пока опять не понимаю, у тебя это семейство уже размещено в модели? Если оно на основе грани, можно попробовать с его HostFace-ом поработать
Название: Re: Найти точку на границе со стеной у семейства
Отправлено: user32 от 15-02-2021, 11:44:37
Да, семейство уже размещено в модели. Семейство на основе стены. Вот думаю попробовать найти пересечение элемента и стены, может как то через это получится
Название: Re: Найти точку на границе со стеной у семейства
Отправлено: Александр Пекшев aka Modis от 17-02-2021, 21:11:39
1. Через метод HostObjectUtils.GetSideFaces получаем нужную грань стены - наружную или внутреннюю. Пример (https://adndevblog.typepad.com/aec/2012/07/accessing-the-exterior-face-of-a-wall-programmatically.html)
2. Используем пример из этой статьи (https://thebuildingcoder.typepad.com/blog/2015/12/wall-opening-profiles-and-happy-holidays.html) и получаем грани, образованные семейством
3. Проецируем точки ребер граней из п.2 на плоскость из п.1 и находим среднюю точку
Название: Re: Найти точку на границе со стеной у семейства
Отправлено: user32 от 20-02-2021, 14:20:56
Спасибо!