//////////////////////////////////////////////////////////////////////////////// /** \file \brief \ru Условное обозначения шероховатости. Условное обозначение линия-выноска. \en Roughness conventional notation. Leader conventional notation. \~ */ //////////////////////////////////////////////////////////////////////////////// #ifndef __MB_ROUGH_H #define __MB_ROUGH_H #include #include 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 & _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 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 & _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 & ) 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