Files
Extern/C3d/Include/cr_sheet_builder_solid.h
T
Dario Sassi 45803fb2d7 Extern :
- C3d aggiornamento delle librerie.
2020-12-24 11:59:30 +00:00

114 lines
8.8 KiB
C++

////////////////////////////////////////////////////////////////////////////////
/**
\file
\brief \ru Строитель оболочки из листового материала на основе произвольного тела.
\en Constructor of the sheet metal shell based on an arbitrary solid.
*/
////////////////////////////////////////////////////////////////////////////////
#ifndef __CR_SHEET_BUILDER_SOLID_H
#define __CR_SHEET_BUILDER_SOLID_H
#include <creator.h>
#include <sheet_metal_param.h>
//------------------------------------------------------------------------------
/** \brief \ru Строитель оболочки из листового материала на основе произвольного тела.
\en Constructor of the sheet metal shell based on an arbitrary solid. \~
\details \ru Строитель оболочки из листового материала на основе граней и ребер произвольного тела.\n
Оболочка строится на базе исходной плоской грани и указанных ребер сгиба и разреза.
\en Constructor of the sheet metal shell based on faces and edges of an arbitrary solid. \n
Shell builds based on initial planar face and given edges of bend and corner enclosure. \~
\ingroup Model_Creators
*/
// ---
class MATH_CLASS MbBuildSheetMetalSolid : public MbCreator {
private:
MbItemIndex faceIndex; ///< \ru Индекс исходной грани для построения листового тела. \en Index of initial face for sheet metal solid creation.
bool sense; ///< \ru Признак совпадения придания толщины с нормалью исходной грани. \en Attribute of coincidence of extrusion direction to the normal of the initial face.
MbSolidToSheetMetalValues parameters; ///< \ru Параметры построения листового тела по произвольному телу. \en The parameters of sheet metal solid building based on an arbitrary solid.
public :
MbBuildSheetMetalSolid( const MbItemIndex & faceIndex,
const bool sense,
const MbSolidToSheetMetalValues & params,
const MbSNameMaker & names );
private:
MbBuildSheetMetalSolid( const MbBuildSheetMetalSolid &, MbRegDuplicate * iReg );
public:
virtual ~MbBuildSheetMetalSolid();
// \ru Общие функции математического объекта. \en Common functions of the mathematical object.
virtual MbeCreatorType IsA() const; // \ru Тип элемента. \en A type of element.
virtual MbCreator & Duplicate( MbRegDuplicate * = c3d_null ) const; // \ru Сделать копию. \en Create a copy.
virtual bool IsSame ( const MbCreator & other, double accuracy ) const; // \ru Являются ли объекты равными? \en Determine whether an object is equal?
virtual bool IsSimilar( const MbCreator & item ) const; // \ru Являются ли объекты подобными? \en Determine whether an object is similar?
virtual bool SetEqual ( const MbCreator & ); // \ru Сделать равным. \en Make equal.
virtual void Transform( const MbMatrix3D &, MbRegTransform * = c3d_null ); // \ru Преобразовать элемент согласно матрице. \en Transform element according to the matrix.
virtual void Move ( const MbVector3D &, MbRegTransform * = c3d_null ); // \ru Сдвиг. \en Translation.
virtual void Rotate ( const MbAxis3D &, double angle, MbRegTransform * = c3d_null ); // \ru Повернуть вокруг оси. \en Rotate around an axis.
virtual void GetProperties ( MbProperties & properties ); // \ru Выдать свойства объекта. \en Get properties of the object.
virtual void SetProperties ( const MbProperties & properties ); // \ru Записать свойства объекта. \en Set properties of the object.
virtual MbePrompt GetPropertyName(); // \ru Выдать заголовок свойства объекта. \en Get a name of object property.
// \ru Общие функции твердого тела. \en Common functions of solid.
// \ru Построение оболочки листового тела. \en Construction of a sheet metal shell.
virtual bool CreateShell( MbFaceShell *& shell, MbeCopyMode sameShell, RPArray <MbSpaceItem> *items = c3d_null );
// \ru Получить параметры. \en Get the parameters.
void GetParameters( MbSolidToSheetMetalValues & params ) const { params = parameters; }
// \ru Установить параметры. \en Set the parameters.
void SetParameters( const MbSolidToSheetMetalValues & params ) { parameters = params; }
private:
OBVIOUS_PRIVATE_COPY( MbBuildSheetMetalSolid )
DECLARE_PERSISTENT_CLASS_NEW_DEL( MbBuildSheetMetalSolid )
};
IMPL_PERSISTENT_OPS( MbBuildSheetMetalSolid )
//------------------------------------------------------------------------------
/** \brief \ru Строитель оболочки из листового материала на основе произвольного тела.
\en Constructor of the sheet metal shell based on an arbitrary solid. \~
\details \ru На базе исходной произвольной оболочки построить оболочку из листового материала. \n
Одновременно с построением оболочки функция создаёт её строитель.\n
\en A shell is to be constructed on the basis of the source arbitary shell. \n
The function simultaneously creates the shell and its constructor.\n \~
\param[in] solid - \ru Исходная оболочка.
\en The source shell. \~
\param[in] sameShell - \ru Режим копирования исходной оболочки.
\en Mode of copying the source shell. \~
\param[in] initFace - \ru Исходная грань для построения листового тела.
\en The initial face for sheet metal solid construction. \~
\param[in] sense - \ru Признак совпадения направления придания толщины с нормалью исходной грани.
\en Attribute of coincidence of extrusion direction to the normal of the initial face. \~
\param[in] params - \ru Параметры построения листового тела по произвольному телу.
\en The parameters of sheet metal solid building based on an arbitrary solid. \~
\param[in] nameMaker - \ru Именователь.
\en An object for naming the new objects. \~
\param[out] result - \ru Результирующее тело.
\en The resultant solid. \~
\result \ru Возвращает строитель оболочки.
\en Returns the shell constructor. \~
\ingroup Model_Creators
*/
// ---
MATH_FUNC (MbCreator *) ConvertShellToSheetMetall( MbFaceShell * initialShell, // Исходная оболочка,
const MbeCopyMode sameShell, // флаг способа использования исходной оболочки,
const MbFace & initFace, // базовая грань, относительно которой будет строиться листовое тело,
bool sense, // признак совпадения придания толщины с нормалью базовой грани,
MbSolidToSheetMetalValues & params, // параметры построения листового тела,
const MbSNameMaker & nameMaker, // именователь,
MbResultType & res, // флаг успешности операции,
SPtr<MbFaceShell> & resultShell ); // результирующая оболочка.
#endif // __CR_SHEET_BUILDER_SOLID_H