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

Функция

MbResultType ThinSolid(       MbSolid &          solid,
                              MbeCopyMode        sameShell,
                              RPArray<MbFace> &  outFaces,
                              SweptValues &      params,
                        const MbSNameMaker &     names,
                              bool               copyFaceAttrs,
                              MbSolid *&         result );

выполняет построение тонкостенного тела исключением указанных граней исходного тела с опциональным приданием одинаковой толщины оставшимся граням.

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

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

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

  • outFaces — вскрываемые грани тела;

  • params — параметры операции;

  • names — именователь;

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

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

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

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

Функция удаляет из исходного тела solid указанные грани outFaces, а оставшимся граням «придаёт заданную толщину».

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

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

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

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

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

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

Параметр params содержит информацию о толщине стенки сохраняемых граней и замкнутости построенного тела result (см. op_swept_parameter.h).

Толщина стенки сохраняемых граней может быть равна params.thickness1 в положительном направлении нормали грани или params.thickness2 в отрицательном направлении нормали грани.

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

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

Параметр params.mergeFlags управляет слиянием подобных граней или рёбер (mergeFaces = true — сливать подобные грани; mergeEdges = true — сливать подобные рёбра).

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

Для выполнения операции удаляемые грани outFaces по общему периметру не должны иметь гладких рёбер стыковки с сохраняемыми гранями исходного тела.

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

На рис. 1 показаны исходное тело solid и удаляемые грани outFaces:

../../../../_images/M.2.13.1.png

Рис. 1

На рис. 2 приведено построенное тонкостенное тело result с утолщением сохранённых граней внутрь исходного тела:

../../../../_images/M.2.13.2.png

Рис. 2

На рис. 3 приведено построенное тонкостенное тело result с утолщением сохранённых граней наружу исходного тела:

../../../../_images/M.2.13.3.png

Рис. 3

На рис. 4 приведено построенное незамкнутое тело result:

../../../../_images/M.2.13.4.png

Рис. 4

На рис. 5 приведено тонкостенное тело, построенное при пустом множестве удаляемых граней:

../../../../_images/M.2.13.5.png

Рис. 5

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

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