Files
Extern/C3d/Include/op_wireframe_parameter.h
T
SaraP 525666c31c Extern :
- C3d aggiornamento delle librerie ( 117968).
2023-11-30 14:51:23 +01:00

301 lines
17 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
////////////////////////////////////////////////////////////////////////////////
/**
\file
\brief \ru Параметры операций над каркасом.
\en Parameters of operations on the wire frame. \~
*/
////////////////////////////////////////////////////////////////////////////////
#ifndef __OP_WIREFRAME_PARAMETERS_H
#define __OP_WIREFRAME_PARAMETERS_H
#include <wire_frame.h>
#include <templ_dptr.h>
#include <wireframe_point.h>
class MbTrimmedWireFrameInfo;
//------------------------------------------------------------------------------
/** \brief \ru Параметры скругления каркаса.
\en Parameters of wire frame fillets. \~
\details \ru Параметры скругления каркаса: \n
type - тип скругления( обычное или на поверхности ). \n
radiuses - радиусы скругления, i-й радиус соответствует стыку i-го и i+1-го ребра. \n
\en Parameters of wire frame fillets: \n
'type' is a fillet type( ordinary or on a surface ). \n
'radiuses' are the fillet radii, the i-th radius corresponds to the joint of the i-th and the i+1-th edges. \n \~
\warning \ru В разработке.
\en Under development. \~
\ingroup WireFrame_Parameters
*/ // ---
class MATH_CLASS MbWireFrameFilletsParams : public MbPrecision {
private:
MbeConnectingType _type; ///< \ru Тип выполняемых скруглений. \en Fillet type( ordinary or on a surface ).
c3d::DoubleVector _radiuses; ///< \ru Множество радиусов скругления. \en An array of fillet radii.
c3d::SNameMakerSPtr _snMaker; ///< \ru Именователь с версией операции. \en Names maker with operation version.
public:
/** \brief \ru Конструктор по параметрам.
\en Constructor by parameters.\~
\details \ru Конструктор по параметрам.
\en Constructor by parameters.\~
\param[in] type - \ru Тип выполняемых скруглений. \en Fillet type.\~
\param[in] radiuses - \ru Множество радиусов скругления. \en An array of fillet radii. \~
\param[in] nameMaker - \ru Именователь с версией операции. \en Names maker with operation version.\~
*/
MbWireFrameFilletsParams( MbeConnectingType type, const c3d::DoubleVector & radiuses, const MbSNameMaker & nameMaker );
/// \ru Конструктор для чтения. \en Constructor for reading.
MbWireFrameFilletsParams( TapeInit tapeInit );
/// \ru Деструктор. \ en Destructor.
~MbWireFrameFilletsParams() {}
public:
/// \ru Получить множество радиусов скругления. \en Get an array of fillet radii.
const c3d::DoubleVector & GetRadii() const { return _radiuses; }
/// \ru Получить тип выполняемых скруглений. \en Get the type of fillets.
MbeConnectingType GetConnectingType() const { return _type; }
/// \ru Получить именователь. \en Get names maker.
const MbSNameMaker & GetNameMaker() const { return *_snMaker; }
OBVIOUS_PRIVATE_COPY( MbWireFrameFilletsParams )
};
//-------------------------------------------------------------------------------
/** \brief \ru Информация для преобразования каркаса в Nurbs.
\en Information for transformation of a wire frame to NURBS. \~
\details \ru Информация для преобразования каркаса в Nurbs. \n
\en Information for transformation of a wire frame to NURBS. \n \~
\warning \ru В разработке.
\en Under development. \~
\ingroup WireFrame_Parameters
*/
// ---
class MATH_CLASS MbNurbsWireFrameInfo {
private:
MbWireFramePoint _pbeg; ///< \ru Начало участка каркаса. \en Wire frame piece start.
MbWireFramePoint _pend; ///< \ru Конец участка каркаса. \en Wire frame piece end.
bool _sense; ///< \ru Направление сплайн-кривой. \en Direction of spline-curve.
bool _matchParams; ///< \ru Сохранять ли при преобразовании однозначное соответствие параметрических областей. \en Whether to save correspondence of parametric regions while transforming or not.
bool _extendRange; ///< \ru Строится ли преобразование на продолжении для незамкнутой подложки. \en Whether transformation is constructed on the extension for a non-closed substrate.
VERSION _version; ///< \ru Версия исполнения. \en The version of execution.
private:
MbNurbsWireFrameInfo();
public:
/// \ru Конструктор. \en Constructor.
MbNurbsWireFrameInfo( const MbWireFramePoint & p1, const MbWireFramePoint & p2, bool sense, bool match, bool ext, VERSION version )
: _pbeg ( p1 )
, _pend ( p2 )
, _sense ( sense )
, _matchParams( match )
, _extendRange( ext )
, _version ( version )
{}
/// \ru Конструктор. \en Constructor.
MbNurbsWireFrameInfo( const MbNurbsWireFrameInfo & other, const MbWireFramePoint & p1, const MbWireFramePoint & p2, bool sense )
: _pbeg ( p1 )
, _pend ( p2 )
, _sense ( sense )
, _matchParams( other._matchParams )
, _extendRange( other._extendRange )
, _version ( other._version )
{}
/// \ru Конструктор копирования. \en Copy constructor.
MbNurbsWireFrameInfo( const MbNurbsWireFrameInfo & other )
: _pbeg ( other._pbeg )
, _pend ( other._pend )
, _sense ( other._sense )
, _matchParams( other._matchParams )
, _extendRange( other._extendRange )
, _version ( other._version )
{}
/// \ru Конструктор для чтения. \en Constructor for reading.
MbNurbsWireFrameInfo( TapeInit tapeInit );
/// \ru Функция инициализации. \en The initialization function.
void Init( const MbWireFramePoint & p1, const MbWireFramePoint & p2, bool sense )
{
_pbeg = p1;
_pend = p2;
_sense = sense;
}
/// \ru Функция инициализации. \en The initialization function.
void Init( const MbWireFramePoint & p1, const MbWireFramePoint & p2, bool sense, bool match, bool ext, VERSION version )
{
_matchParams = match;
_extendRange = ext;
_version = version;
Init( p1, p2, sense );
}
public:
/// \ru Получить начало участка кривой. \en Get the start curve region.
const MbWireFramePoint & GetPBeg() const { return _pbeg; }
/// \ru Получить конец участка кривой. \en Get the end curve region.
const MbWireFramePoint & GetPEnd() const { return _pend; }
/// \ru Получить направление сплайн-кривой. \en Get the direction of spline-curve.
bool GetSense() const { return _sense; }
/// \ru Сохранять ли при преобразовании однозначное соответствие параметрических областей. \en Whether to save correspondence of parametric regions by transformation or not.
bool MatchParams() const { return _matchParams; }
/// \ru Строится ли преобразование на продолжении для незамкнутой подложки. \en Whether transformation is constructed on the extension for a non-closed substrate or not.
bool ExtendRange() const { return _extendRange; }
/// \ru Получить версию исполнения. \en Get the version of execution.
VERSION GetMathVersion() const { return _version; }
/// \ru Являются ли объекты равными? \en Determine whether an object is equal?
bool IsSame( const MbNurbsWireFrameInfo & other, double accuracy ) const;
/// \ru Оператор присваивания. \en An assignment operator.
const MbNurbsWireFrameInfo & operator = ( const MbNurbsWireFrameInfo & other ) {
_pbeg = other._pbeg;
_pend = other._pend;
_sense = other._sense;
_matchParams = other._matchParams;
_extendRange = other._extendRange;
_version = other._version;
return *this;
}
KNOWN_OBJECTS_RW_REF_OPERATORS( MbNurbsWireFrameInfo ) // \ru Для работы со ссылками и объектами класса. \en For working with references and objects of the class. \~
};
//-------------------------------------------------------------------------------
/** \brief \ru Параметры преобразования каркаса в Nurbs.
\en Parameters for transformation of a wire frame to NURBS. \~
\details \ru Параметры преобразования каркаса в Nurbs. \n
\en Parameters for transformation of a wire frame to NURBS. \n \~
\ingroup WireFrame_Parameters
*/
// ---
class MATH_CLASS MbNurbsWireFrameParams : public MbPrecision {
private:
MbNurbsWireFrameInfo _frameIntoNurbsInfo; ///< \ru Информация для преобразования каркаса в Nurbs. \en Information for transformation of a wire frame to NURBS. \~
c3d::SNameMakerSPtr _snMaker; ///< \ru Именователь с версией операции. \en Names maker with operation version.
private:
MbNurbsWireFrameParams();
public:
/// \ru Конструктор. \en Constructor.
MbNurbsWireFrameParams( const MbNurbsWireFrameInfo & info,
const MbSNameMaker & nameMaker )
: _frameIntoNurbsInfo( info )
, _snMaker( &nameMaker.Duplicate() )
{}
/// \ru Конструктор. \en Constructor.
explicit MbNurbsWireFrameParams( const MbWireFramePoint & p1,
const MbWireFramePoint & p2,
bool sense,
bool match,
bool ext,
const MbSNameMaker & nameMaker,
VERSION ver );
/// \ru Конструктор. \en Constructor.
explicit MbNurbsWireFrameParams( const MbNurbsWireFrameParams & other,
const MbWireFramePoint & p1,
const MbWireFramePoint & p2,
bool sense,
const MbSNameMaker & nameMaker );
/// \ru Конструктор копирования. \en Copy constructor.
MbNurbsWireFrameParams( const MbNurbsWireFrameParams & other );
/// \ru Конструктор для чтения. \en Constructor for reading.
MbNurbsWireFrameParams( TapeInit tapeInit );
/// \ru Функция инициализации. \en The initialization function.
void Init( const MbWireFramePoint & p1, const MbWireFramePoint & p2, bool sense )
{
_frameIntoNurbsInfo.Init( p1, p2, sense );
}
/// \ru Функция инициализации. \en The initialization function.
void Init( const MbWireFramePoint & p1, const MbWireFramePoint & p2, bool sense, bool match, bool ext ) {
_frameIntoNurbsInfo.Init( p1, p2, sense, match, ext, Math::DefaultMathVersion() );
}
public:
/// \ru Получить параметр начала участка кривой. \en Get the parameter of the start curve region.
const MbWireFramePoint & GetPBeg() const { return _frameIntoNurbsInfo.GetPBeg(); }
/// \ru Получить параметр конца участка кривой. \en Get the parameter of the end curve region.
const MbWireFramePoint & GetPEnd() const { return _frameIntoNurbsInfo.GetPEnd(); }
/// \ru Получить направление сплайн-кривой. \en Get the direction of spline-curve.
bool GetSense() const { return _frameIntoNurbsInfo.GetSense(); }
/// \ru Сохранять ли при преобразовании однозначное соответствие параметрических областей. \en Whether to save correspondence of parametric regions by transformation or not.
bool MatchParams() const { return _frameIntoNurbsInfo.MatchParams(); }
/// \ru Строится ли преобразование на продолжении для незамкнутой подложки. \en Whether transformation is constructed on the extension for a non-closed substrate or not.
bool ExtendRange() const { return _frameIntoNurbsInfo.ExtendRange(); }
/// \ru Получить версию исполнения. \en Get the version of execution.
VERSION GetMathVersion() const { return _frameIntoNurbsInfo.GetMathVersion(); }
/// \ru Получить информацию для преобразования каркаса в Nurbs. \en Get information for transformation of a wire frame to NURBS.
const MbNurbsWireFrameInfo & GetNurbsWireFrameInfo() const { return _frameIntoNurbsInfo; }
/// \ru Получить именователь. \en Get names maker.
const MbSNameMaker & GetNameMaker() const { return *_snMaker; }
/// \ru Оператор присваивания. \en An assignment operator.
const MbNurbsWireFrameParams & operator = ( const MbNurbsWireFrameParams & other ) {
MbPrecision::operator=( other );
_frameIntoNurbsInfo = other._frameIntoNurbsInfo;
return *this;
}
};
//-------------------------------------------------------------------------------
/** \brief \ru Параметры для усечения каркаса.
\en Parameters for trimmed of a wire frame. \~
\details \ru Параметры для усечения каркаса. \n
\en Parameters for trimmed of a wire frame. \n \~
\ingroup WireFrame_Parameters
*/
// ---
class MATH_CLASS MbTrimmedWireFrameParams : public MbPrecision {
private:
DPtr<MbTrimmedWireFrameInfo> _trimmedWireFrameInfo; ///< \ru Информация для усечения каркаса. \en Information for trimmed wire frame. \~
c3d::SNameMakerSPtr _snMaker; ///< \ru Именователь с версией операции. \en Names maker with operation version.
private:
MbTrimmedWireFrameParams();
public:
/// \ru Конструктор. \en Constructor.
explicit MbTrimmedWireFrameParams( const MbWireFramePoint & p1,
const MbWireFramePoint & p2,
bool sense,
bool saveParLenAndLaw,
const MbSNameMaker & nameMaker );
/// \ru Конструктор копирования. \en Copy constructor.
MbTrimmedWireFrameParams( const MbTrimmedWireFrameParams & other );
/// \ru Деструктор \en Destructor
virtual ~MbTrimmedWireFrameParams();
/// \ru Функция инициализации. \en The initialization function.
void Init( const MbWireFramePoint & p1,
const MbWireFramePoint & p2,
bool sense,
bool saveParLenAndLaw );
/// \ru Получить параметр начала участка кривой. \en Get the parameter of the start curve region.
const MbWireFramePoint & GetPBeg() const;
/// \ru Получить параметр конца участка кривой. \en Get the parameter of the end curve region.
const MbWireFramePoint & GetPEnd() const;
/// \ru Получить направление усеченной кривой относительно исходной. \en Get the direction of a trimmed curve in relation to an initial curve.
bool GetSense() const;
/// \ru Получить информацию о сохранении параметрической длины и закона. \en Get information about saving parametric length and law.
bool GetSaveLengthAndLow() const;
/// \ru Получить именователь. \en Get names maker.
const MbSNameMaker & GetNameMaker() const { return *_snMaker; }
/// \ru Оператор присваивания. \en An assignment operator.
const MbTrimmedWireFrameParams & operator = ( const MbTrimmedWireFrameParams & other );
};
#endif // __OP_WIREFRAME_PARAMETERS_H