//////////////////////////////////////////////////////////////////////////////// /** \file \brief \ru Методы построения каркаса. \en Functions for wire frame creation. \~ */ //////////////////////////////////////////////////////////////////////////////// #ifndef __ACTION_WIREFRAME_H #define __ACTION_WIREFRAME_H #include class MATH_CLASS MbWireFrameFilletsParams; class MATH_CLASS MbNurbsWireFrameParams; class MATH_CLASS MbTrimmedWireFrameParams; class MATH_CLASS MbWireFrameProjParams; class MATH_CLASS MbWireFrameProjResult; //------------------------------------------------------------------------------ /** \brief \ru Создать скругленный каркас. \en Create a filleted wire frame. \~ \details \ru Создать каркас в виде плавного соединения (скругления) всех ребер каркаса. \n Если два ребра в каркасе гладко стыкуются, в этом стыке скругление не делается, радиус игнорируется. \n \en Create a wire frame as fillet of all the edges of a wire frame. \n If two edges in wire frame are smoothly connected, the fillet is not created at this joint, the radius is ignored. \n \~ \param[in] wireframe - \ru Исходный каркас. \en The initial wire frame. \~ \param[in] sameEdges - \ru Режим копирования входного каркаса. \en Whether to copy the input wire frame. \~ \param[in] params - \ru Параметры скругления. \en A fillet parameters. \~ \param[out] result - \ru Скругленный каркас. \en The filleted wire frame. \~ \return \ru Возвращает код результата операции. \en Returns operation result code. \~ \warning \ru В разработке. \en Under development. \~ \ingroup WireFrame_Modeling */ // --- MATH_FUNC( MbResultType ) CreateWireFrameFillets( c3d::WireFrameSPtr & wireframe, MbeCopyMode sameEdges, const MbWireFrameFilletsParams & params, c3d::WireFrameSPtr & result ); //------------------------------------------------------------------------------ /** \brief \ru Построить NURBS копию каркаса. \en Construct a NURBS copy of a wire frame. \~ \details \ru Строит проволочный каркас, содержащий NURBS кривые, аппроксимирующие заданный каркас. По возможности, строит точные кривые, возможно, с кратными узлами. Количеством узлов для NURBS определяется в зависимости от кривой. \en Constructs a wire frame contains NURBS curves which approximates a given wire frame. If it is possible, constructs the accurate curves, perhaps with multiple knots. The number of knots for NURBS is defined depending on the curve. \~ \param[in] wireFrame - \ru Исходный каркас. \en The initial wire frame. \~ \param[in] sameWire - \ru Режим копирования входного каркаса. \en Whether to copy the input wire frame. \~ \param[in] params - \ru Параметры скругления. \en A fillet parameters. \~ \param[out] result - \ru Построенный каркас с NURBS кривыми или nullptr при неуспешном построении. \en he constructed wire frame with NURBS curve or nullptr in a case of failure. \~ \return \ru Возвращает код результата операции. \en Returns operation result code. \~ \warning \ru В разработке. \en Under development. \~ */ // --- MATH_FUNC( MbResultType ) CreateNurbsWireFrame( c3d::WireFrameSPtr & wireFrame, MbeCopyMode sameWire, const MbNurbsWireFrameParams & params, c3d::WireFrameSPtr & result ); //------------------------------------------------------------------------------ /** \brief \ru Создать усеченный каркас. \en Create trimmed wire frame. \~ \details \ru Создать каркас в виде связной цепочки ребер исходного каркаса, заключенной между заданными точками усечения. \n Исходный каркас должен быть нормализован.\n \en Create a wire frame in the form of a connected chain of edges of the original wire frame enclosed between truncation points. \n Init wire frame should be normalized. \n \~ \param[in] wireframe - \ru Исходный каркас. \en The initial wire frame. \~ \param[in] sameEdges - \ru Режим копирования входного каркаса. \en Whether to copy the input wire frame. \~ \param[in] params - \ru Параметры усечения. \en Trimmed parameters. \~ \param[out] result - \ru Усеченный каркас. \en The trimmed wire frame. \~ \return \ru Возвращает код результата операции. \en Returns operation result code. \~ \warning \ru В разработке. \en Under development. \~ \ingroup WireFrame_Modeling */ // --- MATH_FUNC( MbResultType ) CreateTrimmedWireFrame( c3d::WireFrameSPtr & wireframe, MbeCopyMode sameEdges, const MbTrimmedWireFrameParams & params, c3d::WireFrameSPtr & result ); //------------------------------------------------------------------------------ /** \brief \ru Найти проекцию точки на проволочный каркас. \en Find the point projection to the wire frame. \~ \details \ru Найти ближайшую проекцию точки на проволочный каркас в диапазоне изменения параметра или на его продолжении. Аналог MbContour3D::NearPointProjection(). Проволочный каркас должен быть нормализован. \en Find the nearest projection of a point to the wire frame within the parameter range or its extension. Analogue of MbContour3D::NearPointProjection(). The wire frame must be normalized. \~ \param[in] wireFrame - \ru Проволочный каркас для поиска проекции. \en Wire frame for searching projection. \~ \param[in] params - \ru Параметры операции. \en Operation parameters. \~ \param[in] result - \ru Результаты операции. \en Results of the operation. \~ \return \ru Код результата операции. \en Operation result code. \~ */ // --- MATH_FUNC( MbResultType ) NearPointProjection( const MbWireFrame & wireFrame, const MbWireFrameProjParams & params, MbWireFrameProjResult & result ); #endif // __ACTION_WIREFRAME_H