.. role:: blue :class: blue Построение тонкостенного тела ============================== .. _Constructing_a_Thin-Wall_Body: .. версия ядра: 118041 Функция .. code-block:: cpp MbResultType ThinSolid( MbSolid & solid, MbeCopyMode sameShell, RPArray & outFaces, SweptValues & params, const MbSNameMaker & names, bool copyFaceAttrs, MbSolid *& result ); выполняет построение тонкостенного тела исключением указанных граней исходного тела с опциональным приданием одинаковой толщины оставшимся граням. Входными параметрами функции являются: - **solid** — исходное тело; - **sameShell** — режим копирования исходного тела; - **outFaces** — вскрываемые грани тела; - **params** — параметры операции; - **names** — именователь; - **copyFaceAttrs** — флаг копирования атрибутов из исходных граней в эквидистантные. Выходным параметром функции является построенное тело **result**. Функция возвращает код результата операции из перечисления :ref:`MbResultType `. Функция объявлена в файле *action_solid.h*. Функция удаляет из исходного тела **solid** указанные грани **outFaces**, а оставшимся граням «придаёт заданную толщину». Параметр **sameShell** управляет передачей граней, рёбер и вершин от исходного тела **solid** построенному телу **result** и может принимать одно из четырёх значений: - *cm_Same = 0* (оболочка не копируется); - *cm_KeepHistory* (исходная оболочка и её копия имеют общие базовые поверхности, вершины и неизменённые операцией грани); - *cm_KeepSurface* (исходная оболочка и её копия имеют общие базовые поверхности); - *cm_Copy* (исходная оболочка и её копия не имеют общих данных). Перечисление :blue:`MbeCopyMode` детально описано в параграфе :ref:`Копирование множества граней 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**: .. figure:: /MODELER/OPERATIONS_ON_BODIES/pictures/M.2.13.1.png :width: 12cm :align: center Рис. 1 На рис. 2 приведено построенное тонкостенное тело **result** с утолщением сохранённых граней внутрь исходного тела: .. figure:: /MODELER/OPERATIONS_ON_BODIES/pictures/M.2.13.2.png :width: 12cm :align: center Рис. 2 На рис. 3 приведено построенное тонкостенное тело **result** с утолщением сохранённых граней наружу исходного тела: .. figure:: /MODELER/OPERATIONS_ON_BODIES/pictures/M.2.13.3.png :width: 12cm :align: center Рис. 3 На рис. 4 приведено построенное незамкнутое тело **result**: .. figure:: /MODELER/OPERATIONS_ON_BODIES/pictures/M.2.13.4.png :width: 12cm :align: center Рис. 4 На рис. 5 приведено тонкостенное тело, построенное при пустом множестве удаляемых граней: .. figure:: /MODELER/OPERATIONS_ON_BODIES/pictures/M.2.13.5.png :width: 12cm :align: center Рис. 5 Функция :blue:`ThinSolid`\() добавляет в журнал построенного тела строитель :blue:`MbShellSolid`, который содержит все необходимые данные для выполнения операции. Строитель :blue:`MbShellSolid` объявлен в файле *cr_thin_shell_solid.h*. В тестовом приложении *test.exe* построение тонкостенного тела выполняется командой меню «Создать → Тело → Обработкой граней → Тонкостенное одной толщины».