Files
SaraP f29512578a Extern :
- C3d aggiornamento delle librerie ( 117832).
2022-07-21 14:53:00 +02:00

207 lines
11 KiB
C++

////////////////////////////////////////////////////////////////////////////////
/**
\file
\brief \ru Условное обозначения шероховатости. Условное обозначение линия-выноска.
\en Roughness conventional notation. Leader conventional notation. \~
*/
////////////////////////////////////////////////////////////////////////////////
#ifndef __MB_ROUGH_H
#define __MB_ROUGH_H
#include <topology_item.h>
#include <mb_symbol.h>
class MATH_CLASS MbPlacement3D;
//------------------------------------------------------------------------------
/** \brief \ru Обозначение шероховатости.
\en Roughness notation. \~
\details \ru Обозначение шероховатости поверхности детали.\n
\en Roughness notation of detail surface.\n \~
\ingroup Legend
*/
// ---
class MATH_CLASS MbRough : public MbPointsSymbol
{
private:
MbTopologyItem * item; ///< \ru Топологический объект, которому принадлежит шероховатость (не владеет). \en Topological object which roughness belongs to (doesn't own).
protected:
/// \ru Конструктор-копия. \en Copy constructor.
MbRough( const MbRough & );
/// \ru Умолчательный конструктор. \en Default constructor.
MbRough();
public:
/** \brief \ru Конструктор.
\en Constructor. \~
\details \ru Конструктор условного обозначения на базовых точках.
\en Constructor of conventional notation on base points. \~
\param[in] _points - \ru Базовые точки условного обозначения в мировой системе координат.
\en Conventional notation base points in world coordinate system. \~
\param[in] _name - \ru Имя условного обозначения объекта.
\en Object's conventional notation name. \~
\param[in] _component - \ru Компонент условного обозначения.
\en Component of conventional notation. \~
\param[in] _item - \ru Топологический объект, которому принадлежит шероховатость.
\en Topological object, which roughness belongs to. \~
\param[in] _stateCalc - \ru Тип расчета видимости точек.
\en Points visibility calculation type. \~
*/
MbRough( const SArray<MbCartPoint3D> & _points, MbName * _name,
uint _component, MbTopologyItem * _item, StateCalc _stateCalc = st_strong );
/// \ru Деструктор. \en Destructor.
virtual ~MbRough();
public:
/** \ru \name Общие функции геометрического объекта.
\en \name Common functions of a geometric object.
\{ */
MbeSpaceType IsA () const override;
MbSpaceItem & Duplicate( MbRegDuplicate * = nullptr ) const override;
bool IsSame ( const MbSpaceItem & other, double accuracy = LENGTH_EPSILON ) const override;
bool SetEqual ( const MbSpaceItem & ) override;
/** \} */
/** \ru \name Собственные функции шероховатости.
\en \name Own functions of roughness.
\{ */
/// \ru Получить топологический объект, которому принадлежит шероховатость. \en Get topological object, which roughness belongs to.
MbTopologyItem * GetTopologicItem() const;
/// \ru Установить топологический объект, которому принадлежит шероховатость. \en Set topological object, which roughness belongs to.
void SetTopologicItem( MbTopologyItem * _item );
/** \} */
private:
MbRough & operator = ( const MbRough & );
DECLARE_PERSISTENT_CLASS( MbRough )
};
IMPL_PERSISTENT_OPS( MbRough )
//------------------------------------------------------------------------------
/** \brief \ru Условное обозначение линия-выноска.
\en Leader conventional notation. \~
\details \ru Условное обозначение линия-выноска.\n
\en Leader conventional notation.\n \~
\ingroup Legend
*/
// ---
class MATH_CLASS MbLeader : public MbSymbol {
protected:
PArray<MbRough> branches; ///< \ru Узлы обозначения линия-выноска (не владеет). \en Leader notation nodes (doesn't own).
protected:
/// \ru Конструктор-копия. \en Copy constructor.
MbLeader( const MbLeader & );
/// \ru Умолчательный конструктор. \en Default constructor.
MbLeader();
public:
/** \brief \ru Конструктор.
\en Constructor. \~
\details \ru Конструктор условного обозначения на базовых точках.
\en Constructor of conventional notation on base points. \~
\param[in] _branches - \ru Узлы обозначения линия-выноска.
\en Leader notation nodes. \~
\param[in] _name - \ru Имя условного обозначения.
\en Conventional notation name. \~
\param[in] _component - \ru Компонент условного обозначения.
\en Component of conventional notation. \~
\param[in] _stateCalc - \ru Тип расчета видимости точек.
\en Points visibility calculation type. \~
*/
MbLeader( const PArray<MbRough> & _branches, MbName * _name,
uint _component, StateCalc _stateCalc = st_strong );
/// \ru Деструктор. \en Destructor.
virtual ~MbLeader();
public:
/// \ru Инициализация. \en Initialization.
void Init( const MbLeader & );
public:
/** \ru \name Общие функции геометрического объекта
\en \name Common functions of a geometric object
\{ */
MbeSpaceType IsA () const override;
MbSpaceItem & Duplicate ( MbRegDuplicate * = nullptr ) const override;
bool IsSame ( const MbSpaceItem & other, double accuracy = LENGTH_EPSILON ) const override;
bool SetEqual ( const MbSpaceItem & ) override;
void Transform ( const MbMatrix3D &, MbRegTransform * = nullptr ) override;
void Move ( const MbVector3D &, MbRegTransform * = nullptr ) override;
void Rotate ( const MbAxis3D &, double, MbRegTransform * = nullptr ) override;
void GetProperties( MbProperties & ) override;
void SetProperties( const MbProperties & ) override;
void GetBasisPoints( MbControlData3D & ) const override; // \ru Выдать контрольные точки объекта. \en Get control points of object.
void SetBasisPoints( const MbControlData3D & ) override; // \ru Изменить объект по контрольным точкам. \en Change the object by control points.
/** \} */
/** \ru \name Функции условного обозначения.
\en \name Functions of conventional notation.
\{ */
/// \ru Включить свой габарит в габаритный куб cube. \en Include own bounding box into 'cube' bounding box.
void IncludeGab ( MbCube & ) const override;
/// \ru Находится ли условное обозначение на плоскости OXY плейсмента place. \en Check if conventional notation on OXY plane of 'place' placement.
bool IsSymbolOnPlace ( const MbPlacement3D & ) const override;
/// \ru Находится ли условное обозначение на или под плоскостью OXY плейсмента place. \en Check if conventional notation on OXY plane of 'place' placement or under it.
bool IsSymbolUnderPlace( const MbPlacement3D & ) const override;
/// \ru Находится ли условное обозначение на или внутри оболочки faceShell. \en Check if conventional notation on 'faceShell' shell or inside it.
bool IsSymbolInShell ( const MbFaceShell & ) const override;
/// \ru Получить массив условных обозначений на базовых точках, принадлежащих данному обозначению. \en Get an array of notation conventions on the base points which belong to this notation.
void GetPointsSymbols ( RPArray<MbSymbol> & ) const override;
/** \} */
/** \ru \name Собственные функции обозначения линия-выноска.
\en \name Own functions of leader notation.
\{ */
/// \ru Получить количество узлов обозначения линия-выноска. \en Get count of leader notation nodes.
ptrdiff_t GetBranchesCount () const;
/** \brief \ru Получить узел.
\en Get node. \~
\details \ru Получить узел обозначения по индексу.
\en Get notation node by index. \~
\param[in] ind - \ru Индекс узла.
\en Node index. \~
\return \ru Узел по указанному индексу,\n
в случае некорректного индекса - последний узел из списка.
\en Node by specified index,\ n
in case of incorrect index - the last node from list. \~
*/
const MbRough & GetBranch( size_t ind ) const;
/** \brief \ru Установить узел.
\en Set node. \~
\details \ru Установить узел обозначения с указанным индексом.
\en Set notation node by given index. \~
\param[in] rough - \ru Новый узел.
\en New node. \~
\param[in] ind - \ru Индекс узла.
\en Node index. \~
*/
void SetBranch( const MbRough & rough, size_t ind );
/** \} */
private:
// \ru Не реализованные методы класса. \en Not implemented class methods.
void operator = ( const MbLeader & );
DECLARE_PERSISTENT_CLASS( MbLeader )
};
IMPL_PERSISTENT_OPS( MbLeader )
#endif // __MB_ROUGH_H