Создание поверхности на заданном расстояние от выбраной грани

Автор Тема: Создание поверхности на заданном расстояние от выбраной грани  (Прочитано 2688 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн А.BalmАвтор темы

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Как через api создать поверхность смещенную от другой на какое то расстояние? Речь не только о плоскости, а вообще о поверхности.
Например есть цилиндрическая поверхность, а мы создаем оффсетом другую.

Спасибо.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Всё зависит от Вашей задачи. Если Вас интересует провести некий геометрический анализ, то, вероятно, Вам следует обратиться к 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 и не сохраняются в базу

Оффлайн А.BalmАвтор темы

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Александр, спасибо!
Всё зависит от Вашей задачи.
В конце концов хочу получить возможность выбрать несколько  граней, они могут принадлежать нескольким объектам, и создать по этим граням тело определенной толщины. Примерно так как создается крыша по грани. Вместо TessellatedShapeBuilder использую BRepBuilder. Точки вроде разобрался как сместить, но не нашел способа создать face сразу с отверстиями в BRepBuilder классе. Если верно понимаю нужно ковыряться с булевыми операциями над солидами..

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Вместо TessellatedShapeBuilder использую BRepBuilder

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

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

Да, всё правильно, класс BooleanOperationsUtils в помощь

Оффлайн А.BalmАвтор темы

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Еще один вопрос. Как найти точку пересечения 2 линий? Нужен метод что типа Cruve.Extend(Curve otherOne), но такого не существует. Вообще хотелось бы модифицировать curveLoop или EdgeLoop, но они кажется все readonley..

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Еще один вопрос.
Один вопрос - одна тема. Так как вопросы не связаны - создай новую тему.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение