//////////////////////////////////////////////////////////////////////////////// /** \file \brief \ru Строитель оболочки из листового материала штамповкой телом-инструментом. \en Constructor of a shell from the sheet material with stamping by a tool solid. */ //////////////////////////////////////////////////////////////////////////////// #ifndef __CR_STAMP_USER_SOLID_H #define __CR_STAMP_USER_SOLID_H #include #include //------------------------------------------------------------------------------ /** \brief \ru Строитель оболочки из листового материала штамповкой телом-инструментом. \en Constructor of a shell from the sheet material with stamping by tool solid. \~ \details \ru Строитель оболочки из листового материала закрытой или открытой штамповкой телом-инструментом. Тело-инструмент может являться пуансоном или матрицей.\n Строятся штамповки двух типов: \n закрытая - не указаны вскрываемые грани тела-инструмента, \n открытая - когда лист пробит штамповкой насквозь, указаны вскрываемые грани. \n \en Constructor of a shell from the sheet material by open or closed stamping by tool solid. The tool solid may be a punch or a die. \n Stamping of two types are constructed: \n closed - pierce faces of tool solid are not specified, \n open - when a sheet is punched through by stamping, pierce faces of tool solid are specified. \n \~ \ingroup Model_Creators */ // --- class MATH_CLASS MbUserStampSolid : public MbCreator { private: MbItemIndex faceIndex; ///< \ru Индекс грани, на которой строится штамповка. \en Index of the face the stamping is constructed on. MbItemIndex pairFaceIndex; ///< \ru Индекс грани парной к грани штамповки. \en Index of the face which is pair to the stamp face. SArray pierceIndices; ///< \ru Индексы граней для вырубки. \en Face indicies for opening. RPArray creators; ///< \ru Журнал построения оболочки тела-инструмента. \en History tree of the shell of the tool solid. size_t countOne; ///< \ru Разделитель строителей тел-операндов. \en Separator of operand solids creators. MbToolStampingValues parameters; ///< \ru Параметры штамповки. \en Stamping parameters. double thickness; ///< \ru Толщина листа. \en The thickness of the sheet metal. bool punch; ///< \ru Является тело-инструмент пуансоном или матрицей? \en Is tool body a punch or a die. public : MbUserStampSolid( const RPArray & creatorsTool, const bool sameTool, const MbItemIndex & faceIndex, const MbItemIndex & pairFaceIndex, SArray & pierceIndices, const MbToolStampingValues & params, const double thickness, const bool isPunch, const MbSNameMaker & names ); private: MbUserStampSolid( const MbUserStampSolid &, MbRegDuplicate * iReg ); public: virtual ~MbUserStampSolid(); // \ru Общие функции математического объекта. \en Common functions of the mathematical object. MbeCreatorType IsA() const override; // \ru Тип элемента. \en A type of element. MbCreator & Duplicate( MbRegDuplicate * = nullptr ) const override; // \ru Сделать копию. \en Create a copy. bool IsSame ( const MbCreator & other, double accuracy ) const override; // \ru Являются ли объекты равными? \en Determine whether an object is equal? bool IsSimilar( const MbCreator & item ) const override; // \ru Являются ли объекты подобными? \en Determine whether an object is similar? bool SetEqual ( const MbCreator & ) override; // \ru Сделать равным. \en Make equal. 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 around an axis. void GetProperties ( MbProperties &properties ) override; // \ru Выдать свойства объекта. \en Get properties of the object. void SetProperties ( const MbProperties &properties ) override; // \ru Записать свойства объекта. \en Set properties of the object. MbePrompt GetPropertyName() override; // \ru Выдать заголовок свойства объекта. \en Get a name of object property. // \ru Общие функции твердого тела. \en Common functions of solid. bool CreateShell( MbFaceShell *&shell, MbeCopyMode sameShell, RPArray *items = nullptr ) override; // \ru Построение оболочки штамповки. \en Construction of a stamping shell. // \ru Получить параметры. \en Get the parameters. void GetParameters( MbToolStampingValues & params ) const { params = parameters; } // \ru Установить параметры. \en Set the parameters. void SetParameters( const MbToolStampingValues & params ) { parameters = params; } private: OBVIOUS_PRIVATE_COPY( MbUserStampSolid ) DECLARE_PERSISTENT_CLASS_NEW_DEL( MbUserStampSolid ) }; // MbUserStampSolid IMPL_PERSISTENT_OPS( MbUserStampSolid ) //------------------------------------------------------------------------------ /** \brief \ru Построить оболочку из листового материала штамповкой телом-инструментом. \en Construct a shell form sheet material by tool body stamping. \~ \details \ru На базе исходной оболочки из листового материала построить оболочку методом закрытой или открытой штамповки. \n Одновременно с построением оболочки функция создаёт её строитель.\n \en A shell is to be constructed on the basis of the source shell by the method of closed or open stamping. \n The function simultaneously creates the shell and its constructor.\n \~ \param[in] initialShell - \ru Исходная оболочка. \en The source shell. \~ \param[in] sameShell - \ru Режим копирования исходной оболочки. \en Mode of copying the source shell. \~ \param[in] targetFace - \ru Грань штамповки. \en The face for stamping. \~ \param[in] creatorsTool - \ru Журнал построения инструмента. \en A creator of the tool. \param[in] toolShell - \ru Оболочка тела-инструмента. \en A shell of tool solid. \~ \param[in] sameShellTool - \ru Режим копирования оболочки тела-инструмента. \en Mode of copying the tool shell. \~ \param[in] isPunch - \ru Является тело-инструмент пуансоном или матрицей. \en Is tool body a punch or a die. \~ \param[in] pierceFaces - \ru Вскрываемые для вырубки грани инструмента, \en Pierce faces of tool body. \~ \param[in] params - \ru Параметры штамповки. \en The parameters of stamping. \~ \param[in] nameMaker - \ru Именователь. \en An object for naming the new objects. \~ \param[out] res - \ru - Код результата операции. \en - The operation result code. \~ \param[out] resultShell - \ru Результирующее тело. \en The resultant solid. \~ \result \ru Возвращает строитель оболочки. \en Returns the shell constructor. \~ \deprecated \ru Функция устарела, взамен использовать #CreateUserStamp с набором параметров #MbStampWithToolParams. \en The function is deprecated, instead use #CreateUserStamp with the parameter list #MbStampWithToolParams. \~ \ingroup Model_Creators */ // --- DEPRECATE_DECLARE_REPLACE( CreateUserStamp with 'MbStampWithToolParams' argument ) MATH_FUNC (MbCreator *) CreateUserStamp( MbFaceShell * initialShell, // Исходная оболочка, const MbeCopyMode sameShell, // флаг способа использования исходной оболочки, const MbFace & targetFace, // грань штамповки, const RPArray & creatorsTool, // журнал построения инструмента, MbFaceShell & toolShell, // оболочка тела-инструмента, const MbeCopyMode sameShellTool, // флаг способа использования оболочки инструмента, bool isPunch, // является инструмент пуансоном или матрицей, const RPArray & pierceFaces, // вскрываемые для вырубки грани инструмента, const MbToolStampingValues & params, // параметры штамповки, const MbSNameMaker & nameMaker, // именователь, MbResultType & res, // флаг успешности операции, SPtr & resultShell ); // результирующая оболочка //------------------------------------------------------------------------------ /** \brief \ru Построить оболочку из листового материала штамповкой телом-инструментом. \en Construct a shell form sheet material by tool body stamping. \~ \details \ru На базе исходной оболочки из листового материала построить оболочку методом закрытой или открытой штамповки. \n Одновременно с построением оболочки функция создаёт её строитель.\n \en A shell is to be constructed on the basis of the source shell by the method of closed or open stamping. \n The function simultaneously creates the shell and its constructor.\n \~ \param[in] initialShell - \ru Исходная оболочка. \en The source shell. \~ \param[in] sameShell - \ru Режим копирования исходной оболочки. \en Mode of copying the source shell. \~ \param[in] toolShell - \ru Оболочка тела-инструмента. \en A shell of tool solid. \~ \param[in] sameShellTool - \ru Режим копирования оболочки тела-инструмента. \en Mode of copying the tool shell. \~ \param[in] params - \ru Параметры штамповки. \en The parameters of stamping. \~ \param[out] res - \ru - Код результата операции. \en - The operation result code. \~ \param[out] resultShell - \ru Результирующее тело. \en The resultant solid. \~ \result \ru Возвращает строитель оболочки. \en Returns the shell constructor. \~ \ingroup Model_Creators */ // --- MATH_FUNC( c3d::CreatorSPtr ) CreateUserStamp( c3d::ShellSPtr & initialShell, // Исходная оболочка, const MbeCopyMode sameShell, // флаг способа использования исходной оболочки, MbFaceShell & toolShell, // оболочка тела-инструмента, const MbeCopyMode sameShellTool, // флаг способа использования оболочки инструмента, const c3d::CreatorsSPtrVector & creatorsTool, // журнал построения инструмента, const MbStampWithToolParams & stParams, // параметры штамповки MbResultType & res, // флаг успешности операции, c3d::ShellSPtr & resultShell ); // результирующая оболочка //------------------------------------------------------------------------------ /** \brief \ru Построение результирующей оболочки. \en Construction of result shell. \~ \details \ru На базе исходной оболочки из листового материала построить оболочку методом закрытой или открытой штамповки. \n Одновременно с построением оболочки функция создаёт её строитель.\n \en A shell is to be constructed on the basis of the source shell by the method of closed or open stamping. \n The function simultaneously creates the shell and its constructor.\n \~ \param[in] initialShell - \ru Исходная оболочка. \en The source shell. \~ \param[in] sameShell - \ru Режим копирования исходной оболочки. \en Mode of copying the source shell. \~ \param[in] targetFace - \ru Грань штамповки. \en The face for stamping. \~ \param[in] toolShell - \ru Оболочка тела-инструмента. \en A shell of tool solid. \~ \param[in] sameShellTool - \ru Режим копирования оболочки тела-инструмента. \en Mode of copying the tool shell. \~ \param[in] isPunch - \ru Является тело-инструмент пуансоном или матрицей. \en Is tool body a punch or a die. \~ \param[in] pierceFaces - \ru Вскрываемые для вырубки грани инструмента, \en Pierce faces of tool body. \~ \param[in] params - \ru Параметры штамповки. \en The parameters of stamping. \~ \param[in] nameMaker - \ru Именователь. \en An object for naming the new objects. \~ \result \ru - тело со штамповкой. \en - The solid with stamping. \~ \ingroup Model_Creators */ // --- DEPRECATE_DECLARE_REPLACE( StampWithToolSolid with 'MbStampWithToolPartsParams' argument ) MbFaceShell * MakeUserStampShellForStampParts ( MbFaceShell * initialShell, // Исходная оболочка, const MbeCopyMode sameShell, // флаг способа использования исходной оболочки, const MbFace & targetFace, // грань штамповки, MbFaceShell & toolShell, // оболочка тела-инструмента, const MbeCopyMode sameShellTool, // флаг способа использования оболочки инструмента, bool isPunch, // является инструмент пуансоном или матрицей, const RPArray & pierceFaces, // вскрываемые для вырубки грани инструмента, const MbToolStampingValues & params, // параметры штамповки, const MbSNameMaker & nameMaker ); // именователь, //------------------------------------------------------------------------------ /** \brief \ru Построение результирующей оболочки. \en Construction of result shell. \~ \details \ru На базе исходной оболочки из листового материала построить оболочку методом закрытой или открытой штамповки. \n Одновременно с построением оболочки функция создаёт её строитель.\n \en A shell is to be constructed on the basis of the source shell by the method of closed or open stamping. \n The function simultaneously creates the shell and its constructor.\n \~ \param[in] initialShell - \ru Исходная оболочка. \en The source shell. \~ \param[in] sameShell - \ru Режим копирования исходной оболочки. \en Mode of copying the source shell. \~ \param[in] toolShell - \ru Оболочка тела-инструмента. \en A shell of tool solid. \~ \param[in] sameShellTool - \ru Режим копирования оболочки тела-инструмента. \en Mode of copying the tool shell. \~ \param[in] params - \ru Параметры штамповки. \en The parameters of stamping. \~ \result \ru - тело со штамповкой. \en - The solid with stamping. \~ \ingroup Model_Creators */ // --- MbFaceShell * MakeUserStampShellForStampParts ( c3d::ShellSPtr & initialShell, const MbeCopyMode sameShell, MbFaceShell & toolShell, const MbeCopyMode sameShellTool, const MbStampWithToolPartsParams & params ); #endif // __CR_STAMP_USER_SOLID_H