Замена поверхностей тела

Автор Тема: Замена поверхностей тела  (Прочитано 2314 раз)

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

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

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Замена поверхностей тела
« : 18-08-2019, 21:24:43 »
Есть задача заменить все кривоватые поверхности (Surface) тела (Solid3d) на плоские (Region) по тем же вертексам. (При условии что все вертексы на одной плоскости).
Получить грань из BRep не проблема, взять ее Entity - тоже не проблема. А вот как вставить замену обратно в солид? Не вижу никаких методов подмены частей у Solid3d. Обходных путей тоже не придумаю никак. Если б задача ограничивалась только выпуклыми поверхностями - то я бы построил плоскость по вертексам и отрезал (Slice) ей от солида все лишнее. Но поверхности могут быть и вогнутыми внутрь тела...

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Замена поверхностей тела
« Ответ #1 : 18-08-2019, 21:35:38 »
А Solid3d.RemoveFaces не пробовал? Интересно что получится.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Re: Замена поверхностей тела
« Ответ #2 : 18-08-2019, 21:40:54 »
RemoveFaces пробовал. Дырки удаляет на раз-два. Фаски иногда можно убрать. Думаю когда-нибудь использовать этот метод для построения упрощенного представления сборки. Но сейчас нужен не Remove, а Replace...

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Замена поверхностей тела
« Ответ #3 : 18-08-2019, 21:42:28 »
А комбинация RemoveFaces и ImprintEntity (здесь новый Region)?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Re: Замена поверхностей тела
« Ответ #4 : 18-08-2019, 21:50:40 »
ImprintEntity не пробовал т.к. подозреваю что это аналог команды Imprint, которая делает чуть больше чем ничего - плоские рисунки каким-то образом ассоциируются с поверхностями, но остаются плоскими и невидимыми ни в одном визуальном стиле кроме каркаса, т.е. не меняют геометрии тела. Если это какой-то другой Imprint - тогда можно потестировать... Но в любом случае нельзя у, грубо говоря, кубика удалить одну грань. RemoveFaces в лучшем случае выдаст eGeneralModelingFail а в худшем фатал. Ибо даже моей фантазии не хватает чтоб представить себе кубик из 5и граней :)

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Замена поверхностей тела
« Ответ #5 : 18-08-2019, 21:55:46 »
Еще одна идея. Solid3d.ExtrudeFaces с большим положительным height, зачем обрезаешь плоскостью и обратно Solid3d.ExtrudeFaces и тем же, но отрицательным height. Но это всё очень ненадежно. А надежного решения похоже нет.
Возможно вместо Solid3d.ExtrudeFaces  можно использовать Solid3d.OffsetFaces
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Re: Замена поверхностей тела
« Ответ #6 : 18-08-2019, 22:07:23 »
Хм...если Extrude сработает, то должно получится... Есть еще одна идея, но надо научиться двигать вертексы или ребра - и тоже я не вижу подходящего метода. А ведь пользователь запросто может их двигать - выбрал через ctrl и таскай move или gizmo или просто мышкой за grip... А в API ничего такого?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Замена поверхностей тела
« Ответ #7 : 18-08-2019, 22:14:10 »
А в API ничего такого?
Увы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение