.. role:: blue :class: blue Уклонение граней тела ===================== .. _Sloping_Body_Faces: .. версия ядра: 118058 Функция .. code-block:: cpp MbResultType DraftSolid( MbSolid & solid, MbeCopyMode sameShell, const MbDraftSolidParams & draftParams, MbDraftSolidResults & result ); выполняет построение тела с уклонением указанных граней тела от нейтральной изоплоскости или нейтральных рёбер на заданный угол. Входными параметрами функции являются: * **solid** – исходное тело; * **sameShell** – режим копирования исходного тела; * **draftParams** – параметры уклона. Выходным параметром функции является объект **result** класса :blue:`MbDraftSolidResults`, содержащий построенное тело уклона и атрибут хот-точки уклона. Функция возвращает код результата операции из перечисления :blue:`MbResultType`. Функция объявлена в файле *action_solid.h*. Функция строит тело, грани которого уклонены относительно их положения в исходном теле **solid**. Параметр **sameShell** управляет передачей граней, рёбер и вершин от исходного тела **solid** построенному телу **result** и может принимать одно из четырёх значений: - *cm_Same* = 0 (оболочка не копируется); - *cm_KeepHistory* (исходная оболочка и её копия имеют общие базовые поверхности, вершины и неизменённые операцией грани); - *cm_KeepSurface* (исходная оболочка и её копия имеют общие базовые поверхности); - *cm_Copy* (исходная оболочка и её копия не имеют общих данных). Перечисление :blue:`MbeCopyMode` подробно описано в параграфе :ref:`Копирование множества граней MbFaceShell `. Параметр **draftParams** задаёт параметры построения. В классе :blue:`MbDraftSolidParams` для инициализации объекта **draftParams** с параметрами уклона используются следующие конструкторы (см. *op_shell_parameter.h*): **Конструкторы по нейтральной плоскости и именователю операции**: .. code-block:: cpp MbDraftSolidParams( const c3d::FacesSPtrVector & faces, const MbPlacement3D & neutralPlane, const MbSNameMaker & names, double angle, MbeFacePropagation faceProp, bool reverse ); .. code-block:: cpp MbDraftSolidParams( const c3d::FacesSPtrVector & faces, const MbPlacement3D & neutralPlane, const MbSNameMaker & names, double angle, MbeFacePropagation faceProp, bool reverse, bool rebuildFillets ); .. code-block:: cpp MbDraftSolidParams( const RPArray & faces, const MbPlacement3D & neutralPlane, const MbSNameMaker & names, double angle, MbeFacePropagation faceProp, bool reverse ); где - **faces** – уклоняемые грани; - **neutralPlane** – нейтральная плоскость; - **names** – именователь; - **angle** – угол уклона; - **faceProp** – признак захвата граней, гладко стыкующихся с уклоняемыми гранями; - **reverse** – флаг обратного направления уклона. **Конструкторы по набору рёбер и именователю**: .. code-block:: cpp MbDraftSolidParams( const c3d::FacesSPtrVector & faces, const c3d::EdgesSPtrVector & edges, const MbVector3D & dir, const MbSNameMaker & names, double angle, MbeFacePropagation faceProp, bool reverse ); .. code-block:: cpp 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**: .. figure:: /MODELER/OPERATIONS_ON_BODIES/pictures/M.2.24.1.png :width: 9cm :align: center Рис. 1 На рис. 2 приведён результат построения тела с уклоном указанных граней: .. figure:: /MODELER/OPERATIONS_ON_BODIES/pictures/M.2.24.2.png :width: 9cm :align: center Рис. 2 Функция :blue:`DraftSolid`\() добавляет в журнал построенного тела строитель :blue:`MbDraftSolid`, который содержит все необходимые данные для выполнения операции. Строитель :blue:`MbDraftSolid` объявлен в файле *cr_draft_solid.h*. В тестовом приложении *test.exe* уклонение указанных граней тела выполняется командой меню «Создать→Тело→Обработкой граней→Уклонением граней».