45803fb2d7
- C3d aggiornamento delle librerie.
114 lines
8.8 KiB
C++
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
|