.. role:: code :class: code Построение деформируемого параллелепипеда ========================================= .. _Construction_a_deformable_block: .. версия ядра: 118058 Функция .. code-block:: cpp MbResultType NurbsBlockSolid( const MbPlacement3D & place, double ax, double ay, double az, bool outDir, const MbSNameMaker & names, SimpleName name, NurbsBlockValues & param, MbSolid *& result ) выполняет построение тела в форме прямого параллелепипеда с деформируемыми гранями. Входными параметрами функции являются: - **place** -- локальная система координат; - **ax** -- размер по оси X; - **ay** -- размер по оси Y; - **az** -- размер по оси Z; - **outDir** -- ориентация нормалей граней наружу тела (*true* -- нормали направлены наружу); - **names** -- именователь операции; - **name** -- главное имя; - **param** -- параметры построения граней (см. структуру :code:`NurbsBlockValues` в *op_shell_parameter.h*). Выходным параметром функции является тело **result**, построенное на NURBS-поверхностях. Функция объявлена в файле *action_direct.h*. Рассматриваемая функция позволяет получить деформируемое тело в форме прямоугольного параллелепипеда, размеры которого в локальной системе координат **place** определяют параметры **ax**, **ay**, **az**. Все грани параллелепипеда построены на базе плоских NURBS-поверхностей, порядок которых и количество контрольных точек определяются параметром **param**. На рисунке приведен параллелепипед **result**, построенный с помощью функции :code:`NurbsBlockSolid`\(), и его контрольные точки. На рисунке справа приведен тот же параллелепипед после деформирования путем перемещения контрольных точек граней: .. figure:: /MODELER/DIRECT_MODELING_METHODS/pictures/M.6.4.1.png :width: 21cm :align: center Функция :code:`NurbsBlockSolid`\() добавляет в журнал построенного тела строитель :code:`MbNurbsBlockSolid`, который содержит все необходимые данные для выполнения операции. Строитель :code:`MbNurbsBlockSolid` объявлен в файле *cr_nurbs_block_solid.h*.