Построение тонкостенного тела
Функция
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:
Рис. 1
На рис. 2 приведено построенное тонкостенное тело result с утолщением сохранённых граней внутрь исходного тела:
Рис. 2
На рис. 3 приведено построенное тонкостенное тело result с утолщением сохранённых граней наружу исходного тела:
Рис. 3
На рис. 4 приведено построенное незамкнутое тело result:
Рис. 4
На рис. 5 приведено тонкостенное тело, построенное при пустом множестве удаляемых граней:
Рис. 5
Функция ThinSolid() добавляет в журнал построенного тела строитель MbShellSolid, который содержит все необходимые данные для выполнения операции. Строитель MbShellSolid объявлен в файле cr_thin_shell_solid.h.
В тестовом приложении test.exe построение тонкостенного тела выполняется командой меню «Создать → Тело → Обработкой граней → Тонкостенное одной толщины».