Построение симметричного тела

Функция

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:

../../../../_images/M.2.9.1.png

Рис. 1

На рис. 2 приведено построенное тело result:

../../../../_images/M.2.9.2.png

Рис. 2

На рис. 3 приведено построенное тело result для плоскости симметрии с противоположной нормалью:

../../../../_images/M.2.9.3.png

Рис. 3

На рис. 4 показаны исходное тело solid и плоскость симметрии place, не соприкасающиеся друг с другом:

../../../../_images/M.2.16.1.png

Рис. 4

На рис. 5 приведены исходное тело solid и построенное зеркальное тело result:

../../../../_images/M.2.16.2.png

Рис. 5

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

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