Построение симметричного тела
Функция
MbResultType SymmetrySolid( MbSolid & solid,
MbeCopyMode sameShell,
const MbSymmetrySolidParams & symParams,
c3d::SolidSPtr & result );
выполняет построение симметричного тела с заданной плоскостью симметрии.
Входными параметрами функции являются:
solid – исходное тело;
sameShell – режим копирования исходного тела;
symParams – параметры операции.
Выходным параметром функции является построенное тело result.
Функция возвращает код результата операции из перечисления MbResultType.
Функция объявлена в файле action_solid.h.
Параметр sameShell может принимать одно из четырех значений:
cm_Same = 0 (оболочка не копируется);
cm_KeepHistory (исходная оболочка и её копия имеют общие базовые поверхности, вершины и неизменённые операцией грани);
cm_KeepSurface (исходная оболочка и её копия имеют общие базовые поверхности);
cm_Copy (исходная оболочка и её копия не имеют общих данных).
Перечисление MbeCopyMode описано в параграфе Копирование множества граней MbFaceShell.
В классе MbSymmetrySolidParams для инициализации объекта symParams задан конструктор параметров создания симметричного тела относительно плоскости XY локальной системы координат (см. op_shell_parameter.h):
MbSymmetrySolidParams( const MbPlacement3D & place,
const MbSNameMaker & operNames,
ThreeStates side );
где
place – система координат плоскости симметрии;
side – сохраняемая часть исходной оболочки (+1, 0, -1);
operNames – именователь операции.
Если параметр symParams.side = 1, то функция создаёт симметричное тело с заданной плоскостью симметрии следующим образом: исходное тело режется плоскостью XY локальной системы координат, берётся часть исходного тела, расположенная по положительному направлению оси Z от этой плоскости, строится зеркальная копия выбранной части исходного тела и объединяется с выбранной частью.
Если symParams.side = -1, то функция объединяет часть исходного тела, расположенную по отрицательному направлению оси Z от плоскости XY локальной системы координат, с зеркальной копией этой части относительно плоскости симметрии.
Параметр operNames обеспечивает именование граней, ребер и вершин построенного тела.
На рис. 1 показаны исходное тело solid и плоскость симметрии place:
Рис. 1
На рис. 2 приведено построенное тело result:
Рис. 2
На рис. 3 приведено построенное тело result для плоскости симметрии с противоположной нормалью:
Рис. 3
На рис. 4 показаны исходное тело solid и плоскость симметрии place, не соприкасающиеся друг с другом:
Рис. 4
На рис. 5 приведены исходное тело solid и построенное зеркальное тело result:
Рис. 5
Функция SymmetrySolid() добавляет в журнал построенного тела строитель MbSymmetrySolid, который содержит все необходимые данные для выполнения операции. Строитель MbSymmetrySolid объявлен в файле cr_symmetry_solid.h.
В тестовом приложении test.exe построение симметричного тела выполняется командой меню «Создать→Тело→На базе тела→Симметричное».