Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: А.Balm от 04-04-2019, 09:22:23
-
Как через api создать поверхность смещенную от другой на какое то расстояние? Речь не только о плоскости, а вообще о поверхности.
Например есть цилиндрическая поверхность, а мы создаем оффсетом другую.
Спасибо.
-
Всё зависит от Вашей задачи. Если Вас интересует провести некий геометрический анализ, то, вероятно, Вам следует обратиться к 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 и не сохраняются в базу
-
Александр, спасибо!
Всё зависит от Вашей задачи.
В конце концов хочу получить возможность выбрать несколько граней, они могут принадлежать нескольким объектам, и создать по этим граням тело определенной толщины. Примерно так как создается крыша по грани. Вместо TessellatedShapeBuilder использую BRepBuilder. Точки вроде разобрался как сместить, но не нашел способа создать face сразу с отверстиями в BRepBuilder классе. Если верно понимаю нужно ковыряться с булевыми операциями над солидами..
-
Вместо TessellatedShapeBuilder использую BRepBuilder
Ну да, можно и им.
Если верно понимаю нужно ковыряться с булевыми операциями над солидами..
Да, всё правильно, класс BooleanOperationsUtils в помощь
-
Еще один вопрос. Как найти точку пересечения 2 линий? Нужен метод что типа Cruve.Extend(Curve otherOne), но такого не существует. Вообще хотелось бы модифицировать curveLoop или EdgeLoop, но они кажется все readonley..
-
Еще один вопрос.
Один вопрос - одна тема. Так как вопросы не связаны - создай новую тему.