181 lines
9.9 KiB
C++
181 lines
9.9 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
\file
|
|
\brief \ru Параметры операций над кривыми.
|
|
\en Parameters of operations on the curves. \~
|
|
|
|
*/
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __OP_CURVE_PARAMETERS_H
|
|
#define __OP_CURVE_PARAMETERS_H
|
|
|
|
#include <math_version.h>
|
|
#include <math_define.h>
|
|
#include <templ_sptr.h>
|
|
#include <mb_vector3d.h>
|
|
#include <mb_axis3d.h>
|
|
#include <curve3d.h>
|
|
#include <surface.h>
|
|
#include <topology.h>
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Параметры кривой пересечения поверхностей.
|
|
\en Parameters of an surface intersection curve. \~
|
|
\details \ru Параметры эквидистантной кривой в пространстве по трехмерной кривой и вектору направления. \n
|
|
\en Parameters of an offset curve in space from a three-dimensional curve and a direction vector. \n \~
|
|
\ingroup Build_Parameters
|
|
*/ // ---
|
|
struct MATH_CLASS MbIntCurveParams {
|
|
public:
|
|
bool mergeCurves; ///< \ru Объединять кривые, разрезанные швом. \en Merge curves cut by a surface seam.
|
|
bool cutCurves; ///< \ru Разрезать кривые в точках пересечения. \en Cut curves at intersection points.
|
|
protected:
|
|
const MbSNameMaker & snMaker; ///< \ru Именователь с версией операции. \en Names maker with operation version.
|
|
public:
|
|
/** \brief \ru Конструктор.
|
|
\en Constructor. \~
|
|
\details \ru Конструктор по параметрам.
|
|
\en Constructor by parameters. \~
|
|
\param[in] _mergeCurves - \ru Объединять кривые, разрезанные швом.
|
|
\en Merge curves cut by a surface seam. \~
|
|
\param[in] _cutCurves - \ru Разрезать кривые в точках пересечения.
|
|
\en Cut curves at intersection points. \~
|
|
\param[in] _snMaker - \ru Именователь с версией операции.
|
|
\en Names maker with operation version. \~
|
|
*/
|
|
MbIntCurveParams( const MbSNameMaker & _snMaker )
|
|
: mergeCurves( true )
|
|
, cutCurves ( false )
|
|
, snMaker ( _snMaker )
|
|
{
|
|
if ( _snMaker.GetMathVersion() > MATH_19_VERSION ) // KOMPAS-39273 + KOMPAS-40408
|
|
cutCurves = true;
|
|
}
|
|
/** \brief \ru Конструктор.
|
|
\en Constructor. \~
|
|
\details \ru Конструктор по параметрам.
|
|
\en Constructor by parameters. \~
|
|
\param[in] _cutCurves - \ru Разрезать кривые в точках пересечения.
|
|
\en Cut curves at intersection points. \~
|
|
\param[in] _snMaker - \ru Именователь с версией операции.
|
|
\en Names maker with operation version. \~
|
|
*/
|
|
MbIntCurveParams( bool _cutCurves, const MbSNameMaker & _snMaker )
|
|
: mergeCurves( true )
|
|
, cutCurves ( _cutCurves )
|
|
, snMaker ( _snMaker )
|
|
{}
|
|
/** \brief \ru Конструктор.
|
|
\en Constructor. \~
|
|
\details \ru Конструктор по параметрам.
|
|
\en Constructor by parameters. \~
|
|
\param[in] _mergeCurves - \ru Объединять кривые, разрезанные швом.
|
|
\en Merge curves cut by a surface seam. \~
|
|
\param[in] _cutCurves - \ru Разрезать кривые в точках пересечения.
|
|
\en Cut curves at intersection points. \~
|
|
\param[in] _snMaker - \ru Именователь с версией операции.
|
|
\en Names maker with operation version. \~
|
|
*/
|
|
MbIntCurveParams( bool _mergeCurves, bool _cutCurves, const MbSNameMaker & _snMaker )
|
|
: mergeCurves( _mergeCurves )
|
|
, cutCurves ( _cutCurves )
|
|
, snMaker ( _snMaker )
|
|
{}
|
|
public:
|
|
/// \ru Получить ссылку на именователь. \en Get names maker reference.
|
|
const MbSNameMaker & GetNameMaker() const { return snMaker; }
|
|
|
|
OBVIOUS_PRIVATE_COPY( MbIntCurveParams )
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Параметры эквидистантной кривой в пространстве.
|
|
\en Parameters of an offset curve in space. \~
|
|
\details \ru Параметры эквидистантной кривой в пространстве по трехмерной кривой и вектору направления. \n
|
|
\en Parameters of an offset curve in space from a three-dimensional curve and a direction vector. \n \~
|
|
\ingroup Build_Parameters
|
|
*/ // ---
|
|
struct MATH_CLASS MbSpatialOffsetCurveParams {
|
|
public:
|
|
MbVector3D offsetVect; ///< \ru Вектор, задающий смещение в точке кривой. \en The displacement vector at a point of the curve.
|
|
bool useFillet; ///< \ru Если true, то разрывы заполнять скруглением, иначе продолженными кривыми. \en If 'true', the gaps are to be filled with fillet, otherwise with the extended curves.
|
|
bool keepRadius; ///< \ru Если true, то в существующих скруглениях сохранять радиусы. \en If 'true', the existent fillet radii are to be kept.
|
|
bool bluntAngle; ///< \ru Если true, то в притуплять острые углы. \en If 'true', sharp corners are to be blunt.
|
|
bool fromBeg; ///< \ru Вектор смещения привязан к началу (если true). \en The translation vector is associated with the beginning (if true).
|
|
protected:
|
|
bool useSurfaceNormal; ///< \ru Эквидистанта согласована с нормалью к поверхности. \en Offset point is moved according to surface normal.
|
|
c3d::ConstSurfaceSPtr surface; ///< \ru Поверхность кривой или подобная ей. \en Curve's surface or similar to such surface.
|
|
const MbSNameMaker & snMaker; ///< \ru Именователь кривых каркаса. \en An object defining the frame curves names.
|
|
|
|
public:
|
|
/// \ru Конструктор по параметрам. \en Constructor by parameters.
|
|
MbSpatialOffsetCurveParams( const MbVector3D & v, const MbSNameMaker & nm )
|
|
: offsetVect ( v )
|
|
, useFillet ( false )
|
|
, keepRadius ( false )
|
|
, bluntAngle ( false )
|
|
, fromBeg ( true )
|
|
, useSurfaceNormal( false )
|
|
, surface ( c3d_null )
|
|
, snMaker ( nm )
|
|
{}
|
|
public:
|
|
/// \ru Установка режима по поверхности, переносится ли эквидистантная точка согласованно с нормалью к поверхности. \en Setting the mode whether offset point is moved according to surface normal or not.
|
|
void SetBySurfaceNormal( bool set, c3d::ConstSurfaceSPtr * s = c3d_null )
|
|
{
|
|
if ( set ) {
|
|
useSurfaceNormal = set;
|
|
if ( s != c3d_null )
|
|
surface = *s;
|
|
}
|
|
else {
|
|
useSurfaceNormal = false;
|
|
surface = c3d_null;
|
|
}
|
|
}
|
|
/// \ru Получить поверхность. \en Get surface.
|
|
bool BySurfaceNormal() const { return useSurfaceNormal; }
|
|
/// \ru Получить поверхность. \en Get surface.
|
|
const c3d::ConstSurfaceSPtr & GetSurface() const { return surface; }
|
|
/// \ru Получить ссылку на именователь. \en Get names maker reference.
|
|
const MbSNameMaker & GetNameMaker() const { return snMaker; }
|
|
|
|
OBVIOUS_PRIVATE_COPY( MbSpatialOffsetCurveParams )
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Параметры эквидистантной кривой на поверхности.
|
|
\en Parameters of an offset curve on a surface. \~
|
|
\details \ru Параметры эквидистантной кривой на поверхности по поверхностной кривой и значению смещения. \n
|
|
\en Parameters of an offset curve on surface from a curve on the surface and a shift value. \n \~
|
|
\ingroup Build_Parameters
|
|
*/ // ---
|
|
struct MATH_CLASS MbSurfaceOffsetCurveParams {
|
|
public:
|
|
c3d::ConstFaceSPtr face; ///< \ru Грань, на которой строится эквидистанта. \en The face on which to build the offset curve.
|
|
MbAxis3D dirAxis; ///< \ru Направление смещения с точкой приложения. \en The offset direction with a reference point.
|
|
double dist; ///< \ru Величина смещения. \en The offset distance.
|
|
protected:
|
|
const MbSNameMaker & snMaker; ///< \ru Именователь кривых каркаса. \en An object defining the frame curves names.
|
|
|
|
public:
|
|
/// \ru Конструктор по параметрам. \en Constructor by parameters.
|
|
MbSurfaceOffsetCurveParams( const MbFace & f, const MbAxis3D & a, double d, const MbSNameMaker & nm )
|
|
: face ( &f )
|
|
, dirAxis( a )
|
|
, dist ( d )
|
|
, snMaker( nm )
|
|
{}
|
|
public:
|
|
/// \ru Получить ссылку на именователь. \en Get names maker reference.
|
|
const MbSNameMaker & GetNameMaker() const { return snMaker; }
|
|
|
|
OBVIOUS_PRIVATE_COPY( MbSurfaceOffsetCurveParams )
|
|
};
|
|
|
|
#endif // __OP_CURVE_PARAMETERS_H
|