В C3D Modeler, в функциях прямого моделирования, появились новые команды. Прямое моделирование — изменение формы импортированных моделей без истории построения.
Первая из них — Изменение радиуса скругления. Функция позволяет выделить грань скругления и задать новое значение радиуса. Если скругление имеет связанные грани, они также перестраиваются.
Если в процессе импорта скругления превратились в nurbs-поверхности, команда их распознает как скругления. И после выполнения операции эти поверхности перестанут быть сплайнами и превратятся в элементарные, сохранив свои атрибуты.
Для вызова всех методов прямого редактирования используется функция:
MATH_FUNC (MbResultType) ModifiedSolid (файл action_direct.h)
Для передачи в неё требуется создать класс параметров MbModifiedSolidParams
с типом операции MbeModifyingMode::dmm_FilletsRadiusSet
или dmm_FilletsRadiusSetSingle
.
Параметры создаются по подходящему конструктору:
MbModifiedSolidParams( MbeModifyingMode type, const MbSNameMaker & names, const c3d::ItemIndices & faces, double value )
dmm_FilletsRadiusSet
— изменяет всю цепочку гладко состыкованных скруглений одинакового радиуса, как проиллюстрировано на рисунке выше.
dmm_FilletsRadiusSetSingle
— изменит только указанные грани, если это возможно. Это может потребоваться, например, для изменения только одного из нескольких скруглений одного радиуса, стыкующихся на угле.
Отличие от существовавшего ранее типа операции dmm_FilletsRadiusChange
в том, что dmm_FilletsRadiusChange
изменяет радиус на указанное число value, а dmm_FilletsRadiusSet
устанавливает новый радиус всем присланным скруглениям. Например, если на вход поданы 2 грани скругления с радиусами 10 и 20, то при value=5
в режиме dmm_FilletsRadiusChange
эти скругления после операции будут иметь радиусы 15 и 25, а при dmm_FilletsRadiusSet
5 и 5 соответственно.
Данная функциональность не предназначена для использования на скруглениях переменного радиуса, скруглениях эллипсом и т. п. Конфигурация скруглений на углах по возможности сохраняется, но в сложных случаях это не гарантируется.
В результатах операции создаются несколько вспомогательных объектов, характеризующие предполагаемое расположение новой грани, даже при невозможности выполнения операции. Это точка в центре новой грани скругления, ось, перпендикулярная окружности скругления, угол раскрывания скругления. Их можно получить при помощи метода MbModifiedSolidResults::GetFilletRadiusSetHotPoint
.
Другая новинка в прямом моделировании — это функция замены граней. Достаточно выбрать редактируемую грань и указать опорную. В этом случае тело перестроится, изменив форму грани. Скругления, гладко примыкающие к заменяемым граням, адаптируются.
Для вызова требуется класс параметров MbModifiedSolidParams
с типом операции MbeModifyingMode::dmm_ReplaceFaces
.
Параметры создаются по подходящему конструктору:
template<class SurfArray> MATH_FUNC_EX MbModifiedSolidParams( MbeModifyingMode type, const MbSNameMaker & names, const c3d::ItemIndices & replacedFaces, const SurfArray & replacementSurfaces, bool sameSurfaces, const c3d::NumbersVector & surfaceParts, const c3d::DoubleVector & offsets )
Редактируемую грань можно сразу заменять на поверхности с эквидистантным смещением (массив значений offsets). Если существует несколько вариантов замены: различные петли или периодические поверхности, то выбор осуществляется при помощи номера, заданного в surfaceParts
. Для элементарных поверхностей замена возможна на продолжении указанной поверхности, для всех прочих требуется существование поверхности в области продления тела, иначе результат не гарантируется.
Можно заменить сразу несколько граней на одну.
В результатах операции выдаются вспомогательные объекты, характеризующие предполагаемое расположение новой грани, даже при невозможности выполнения операции: точка в центре новой грани скругления и вектор, по которому эта точка смещается при изменении параметра сдвига. Их можно получить при помощи метода MbModifiedSolidResults::GetReplaceFacesHotPoint
.
Описанная функциональность готовится к выпуску и уже доступна для тестирования в модуле C3D Modeler. Запросить пробную версию вы можете через форму обратной связи на нашем сайте.