//////////////////////////////////////////////////////////////////////////////// /** \file \brief \ru Строитель размноженного набора граней. \en Constructor of duplication face sets . \~ */ //////////////////////////////////////////////////////////////////////////////// #ifndef CR_DUPLICATION_SOLID_H #define CR_DUPLICATION_SOLID_H #include #include class MATH_CLASS MbFaceShell; class MbRegTransform; class MbRegDuplicate; //------------------------------------------------------------------------------ /** \brief \ru Строитель размноженного набора граней. \en Constructor of duplication face sets . \~ \details \ru Строитель выполняет размножение тела согласно параметрам и объединяет копии в одно тело\n \en Creator makes duplication of face sets according to parameters and unite its into a single face set\~ \ingroup Model_Creators */ // --- class MATH_CLASS MbDuplicationSolid : public MbCreator { protected: DuplicationValues * parameters; ///< \ru Параметры размножения. \en Parameters of duplication. public: /// \ru Конструктор по параметрам. \en Constructor by parameters. MbDuplicationSolid( const DuplicationValues &, const MbSNameMaker & ); private: MbDuplicationSolid( const MbDuplicationSolid &, MbRegDuplicate * ); // \ru Объявление конструктора копирования без реализации, чтобы не было копирования по умолчанию. \en Declaration without implementation of the copy-constructor to prevent copying by default. MbDuplicationSolid( const MbDuplicationSolid & ); public: virtual~MbDuplicationSolid(); /** \ru \name Общие функции строителя оболочки. \en \name Common functions of the shell creator. \{ */ /// \ru Получить регистрационный тип (для копирования, дублирования). \en Get the registration type (for copying, duplication). MbeCreatorType IsA() const override; MbCreator & Duplicate( MbRegDuplicate * = nullptr ) const override; // \ru сделать копию \en create a copy void Transform( const MbMatrix3D &, MbRegTransform * = nullptr ) override; // \ru Преобразовать элемент согласно матрице \en Transform element according to the matrix void Move( const MbVector3D &, MbRegTransform * = nullptr ) override; // \ru Сдвиг \en Translation void Rotate( const MbAxis3D &, double angle, MbRegTransform * = nullptr ) override; // \ru Повернуть вокруг оси \en Rotate about an axis void GetProperties( MbProperties & ) override; // \ru выдать свойства объекта \en get properties of the object void SetProperties( const MbProperties & ) override; // \ru записать свойства объекта \en set properties of the object MbePrompt GetPropertyName() override; // \ru выдать заголовок свойства объекта \en get a name of object property bool IsSame( const MbCreator &, double accuracy ) const override; // \ru Являются ли объекты равными? \en Determine whether an object is equal? bool IsSimilar( const MbCreator & ) const override; // \ru являются ли объекты подобными \en whether the objects are similar bool SetEqual ( const MbCreator & ) override; // \ru сделать равным \en make equal bool CreateShell( MbFaceShell *&, MbeCopyMode sameShell, RPArray * items = nullptr ) override; private : // \ru Объявление оператора присваивания без реализации, чтобы не было присваивания по умолчанию. \en The declaration of the assignment operator without implementation to prevent an assignment by default. void operator = ( const MbDuplicationSolid & ); DECLARE_PERSISTENT_CLASS_NEW_DEL( MbDuplicationSolid ) }; // MbDuplicationSolid IMPL_PERSISTENT_OPS( MbDuplicationSolid ) //------------------------------------------------------------------------------ /** \brief \ru Создать оболочку размножения исходной оболочки. \en Create a shell of duplication of original shell. \~ \details \ru По данной оболочке и параметрам размножения построить оболочку как результат объединения копий.\n Одновременно с построением оболочки функция создаёт её строитель. \n \en For a given shell and duplication parameters construct a shell as a result of a union of copies. \n The function simultaneously constructs the shell and creates its constructor.\~ \param[in] solid - \ru Исходная оболочка. \en Original face set. \~ \param[in] params - \ru Параметры размножения. \en Parameters of duplication. \~ \param[out] res - \ru Код результата операции. \en Operation result code. \~ \param[out] resShell - \ru Построенный набор граней. \en Constructed set of faces. \~ \result \ru Возвращает строитель, если операция была выполнена успешно. \en Returns the constructor if the operation has been successfully performed. \~ \ingroup Solid_Modeling */ MATH_FUNC (MbCreator *) CreateDuplication( const MbFaceShell & solid, const MbDuplicationSolidParams & params, MbResultType & res, c3d::ShellSPtr & resShell ); #endif // CR_DUPLICATION_SOLID_H