//---------------------------------------------------------------------------- // EgalTech 2019-2019 //---------------------------------------------------------------------------- // File : EGkExtDimension.h Data : 27.12.19 Versione : 1.5e10 // Contenuto : Dichiarazione della interfaccia IExtDimension. // // // // Modifiche : 27.12.19 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "/EgtDev/Include/EGkGeoObj.h" #include "/EgtDev/Include/EGkCurve.h" //----------------------------------------------------------------------------- class __declspec( novtable) IExtDimension : public IGeoObj { public : enum Type { DT_NONE = 0, DT_LINEAR = 1, DT_RADIAL = 2, DT_DIAMETRAL = 3, DT_ANGULAR = 4} ; public : virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ; virtual bool SetStyle( double dExtLineLen, double dArrowLen, double dTextDist, bool bLenIsMM, int nDecDigit, const std::string& sFont, double dTextHeight) = 0 ; virtual bool SetLinear( const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptPos, const Vector3d& vtN, const Vector3d& vtDir, const std::string& sText) = 0 ; virtual bool SetRadial( const Point3d& ptCen, const Point3d& ptPos, const Vector3d& vtN, const std::string& sText) = 0 ; virtual bool SetDiametral( const Point3d& ptCen, const Point3d& ptPos, const Vector3d& vtN, const std::string& sText) = 0 ; virtual bool SetAngular( const Point3d& ptV, const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptPos, const Vector3d& vtN, const std::string& sText) = 0 ; virtual bool SetAngularEx( const Point3d& ptV1, const Point3d& ptP1, const Point3d& ptV2, const Point3d& ptP2, const Point3d& ptPos, const Vector3d& vtN, const std::string& sText) = 0 ; virtual const Vector3d& GetNormVersor( void) const = 0 ; virtual const Vector3d& GetDirVersor( void) const = 0 ; virtual const std::string& GetText( void) const = 0 ; virtual const Point3d& GetStart( void) const = 0 ; virtual const Point3d& GetOverStart( void) const = 0 ; virtual const Point3d& GetEnd( void) const = 0 ; virtual const Point3d& GetOverEnd( void) const = 0 ; virtual const Point3d& GetPosition( void) const = 0 ; virtual double GetExtLineLen( void) const = 0 ; virtual double GetArrowLen( void) const = 0 ; virtual double GetTextDist( void) const = 0 ; virtual bool GetLenIsMM( void) const = 0 ; virtual int GetDecDigit( void) const = 0 ; virtual const std::string& GetFont( void) const = 0 ; virtual double GetTextHeight( void) const = 0 ; virtual bool GetMidPoint( Point3d& ptMid) const = 0 ; virtual bool GetCenterPoint( Point3d& ptCen) const = 0 ; virtual const std::string& GetSubType( void) const = 0 ; virtual bool ApproxWithLines( double dLinTol, double dAngTolDeg, POLYLINELIST& lstPL) const = 0 ; } ; //----------------------------------------------------------------------------- inline IExtDimension* CreateExtDimension( void) { return (static_cast( CreateGeoObj( EXT_DIMENSION))) ; } inline IExtDimension* CloneExtDimension( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != EXT_DIMENSION) return nullptr ; return (static_cast(pGObj->Clone())) ; } inline const IExtDimension* GetExtDimension( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != EXT_DIMENSION) return nullptr ; return (static_cast(pGObj)) ; } inline IExtDimension* GetExtDimension( IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != EXT_DIMENSION) return nullptr ; return (static_cast(pGObj)) ; } //---------------------------------------------------------------------------- // Raccolte di puntatori a IExtDimension typedef std::vector IEXTDIMENSIONPVECTOR ; // vettore di puntatori a IExtDimension typedef std::list IEXTDIMENSIONPLIST ; // lista di puntatori a IExtDimension