Уклонение граней тела

Функция

MbResultType DraftSolid(       MbSolid &             solid,
                               MbeCopyMode           sameShell,
                         const MbDraftSolidParams  & draftParams,
                               MbDraftSolidResults & result );

выполняет построение тела с уклонением указанных граней тела от нейтральной изоплоскости или нейтральных рёбер на заданный угол.

Входными параметрами функции являются:

  • solid – исходное тело;

  • sameShell – режим копирования исходного тела;

  • draftParams – параметры уклона.

Выходным параметром функции является объект result класса MbDraftSolidResults, содержащий построенное тело уклона и атрибут хот-точки уклона.

Функция возвращает код результата операции из перечисления MbResultType.

Функция объявлена в файле action_solid.h.

Функция строит тело, грани которого уклонены относительно их положения в исходном теле solid.

Параметр sameShell управляет передачей граней, рёбер и вершин от исходного тела solid построенному телу result и может принимать одно из четырёх значений:

  • cm_Same = 0 (оболочка не копируется);

  • cm_KeepHistory (исходная оболочка и её копия имеют общие базовые поверхности, вершины и неизменённые операцией грани);

  • cm_KeepSurface (исходная оболочка и её копия имеют общие базовые поверхности);

  • cm_Copy (исходная оболочка и её копия не имеют общих данных).

Перечисление MbeCopyMode подробно описано в параграфе Копирование множества граней MbFaceShell.

Параметр draftParams задаёт параметры построения.

В классе MbDraftSolidParams для инициализации объекта draftParams с параметрами уклона используются следующие конструкторы (см. op_shell_parameter.h):

Конструкторы по нейтральной плоскости и именователю операции:

MbDraftSolidParams( const c3d::FacesSPtrVector & faces,
                    const MbPlacement3D &        neutralPlane,
                    const MbSNameMaker &         names,
                          double                 angle,
                          MbeFacePropagation     faceProp,
                          bool                   reverse );
MbDraftSolidParams( const c3d::FacesSPtrVector & faces,
                    const MbPlacement3D &        neutralPlane,
                    const MbSNameMaker &         names,
                          double                 angle,
                          MbeFacePropagation     faceProp,
                          bool                   reverse,
                          bool                   rebuildFillets );
MbDraftSolidParams( const RPArray<MbFace> &   faces,
                    const MbPlacement3D &     neutralPlane,
                    const MbSNameMaker &      names,
                          double              angle,
                          MbeFacePropagation  faceProp,
                          bool                reverse );

где

  • faces – уклоняемые грани;

  • neutralPlane – нейтральная плоскость;

  • names – именователь;

  • angle – угол уклона;

  • faceProp – признак захвата граней, гладко стыкующихся с уклоняемыми гранями;

  • reverse – флаг обратного направления уклона.

Конструкторы по набору рёбер и именователю:

MbDraftSolidParams( const c3d::FacesSPtrVector & faces,
                    const c3d::EdgesSPtrVector & edges,
                    const MbVector3D &           dir,
                    const MbSNameMaker &         names,
                          double                 angle,
                          MbeFacePropagation     faceProp,
                          bool                   reverse );
MbDraftSolidParams( const c3d::FacesSPtrVector & faces,
                    const c3d::EdgesSPtrVector & edges,
                    const MbVector3D &           dir,
                    const MbSNameMaker &         names,
                          double                 angle,
                          MbeFacePropagation     faceProp,
                          bool                   reverse,
                          bool                   rebuildFillets );

где

  • faces – уклоняемые грани;

  • edges – нейтральные рёбра;

  • dir – базовое направление;

  • names – именователь;

  • angle – угол уклона;

  • faceProp – признак захвата граней, гладко стыкующихся с уклоняемыми гранями;

  • reverse – флаг обратного направления уклона;

  • rebuildFillets – флаг перестройки прилежащих скруглений.

Параметр angle задаёт угол уклона указанных граней тела из множества faces относительно нейтральной плоскости neutralPlane или относительно нейтральных рёбер edges и направления dir (в зависимости от используемого конструктора).

Параметр faceProp управляет добавлением к множеству уклоняемых граней faces других граней тела, гладко стыкующихся с уклоняемыми гранями.

Параметр reverse управляет направлением уклона.

Параметр rebuildFillets управляет перестройкой прилежащих скруглений.

Параметр names обеспечивает именование граней, рёбер и вершин построенного тела.

На рис. 1 показаны исходное тело solid, нейтральная плоскость neutralPlane, относительно плоскости XY которой выполняется уклон граней, и уклоняемые грани faces:

../../../../_images/M.2.24.1.png

Рис. 1

На рис. 2 приведён результат построения тела с уклоном указанных граней:

../../../../_images/M.2.24.2.png

Рис. 2

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

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