Построение эквидистантного тела

Функция

MbResultType OffsetShell(       MbSolid &             solid,
                                MbeCopyMode           sameShell,
                                RPArray<MbFace> &     initFaces,
                                bool                  checkFacesConnection,
                                SweptValues &         p,
                          const MbSNameMaker &        operNames,
                                bool                  copyFaceAttrs,
                                MbSolid *&            result );

выполняет построение эквидистантного тела для множества граней.

Входными параметрами функции являются:

  • solid – исходное тело;

  • sameShell – режим копирования исходного тела;

  • initFaces – множество исходных граней тела, для которых выполняется операция построения эквидистантного тела;

  • checkFacesConnection – флаг проверки связности выбранных граней:

    true – операция проверяет, что все грани в initFaces образуют одну связную область, при нарушении связности возвращается код ошибки и эквидистантное тело не строится;

    false – проверка не выполняется, что может привести к нескольким разрозненным участкам результата или к неуспеху операции;

  • p – объект, содержащий параметры построения;

  • operNames – именователь;

  • copyFaceAttrs – флаг копирования атрибутов из исходных граней в эквидистантные.

Выходным параметром функции является построенное эквидистантное тело result.

Функция возвращает код результата операции из перечисления MbResultType().

Функция объявлена в файле action_shell.h.

Функция строит тело, грани которого эквидистантны граням initFaces исходного тела solid.

Параметр sameShell управляет передачей граней, ребер и вершин от исходного тела solid построенному телу result. Данный параметр может принимать одно из четырех значений:

  • cm_Same = 0 (оболочка не копируется);

  • cm_KeepHistory (исходная оболочка и её копия имеют общие базовые поверхности, вершины и неизменённые операцией грани);

  • cm_KeepSurface (исходная оболочка и её копия имеют общие базовые поверхности);

  • cm_Copy (исходная оболочка и её копия не имеют общих данных).

Детальное описание перечисления MbeCopyMode находится в параграфе Копирование множества граней MbFaceShell.

Параметр p содержит информацию о расстоянии между гранями построенного тела и гранями исходного тела. Расстояние может быть равным p.thickness1 в положительном направлении или p.thickness2 в отрицательном направлении нормали граней исходного тела.

Если p.shellClosed = false, то будет построено незамкнутое тело.

Параметр p.checkSelfInt сообщает о необходимости проверки результата построения на самопересечение. По умолчанию p.checkSelfInt = false – проверка не выполняется.

Флаги p.mergeFlags управляют слиянием подобных граней и ребер (true - сливать подобные элементы).

Параметр operNames обеспечивает именование граней, ребер и вершин построенного тела.

На рис. 1 приведено тело, на базе указанных граней которого будет построено эквидистантное тело:

../../../../_images/M.1.15.1.png

Рис. 1

На рис. 2 приведено построенное эквидистантное тело:

../../../../_images/M.1.15.2.png

Рис. 2

Если множество граней initFaces будет содержать все грани исходного тела solid, то построенное тело result будет эквидистантным исходному телу solid.

Функция OffsetShell() добавляет в журнал построенного тела строитель MbShellSolid, который содержит все необходимые данные для построения тела. Строитель MbShellSolid объявлен в файле cr_thin_shell_solid.h.

В тестовом приложении test.exe построение эквидистантного незамкнутого тела осуществляется командой меню «Создать→Тело→На базе тела→Эквидистантное».