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

ADN Club => Revit API => Тема начата: А.Balm от 04-04-2019, 09:22:23

Название: Создание поверхности на заданном расстояние от выбраной грани
Отправлено: А.Balm от 04-04-2019, 09:22:23
Как через api создать поверхность смещенную от другой на какое то расстояние? Речь не только о плоскости, а вообще о поверхности.
Например есть цилиндрическая поверхность, а мы создаем оффсетом другую.

Спасибо.
Название: Re: Создание поверхности на заданном расстояние от выбраной грани
Отправлено: Александр Игнатович от 04-04-2019, 11:39:11
Всё зависит от Вашей задачи. Если Вас интересует провести некий геометрический анализ, то, вероятно, Вам следует обратиться к SDK и посмотреть описание классов-наследников Face, их не так много, всего 6, для каждого из них описано геометрическое параметрическое описание, например, для цилиндра это
Цитировать
S(u, v) = center + radius*cos(u)*xVec + radius*sin(u)*yVec + v*zVec

Альтернативно, можно с помощью SolidUtils.CreateTransformed создать смещённую геометрию и уже из неё получить поверхность.

Другая альтернатива - получить Mesh с помощью метода Face.Triangulate(), сместить точки уже не проблема.

Если Вы хотите отобразить результаты пользователю, можете посмотреть TessellatedShapeBuilder + DirectShape. Пример есть в SDK в описании класса TessellatedShapeBuilder.

Отобразить результаты так же можно с помощью AnalysisVisualizationFramework, в этом случае, правда, результаты отображаются только в рамках текущей сессии Revit и не сохраняются в базу
Название: Re: Создание поверхности на заданном расстояние от выбраной грани
Отправлено: А.Balm от 06-04-2019, 21:05:57
Александр, спасибо!
Всё зависит от Вашей задачи.
В конце концов хочу получить возможность выбрать несколько  граней, они могут принадлежать нескольким объектам, и создать по этим граням тело определенной толщины. Примерно так как создается крыша по грани. Вместо TessellatedShapeBuilder использую BRepBuilder. Точки вроде разобрался как сместить, но не нашел способа создать face сразу с отверстиями в BRepBuilder классе. Если верно понимаю нужно ковыряться с булевыми операциями над солидами..
Название: Re: Создание поверхности на заданном расстояние от выбраной грани
Отправлено: Александр Игнатович от 06-04-2019, 22:16:01
Вместо TessellatedShapeBuilder использую BRepBuilder

Ну да, можно и им.

Если верно понимаю нужно ковыряться с булевыми операциями над солидами..

Да, всё правильно, класс BooleanOperationsUtils в помощь
Название: Re: Создание поверхности на заданном расстояние от выбраной грани
Отправлено: А.Balm от 08-04-2019, 22:31:29
Еще один вопрос. Как найти точку пересечения 2 линий? Нужен метод что типа Cruve.Extend(Curve otherOne), но такого не существует. Вообще хотелось бы модифицировать curveLoop или EdgeLoop, но они кажется все readonley..
Название: Re: Создание поверхности на заданном расстояние от выбраной грани
Отправлено: Александр Ривилис от 08-04-2019, 22:50:25
Еще один вопрос.
Один вопрос - одна тема. Так как вопросы не связаны - создай новую тему.