.. role:: blue :class: blue Построение составной кривой =========================== .. _Compound_Curve_Construction: .. версия ядра: 118054 Функция .. code-block:: cpp MbResultType CreateContour( MbCurve3D & curve, MbContour3D *& result ) выполняет построение составной кривой на базе одной исходной кривой. Входным параметром функции является исходная кривая **curve**. При успешном завершении работы функция возвращает :blue:`rt_Success`, в противном случае функция возвращает код ошибки из перечисления :ref:`MbResultType `. Выходным параметром функции является построенная составная кривая (контур) **result**. При успешном выполнении в **result** возвращается указатель на новый объект :blue:`MbContour3D`; удаление объекта возлагается на вызывающий код. Функция объявлена в файле *action_curve3d.h*. Функция создает составную кривую **result** на базе исходной кривой **curve**. Если исходная кривая **curve** является составной кривой, то в кривую **result** будут положены составляющие элементы исходной кривой. Составная кривая описана в параграфе :ref:`Контур MbContour3D `. Функция .. code-block:: cpp MbResultType AddCurveToContour( MbCurve3D & curve, MbCurve3D & contour, bool toEnd ) модифицирует составную кривую путём добавления кривой. Входными параметрами функции являются: - **curve** — добавляемая кривая; - **contour** — модифицируемая составная кривая; - **toEnd** — флаг места добавления кривой. Выходным параметром функции является модифицируемая кривая **contour**. При успешном завершении работы функция возвращает :blue:`rt_Success`, в противном случае функция возвращает код ошибки из перечисления :ref:`MbResultType `. Функция объявлена в файле *action_curve3d.h*. Функция модифицирует составную кривую **contour** путём добавления кривой **curve** в начало или конец составной кривой. Если **toEnd** = *true*, то кривая **curve** будет добавлена в конец составной кривой **contour**, если **toEnd** = *false*, то кривая **curve** будет добавлена в начало составной кривой **contour**. Точки стыковки модифицируемой кривой и добавляемой кривой должны совпадать, рис. 1: .. figure:: /MODELER/CURVE_CONSTRUCTION_METHODS/pictures/M.4.7.1.png :width: 9cm :align: center Рис. 1 Если добавляемая кривая **curve** является составной кривой, то в кривую **contour** будут добавлены составляющие элементы добавляемой кривой. Функция .. code-block:: cpp MbResultType CreateContours( RPArray & curves, double metricEps, RPArray & result, bool onlySmoothConnected = false, VERSION version = Math::DefaultMathVersion() ) выполняет построение составных кривых из множества исходных кривых (оригиналов кривых). Входными параметрами функции являются: - **curves** — множество исходных кривых; - **metricEps** — радиус захвата для стыковки исходных кривых; - **onlySmoothConnected** — флаг использования гладкой стыковки исходных кривых; - **version** — версия исполнения. Выходным параметром функции является множество построенных составных кривых **result**. При успешном завершении работы функция возвращает :blue:`rt_Success`, в противном случае функция возвращает код ошибки из перечисления :ref:`MbResultType `. Функция объявлена в файле *action_curve3d.h*. Функция на базе исходных кривых **curves** создает составные кривые и складывает их в множество **result**. Если флаг **onlySmoothConnected** = *true*, то все построенные составные кривые будут гладкими, то есть в точках стыковки кривые будут иметь одинаково направленные касательные, но длина производной в точках стыковки может меняться скачком. Если какая-либо исходная кривая множества **curves** является составной кривой, то в составную кривую будут добавлены составляющие элементы такой исходной кривой. Вырожденные кривые, кривые с нулевым указателем и дубликаты кривых удаляются из входного массива, если у них нет владельца. Функция .. code-block:: cpp MbResultType CreateContours( RPArray & curves, double metricAcc, bool onlySmoothConnected = false, VERSION version = Math::DefaultMathVersion() ) выполняет построение контуров по набору кривых с удалением вырожденных кривых (на оригиналах кривых). Входными параметрами функции являются: - **curves** — множество исходных кривых (модифицируется); - **metricAcc** — радиус захвата для стыковки исходных кривых; - **onlySmoothConnected** — флаг использования в контуре только гладко стыкующихся сегментов; - **version** — версия исполнения. Выходным параметром функции является множество **curves**, которое после выполнения содержит построенные составные кривые. При успешном завершении работы функция возвращает :blue:`rt_Success`, в противном случае функция возвращает код ошибки из перечисления :ref:`MbResultType `. Функция объявлена в файле *action_curve3d.h*. Функция автоматически удаляет из массива **curves** вырожденные кривые (с нулевой длиной или с совпадающими начальной и конечной точками (для незамкнутых кривых)), кривые с нулевым указателем и дубликаты кривых, не имеющих владельца. Результирующие составные кривые складываются обратно в массив **curves**, заменяя исходные элементы.