Построение деформируемого параллелепипеда

Функция

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 – параметры построения граней (см. структуру NurbsBlockValues в op_shell_parameter.h).

Выходным параметром функции является тело result, построенное на NURBS-поверхностях.

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

Рассматриваемая функция позволяет получить деформируемое тело в форме прямоугольного параллелепипеда, размеры которого в локальной системе координат place определяют параметры ax, ay, az. Все грани параллелепипеда построены на базе плоских NURBS-поверхностей, порядок которых и количество контрольных точек определяются параметром param.

На рисунке приведен параллелепипед result, построенный с помощью функции NurbsBlockSolid(), и его контрольные точки. На рисунке справа приведен тот же параллелепипед после деформирования путем перемещения контрольных точек граней:

../../../../_images/M.6.4.1.png

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