//////////////////////////////////////////////////////////////////////////////// /** \file \brief \ru Строитель фаски или скругления ребeр тела. \en Constructor of chamfer or fillet of solid's edges. */ //////////////////////////////////////////////////////////////////////////////// #ifndef __CR_SMOOTH_SOLID_H #define __CR_SMOOTH_SOLID_H #include #include //------------------------------------------------------------------------------ /** \brief \ru Строитель фаски или скругления ребeр тела. \en Constructor of chamfer or fillet of solid's edges. \~ \details \ru Строитель фаски или скругления ребeр тела содержит идентификаторы обрабатываемых рёбер и параметры для выполнения операции. \n \en Constructor of solid's edges chamfer or fillet contains identifiers of edges being processed and parameters for performing operation. \n \~ \ingroup Model_Creators */ // --- class MATH_CLASS MbSmoothSolid : public MbCreator { protected : SArray indexes; ///< \ru Номера ребер и номера смежных (сопрягаемых) граней. \en Indices of edges and indices of adjacent (conjugated) faces. SmoothValues parameters; ///< \ru Параметры скругления или фаски. \en Parameters of fillet or chamfer. double buildSag; ///< \ru Шаг построения. \en Build step. private: MbSmoothSolid( const MbSmoothSolid & bres ); // \ru Не реализовано. \en No realize. protected : MbSmoothSolid( const MbSNameMaker & n, SArray & _indexes, const SmoothValues & params ); // \ru Конструктор копирования. \en Copy-constructor. MbSmoothSolid( const MbSmoothSolid & bres, MbRegDuplicate * iReg ); public : virtual ~MbSmoothSolid(); // \ru Общие функции математического объекта \en Common functions of the mathematical object //virtual MbeCreatorType IsA() const = 0; // \ru Тип элемента \en A type of element MbeCreatorType Type() const override; // \ru Тип элемента \en A type of element //virtual MbCreator & Duplicate( MbRegDuplicate *iReg = nullptr ) const = 0; // \ru Сделать копию \en Create a copy void Transform( const MbMatrix3D &matr, MbRegTransform * = nullptr ) override; // \ru Преобразовать элемент согласно матрице \en Transform element according to the matrix void Move( const MbVector3D &to, MbRegTransform * = nullptr ) override; // \ru Сдвиг \en Translation void Rotate( const MbAxis3D &axis, double angle, MbRegTransform * = nullptr ) override; // \ru Повернуть вокруг оси \en Rotate around an axis //virtual void GetProperties( MbProperties & ) = 0; // \ru Выдать свойства объекта \en Get properties of the object //virtual void SetProperties( const MbProperties & ) = 0; // \ru Записать свойства объекта \en Set properties of the object //virtual MbePrompt GetPropertyName() = 0; // \ru Выдать заголовок свойства объекта \en Get a name of object property //virtual bool IsSame( const MbCreator & other, double accuracy ) const = 0; // \ru Являются ли объекты равными? \en Determine whether an object is equal? //virtual bool SetEqual( const MbCreator & ) = 0; // \ru Сделать равным \en Make equal bool IsSimilar ( const MbCreator & ) const override; // \ru Являются ли объекты подобными \en Whether the objects are similar // \ru Общие функции твердого тела \en Common functions of solid //virtual bool CreateShell( MbFaceShell *&shell, MbeCopyMode sameShell, // RPArray * items = nullptr ) = 0; // \ru Построение \en Construction /// \ru Дать параметры. \en Get the parameters. void GetParameters( SmoothValues & params ) const { params = parameters; } /// \ru Установить параметры. \en Set the parameters. void SetParameters( const SmoothValues & params ) { parameters = params; } private : virtual void ReadDistances ( reader &in ) = 0; // \ru Объявление оператора присваивания без реализации, чтобы не было присваивания по умолчанию. \en The declaration of the assignment operator without implementation to prevent an assignment by default. void operator = ( const MbSmoothSolid & ); DECLARE_PERSISTENT_CLASS( MbSmoothSolid ) }; // MbSmoothSolid IMPL_PERSISTENT_OPS( MbSmoothSolid ) #endif // __CR_SMOOTH_SOLID_H