Files
Extern/C3d/Include/cr_stamp_user_solid.h
SaraP 8c5bd7cfae Extern :
- C3d aggiornamento delle librerie ( 117952).
2023-07-07 15:05:03 +02:00

256 lines
20 KiB
C++

////////////////////////////////////////////////////////////////////////////////
/**
\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 <creator.h>
#include <sheet_metal_param.h>
//------------------------------------------------------------------------------
/** \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<MbItemIndex> pierceIndices; ///< \ru Индексы граней для вырубки. \en Face indicies for opening.
RPArray<MbCreator> 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<MbCreator> & creatorsTool,
const bool sameTool,
const MbItemIndex & faceIndex,
const MbItemIndex & pairFaceIndex,
SArray<MbItemIndex> & 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 <MbSpaceItem> *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<MbCreator> & creatorsTool, // журнал построения инструмента,
MbFaceShell & toolShell, // оболочка тела-инструмента,
const MbeCopyMode sameShellTool, // флаг способа использования оболочки инструмента,
bool isPunch, // является инструмент пуансоном или матрицей,
const RPArray<MbFace> & pierceFaces, // вскрываемые для вырубки грани инструмента,
const MbToolStampingValues & params, // параметры штамповки,
const MbSNameMaker & nameMaker, // именователь,
MbResultType & res, // флаг успешности операции,
SPtr<MbFaceShell> & 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<MbFace> & 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