//////////////////////////////////////////////////////////////////////////////// /** \file \brief \ru Построение фантомов операций. \en Creation of phantom operations. \~ */ //////////////////////////////////////////////////////////////////////////////// #ifndef __ACTION_PHANTOM_H #define __ACTION_PHANTOM_H #include #include #include #include #include #include #include #include class MATH_CLASS MbCurve; class MATH_CLASS MbCurve3D; class MATH_CLASS MbSurface; class MATH_CLASS MbCurveEdge; class MATH_CLASS MbFace; class MATH_CLASS MbSolid; class MATH_CLASS MbSNameMaker; //------------------------------------------------------------------------------ /** \brief \ru Построить фантомные поверхности скругления/фаски. \en Create phantom surfaces of fillet/chamfer. \~ \details \ru Построить фантомные поверхности скругления/фаски и сложить в контейнер surfaces. \n По окончании работ поверхности можно и нужно удалить. \n \en Create phantom surfaces of fillet/chamfer and store them in the container 'surfaces'. \n After finish working with the surfaces they should be deleted. \n \~ \deprecated \ru Метод устарел. Взамен использовать #SmoothPhantom с набором параметров #MbSmoothPhantomParams. \en The method is deprecated. Use instead #SmoothPhantom with the parameters #MbSmoothPhantomParams. \~ \param[in] solid - \ru Исходное тело. \en The initial solid. \~ \param[in] edges - \ru Множество выбранных ребер для скругления/фаски. \en An array of edges for fillet/chamfer. \~ \param[in] params - \ru Параметры операции скругления/фаски. \en Parameters of the fillet/chamfer operation. \~ \param[out] result - \ru Поверхности скругления/фаски. \en The fillet/chamfer surfaces. \~ \return \ru Возвращает код результата построения. \en Returns the creation result code. \~ \ingroup Algorithms_3D */ // --- DEPRECATE_DECLARE_REPLACE( SmoothPhantom with MbSmoothPhantomParams ) MATH_FUNC (MbResultType) SmoothPhantom( const MbSolid & solid, RPArray & edges, const SmoothValues & params, RPArray & result ); //------------------------------------------------------------------------------ /** \brief \ru Построить фантомные поверхности скругления/фаски. \en Create phantom surfaces of fillet/chamfer.\~ \details \ru Построить фантомные поверхности скругления/фаски и сложить в контейнер surfaces. \n По окончании работ поверхности можно и нужно удалить. \en Create phantom surfaces of fillet/chamfer and store them in the container 'surfaces'. \n After finish working with the surfaces they should be deleted. \~ \deprecated \ru Метод устарел. Взамен использовать #SmoothPhantom с набором параметров #MbSmoothPhantomParams. \en The method is deprecated. Use instead #SmoothPhantom with the parameters #MbSmoothPhantomParams. \~ \param[in] solid - \ru Исходное тело. \en The initial solid. \~ \param[in] edges - \ru Множество выбранных ребер и функций изменения радиуса для скругления/фаски. \en An array of edges and radius laws for fillet/chamfer. \~ \param[in] params - \ru Параметры операции скругления/фаски. \en Parameters of the fillet/chamfer operation. \~ \param[out] result - \ru Поверхности скругления/фаски. \en The fillet/chamfer surfaces. \~ \return \ru Возвращает код результата построения. \en Returns the creation result code. \~ \ingroup Algorithms_3D */ // --- DEPRECATE_DECLARE_REPLACE( SmoothPhantom with MbSmoothPhantomParams ) MATH_FUNC (MbResultType) SmoothPhantom( const MbSolid & solid, SArray & edges, const SmoothValues & params, RPArray & result ); //------------------------------------------------------------------------------ /** \brief \ru Построить фантомные поверхности скругления/фаски. \en Create phantom surfaces of fillet/chamfer.\~ \details \ru Построить фантомные поверхности скругления/фаски и сложить в контейнер surfaces. \n По окончании работ поверхности можно и нужно удалить. \en Create phantom surfaces of fillet/chamfer and store them in the container 'surfaces'. \n After finish working with the surfaces they should be deleted. \~ \param[in] params - \ru Параметры построения фантомных поверхностей скругления/фаски. \en Parameters of creating phantom surfaces of fillet/chamfer. \~ \param[out] result - \ru Поверхности скругления/фаски. \en The fillet/chamfer surfaces. \~ \return \ru Возвращает код результата построения. \en Returns the creation result code. \~ \ingroup Algorithms_3D */ // --- MATH_FUNC (MbResultType) SmoothPhantom( const MbSmoothPhantomParams & params, MbSmoothPhantomResult & result ); //------------------------------------------------------------------------------ /** \brief \ru Построить последовательности гладко стыкующихся рёбер. \en \~ \details \ru Построить последовательности гладко стыкующихся рёбер, скругляемых одновременно, а также поверхности скругления/фаски (массив surfaces). \n По окончании работ поверхности можно и нужно удалить. \en \~ \deprecated \ru Метод устарел. Взамен использовать #SmoothSequence с набором параметров #MbSmoothSequenceParams. \en The method is deprecated. Use instead #SmoothSequence with the parameters #MbSmoothSequenceParams. \~ \param[in] solid - \ru Исходное тело. \en The initial solid. \~ \param[in] edges - \ru Множество выбранных ребер для скругления/фаски. \en An array of edges for fillet/chamfer. \~ \param[in] params - \ru Параметры операции скругления/фаски. \en Parameters of the fillet/chamfer operation. \~ \param[in] createSurfaces - \ru Создавать ли поверхности скругления/фаски для фантома? \en Create a fillet/chamfer surfaces for phantom. \~ \param[out] sequences - \ru Последовательность гладко стыкующихся рёбер. \en Sequence of smooth mating edges. \~ \param[out] result - \ru Поверхности скругления/фаски. \en The fillet/chamfer surfaces. \~ \return \ru Возвращает код результата построения. \en \~ \ingroup Algorithms_3D */ // --- DEPRECATE_DECLARE_REPLACE( SmoothSequence with MbSmoothSequenceParams ) MATH_FUNC (MbResultType) SmoothSequence( const MbSolid & solid, RPArray & edges, const SmoothValues & params, bool createSurfaces, RPArray & sequences, RPArray & result ); //------------------------------------------------------------------------------ /** \brief \ru Построить последовательности гладко стыкующихся рёбер. \en \~ \details \ru Построить последовательности гладко стыкующихся рёбер, скругляемых одновременно, а также поверхности скругления/фаски (массив surfaces). \n По окончании работ поверхности можно и нужно удалить. \en \~ \deprecated \ru Метод устарел. Взамен использовать #SmoothSequence с набором параметров #MbSmoothSequenceParams. \en The method is deprecated. Use instead #SmoothSequence with the parameters #MbSmoothSequenceParams. \~ \param[in] solid - \ru Исходное тело. \en The initial solid. \~ \param[in] edges - \ru Множество выбранных ребер и функций изменения радиуса для скругления/фаски. \en An array of edges and radius laws for fillet/chamfer. \~ \param[in] params - \ru Параметры операции скругления/фаски. \en Parameters of the fillet/chamfer operation. \~ \param[in] createSurfaces - \ru Создавать ли поверхности скругления/фаски для фантома? \en Create a fillet/chamfer surfaces for phantom. \~ \param[out] sequences - \ru Последовательность гладко стыкующихся рёбер. \en Sequence of smooth mating edges. \~ \param[out] result - \ru Поверхности скругления/фаски. \en The fillet/chamfer surfaces. \~ \return \ru Возвращает код результата построения. \en \~ \ingroup Algorithms_3D */ // --- DEPRECATE_DECLARE_REPLACE( SmoothSequence with MbSmoothSequenceParams ) MATH_FUNC (MbResultType) SmoothSequence( const MbSolid & solid, SArray & edges, const SmoothValues & params, bool createSurfaces, RPArray & sequences, RPArray & result ); //------------------------------------------------------------------------------ /** \brief \ru Построить последовательности гладко стыкующихся рёбер. \en Create a sequence of smoothly connected edges.\~ \details \ru Построить последовательности гладко стыкующихся рёбер, скругляемых одновременно, а также поверхности скругления/фаски. \n По окончании работ поверхности можно и нужно удалить. \en Construct sequences of smoothly connected edges filleted at the same time, and fillet/chamfer surfaces. \n On the work completion, the surfaces can be and should deleted. \~ \param[in] params - \ru Параметры построения. \en Construction parameters. \~ \param[out] result - \ru Результат операции (построенные последовательности гладко стыкующихся рёбер и поверхности скругления/фаски.. \en The operation result (constructed sequences of smoothly connected edges and fillet/chamfer surfaces). \~ \return \ru Возвращает код результата построения. \en \~ \ingroup Algorithms_3D */ // --- MATH_FUNC (MbResultType) SmoothSequence( const MbSmoothSequenceParams & params, MbSmoothSequenceResult & result ); //------------------------------------------------------------------------------ /** \brief \ru Построить фантомные эквидистантные поверхности для граней оболочки. \en Create phantom offset surfaces for faces of a shell. \~ \details \ru Построить фантомные эквидистантные поверхности для граней оболочки, \n кроме имеющих перечислены кроме имеющих перечисленные индексы, и сложить в массив surfaces. \n По окончании работ поверхности можно и нужно удалить. \en Create phantom offset surfaces for faces of a shell, \n except the faces with specified indices and store them in array 'surfaces'. \n After finish working with the surfaces they should be deleted. \n \~ \param[in] solid - \ru Исходное тело. \en The initial solid. \~ \param[in] outFaces - \ru Множество вскрываемых граней тела. \en An array of shelling faces of the solid. \~ \param[in] offFaces - \ru Множество граней, для которых заданы индивидуальные значения толщин. \en An array of faces for which the individual values of thickness are specified. \~ \param[in] offDists - \ru Множество индивидуальных значений толщин (должен быть синхронизирован с массивом offFaces). \en An array of individual values of thickness (must be synchronized with the array 'offFaces'). \~ \param[in] params - \ru Параметры операции. \en The operation parameters. \~ \param[in] operNames - \ru Именователь. \en An object for naming the new objects. \~ \param[out] result - \ru Результат операции. \en The operation result. \~ \param[out] hpShellFaceInd - \ru Номер грани в исходной оболочки для построения хот-точки. \en The face number in the initial shell for a hot-point creation. \~ \return \ru Возвращает код результата построения. \en Returns the creation result code. \~ \ingroup Shell_Modeling */ // --- MATH_FUNC (MbResultType) OffsetPhantom( const MbSolid & solid, RPArray & outFaces, RPArray & offFaces, SArray & offDists, const SweptValues & params, const MbSNameMaker & operNames, MbFaceShell *& result, size_t * hpShellFaceInd = nullptr ); // \ru Номер грани в исходной оболочки для построения хот-точки); \en The face number in the initial shell for a hot-point creation); //------------------------------------------------------------------------------ /** \brief \ru Построить фантом габаритного куба в локальной системе координат. \en Create a phantom of a bounding box in local coordinate system. \~ \details \ru Построить фантом габаритного куба в локальной системе координат. \n \en Create a phantom of a bounding box in local coordinate system. \n \~ \param[in] solid - \ru Исходное тело. \en The initial solid. \~ \param[in] params - \ru Список параметров #MbLocalCubePhantomParams. \en List of parameters #MbLocalCubePhantomParams. \~ \param[out] result - \ru Фантом локального куба. \en The local bounding box phantom. \~ \return \ru Возвращает код результата построения. \en Returns the creation result code. \~ \ingroup Shell_Modeling */ // --- MATH_FUNC (MbResultType) LocalCubePhantom( const MbSolid & solid, const MbLocalCubePhantomParams & params, c3d::SolidSPtr & result ); //------------------------------------------------------------------------------ /** \brief \ru Определить фантомное направление усечения. \en Determine a phantom direction of truncation. \~ \details \ru Определить фантомное направление усечения по усеченной грани исходного тела. \n \en Determine a phantom direction of truncation given the truncated face of the initial solid. \n \~ \param[in] truncatingEdge - \ru Ребро усеченной грани исходного тела. \en An edge of truncated face of the initial solid. \~ \param[in] dirPlace - \ru Система координат направления усечения (Ось Z - направление усечения). \en A coordinate system of truncation direction (Z-axis is a truncation direction). \~ \return \ru Возвращает true, если получилось определить направление. \en Returns true if the direction has been successfully determined. \~ \ingroup Algorithms_3D */ // --- MATH_FUNC (bool) TruncatDirection( const MbCurveEdge & truncatingEdge, MbPlacement3D & dirPlace ); //------------------------------------------------------------------------------ /** \brief \ru Построить опорные точки размеров операции скругления/фаски. \en Create support points of fillet/chamfer operation sizes. \~ \details \ru Построить опорные точки размеров операции скругления/фаски и сложить в контейнер data. \n Первые две точки лежат на краях поверхности скругления/фаски. \en Create support points of fillet/chamfer operation sizes and store them in container 'data'. \n The first two points lie on the fillet/chamfer surface boundary. \~ \deprecated \ru Метод устарел. Взамен использовать #SmoothPositionData с набором параметров #MbSmoothPositionDataParams. \en The method is deprecated. Use instead #SmoothPositionData with the parameters #MbSmoothPositionDataParams. \~ \param[in] solid - \ru Исходное тело. \en The initial solid. \~ \param[in] edges - \ru Множество выбранных ребер для скругления/фаски. \en An array of edges for fillet/chamfer. \~ \param[in] params - \ru Параметры операции скругления/фаски. \en Parameters of the fillet/chamfer operation. \~ \param[out] result - \ru Опорные точки размеров операции скругления/фаски. \en Support points of the fillet/chamfer operation sizes. \~ \param[in] edgeParam - \ru Параметр точки на ребре (0 <= edgeParam <= 1). \en The parameter of a point on the edge (0 <= edgeParam <= 1). \~ \param[in] dimensionEdge - \ru Ребро, на котором дать опорные точки. \en The edge on which the support points are to be created. \~ \return \ru Возвращает код результата построения. \en Returns the creation result code. \~ \ingroup Algorithms_3D */ // --- DEPRECATE_DECLARE_REPLACE( SmoothPositionData with MbSmoothPositionDataParams ) MATH_FUNC (MbResultType) SmoothPositionData( const MbSolid & solid, RPArray & edges, const SmoothValues & params, RPArray & result, double edgeParam = 0.5, const MbCurveEdge * dimensionEdge = nullptr ); //------------------------------------------------------------------------------ /** \brief \ru Построить опорные точки размеров операции скругления/фаски. \en Create support points of fillet/chamfer operation sizes. \~ \details \ru Построить опорные точки размеров операции скругления/фаски и сложить в контейнер data. \n Первые две точки лежат на краях поверхности скругления/фаски. \en Create support points of fillet/chamfer operation sizes and store them in container 'data'. \n The first two points lie on the fillet/chamfer surface boundary. \~ \deprecated \ru Метод устарел. Взамен использовать #SmoothPositionData с набором параметров #MbSmoothPositionDataParams. \en The method is deprecated. Use instead #SmoothPositionData with the parameters #MbSmoothPositionDataParams. \~ \param[in] solid - \ru Исходное тело. \en The initial solid. \~ \param[in] edges - \ru Множество выбранных ребер для скругления/фаски и функций изменения радиуса для скругления/фаски. \en The array of specified edges for fillet/chamfer and radius laws for fillet/chamfer. \~ \param[in] params - \ru Параметры операции скругления/фаски. \en Parameters of the fillet/chamfer operation. \~ \param[out] result - \ru Опорные точки размеров операции скругления/фаски. \en Support points of the fillet/chamfer operation sizes. \~ \param[in] edgeParam - \ru Параметр точки на ребре (0 <= edgeParam <= 1). \en The parameter of a point on the edge (0 <= edgeParam <= 1). \~ \param[in] dimensionEdge - \ru Ребро, на котором дать опорные точки. \en The edge on which the support points are to be created. \~ \return \ru Возвращает код результата построения. \en Returns the creation result code. \~ \ingroup Algorithms_3D */ // --- DEPRECATE_DECLARE_REPLACE( SmoothPositionData with MbSmoothPositionDataParams ) MATH_FUNC (MbResultType) SmoothPositionData( const MbSolid & solid, SArray & edges, const SmoothValues & params, RPArray & result, double edgeParam = 0.5, const MbCurveEdge * dimensionEdge = nullptr ); //------------------------------------------------------------------------------ /** \brief \ru Построить опорные точки размеров операции скругления/фаски. \en Create support points of fillet/chamfer operation sizes. \~ \details \ru Построить опорные точки размеров операции скругления/фаски и сложить в контейнер data. \n Первые две точки лежат на краях поверхности скругления/фаски. \en Create support points of fillet/chamfer operation sizes and store them in container 'data'. \n The first two points lie on the fillet/chamfer surface boundary. \~ \param[in] params - \ru Параметры для построения опорных точек размеров операции скругления/фаски. \en Parameters for creating support points of fillet/chamfer operation sizes. \~ \param[out] result - \ru Выходные данные построения опорных точек размеров операции скругления/фаски. \en The output data of creating support points of fillet/chamfer operation sizes. \~ \return \ru Возвращает код результата построения. \en Returns the creation result code. \~ \ingroup Algorithms_3D */ // --- MATH_FUNC( MbResultType ) SmoothPositionData( const MbSmoothPositionDataParams & params, MbSmoothPositionDataResults & result ); //------------------------------------------------------------------------------ /** \brief \ru Построение функции изменения указанной координаты кривой. \en Create a function by one of three coordinates of curve. \~ \details \ru Для указанной координаты кривой построить склярную функцию её изменения, зависящую от параметра кривой. \n \en A function creation for behavior of selected curve coordinate with curve parameter. \n \deprecated \ru Метод устарел. Взамен использовать #CreateFunction с набором параметров #MbFunctionParameters. \en The method is deprecated. Use instead #CreateFunction with the parameters #MbFunctionParameters. \~ \param[in] curve - \ru Кривая. \en The curve. \~ \param[in] place - \ru Локальная система координат, в которой используется кривая. \en The local coordinate system that uses the curve. \~ \param[in] coordinate - \ru Номер (0,1,2) координаты кривой в локальной системе координат для построения функции. \en The number (0,1,2) of the curve coordinate in the local coordinate system for constructing the function. \~ \return \ru Возвращает построенную функцию. \en Returns the created function. \~ \ingroup Algorithms_3D */ // --- //DEPRECATE_DECLARE_REPLACE(CreateFunction with MbFunctionParameters) MATH_FUNC (MbFunction *) CreateFunction( const MbCurve3D & curve, const MbPlacement3D & place, size_t coordinate ); //------------------------------------------------------------------------------ /** \brief \ru Построение скалярной функции изменения Y-координаты кривой. \en Create a scalar function by Y-coordinate of curve. \~ \details \ru Для Y-координаты кривой построить скалярную функцию её изменения, зависящую от X-координаты кривой. \n \en A function creation for behavior of Y-curve coordinate with X-curve parameter. \n \param[in] curve - \ru Кривая. \en The curve. \~ \param[in] params - \ru Параметры скалярной функции. \en The parameters of the scalar function. \~ \return \ru Возвращает построенную функцию. \en Returns the created function. \~ \ingroup Algorithms_3D */ // --- MATH_FUNC (c3d::FunctionSPtr) CreateFunction( const MbCurve & curve, const MbFunctionParameters & params ); //------------------------------------------------------------------------------ /** \brief \ru Вычисление данных фантома для торцев поверхности переменного сечения. \en Calculation of the phantom data for the ends of the mutable section surface. \~ \details \ru Вычисление плоскости сечения, точек направляющих, сторон охватывающего треугольника и вершины на торце поверхности. \n \en Calculating the section plane, guide points, sides of the enclosing triangle, and apex at the ends of the surface. \n \param[in] sectionData - \ru Параметры поверхности переменного сечения. \en The parameters of the mutable section surface. \~ \param[out] sctionPhantom - \ru Данные охватывающих треугольников на торцах поверхности переменного сечения. \en The data of the enclosing triangles at the ends of the mutable section surface. \~ \return \ru Возвращает код результата построения. \en Returns the creation result code. \~ \ingroup Algorithms_3D */ // --- MATH_FUNC (MbResultType) SectionPhantom( const MbSectionData & sectionData, MbSectionPhantom & sctionPhantom ); //------------------------------------------------------------------------------ /** \brief \ru Вычисление данных фантома для торцев поверхности переменного сечения. \en Calculation of the phantom data for the ends of the mutable section surface. \~ \details \ru Вычисление плоскости сечения, точек направляющих, сторон охватывающего треугольника и вершины на торце поверхности. \n \en Calculating the section plane, guide points, sides of the enclosing triangle, and apex at the ends of the surface. \n \param[in] sectionData - \ru Параметры поверхности переменного сечения. \en The parameters of the mutable section surface. \~ \param[out] begPlace - \ru XY плоскость локальной системы координат в начале поверхности. \en The XY plane of the local coordinate system is the plane at the beginning of the surface. \~ \param[out] begGuideP1 - \ru Точка первой направляющей в начале поверхности. \en The point of the first guide at the beginning of the surface. \~ \param[out] begGuideP2 - \ru Точка второй направляющей в начале поверхности. \en The point of the second guide at the beginning of the surface. \~ \param[out] begVector1 - \ru Вектор направления от первой направляющей (сторона охватывающего треугольника) в начале поверхности. \en The direction vector from the first guide (the side of the enclosing triangle) at the beginning of the surface. \~ \param[out] begVector2 - \ru Вектор направления от второй направляющей (сторона охватывающего треугольника) в начале поверхности. \en The direction vector from the second guide (the side of the enclosing triangle) at the beginning of the surface. \~ \param[out] begApex - \ru Точка вершинной кривой в начале поверхности (может быть в бесконечности). \en The point of the apex curve at the beginning of the surface (maybe in infinity). \~ \param[out] endPlace - \ru XY плоскость локальной системы координат в конце поверхности. \en The XY plane of the local coordinate system is the plane at the end of the surface. \~ \param[out] endGuideP1 - \ru Точка первой направляющей в конце поверхности. \en The point of the first guide at the end of the surface. \~ \param[out] endGuideP2 - \ru Точка второй направляющей в конце поверхности. \en The point of the second guide at the end of the surface. \~ \param[out] endVector1 - \ru Вектор направления от первой направляющей (сторона охватывающего треугольника) в конце поверхности. \en The direction vector from the first guide (the side of the enclosing triangle) at the end of the surface. \~ \param[out] endVector2 - \ru Вектор направления от второй направляющей (сторона охватывающего треугольника) в конце поверхности. \en The direction vector from the second guide (the side of the enclosing triangle) at the end of the surface. \~ \param[out] endApex - \ru Точка вершинной кривой в конце поверхности (может быть в бесконечности). \en The point of the apex curve at the end of the surface (maybe in infinity). \~ \return \ru Возвращает код результата построения. \en Returns the creation result code. \~ \ingroup Algorithms_3D */ // --- DEPRECATE_DECLARE_REPLACE(SectionPhantom with MbSectionPhantom) MATH_FUNC (MbResultType) SectionPhantom( const MbSectionData & sectionData, MbPlacement3D & begPlace, MbCartPoint3D & begGuideP1, MbCartPoint3D & begGuideP2, MbVector3D & begVector1, MbVector3D & begVector2, MbCartPoint3D & begApex, MbPlacement3D & endPlace, MbCartPoint3D & endGuideP1, MbCartPoint3D & endGuideP2, MbVector3D & endVector1, MbVector3D & endVector2, MbCartPoint3D & endApex ); #endif // __ACTION_PHANTOM_H