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