//---------------------------------------------------------------------------- // EgalTech 2013-2014 //---------------------------------------------------------------------------- // File : EGkGeoVector3d.h Data : 11.06.14 Versione : 1.5f4 // Contenuto : Dichiarazione della interfaccia IGeoVector3d. // // // // Modifiche : 22.11.13 DS Creazione modulo. // 11.06.14 DS Agg. punto Base. // //---------------------------------------------------------------------------- #pragma once #include "/EgtDev/Include/EGkGeoObj.h" class PolyLine ; //----------------------------------------------------------------------------- class __declspec( novtable) IGeoVector3d : public IGeoObj { public : // IGeoObj IGeoVector3d* Clone( void) const override = 0 ; public : virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ; virtual bool Set( const Vector3d& vtV) = 0 ; virtual bool Set( const Vector3d& vtV, const Point3d& ptBase) = 0 ; virtual const Vector3d& GetVector( void) const = 0 ; virtual const Point3d& GetBase( void) const = 0 ; virtual bool ChangeVector( const Vector3d& vtV) = 0 ; virtual bool ChangeBase( const Point3d& ptBase) = 0 ; virtual bool GetDrawWithArrowHead( double dFrazLenAH, double dMaxDimA, PolyLine& PL) const = 0 ; } ; //----------------------------------------------------------------------------- inline IGeoVector3d* CreateGeoVector3d( void) { return (static_cast( CreateGeoObj( GEO_VECT3D))) ; } inline IGeoVector3d* CloneGeoVector3d( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != GEO_VECT3D) return nullptr ; return (static_cast(pGObj->Clone())) ; } inline const IGeoVector3d* GetGeoVector3d( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != GEO_VECT3D) return nullptr ; return (static_cast(pGObj)) ; } inline IGeoVector3d* GetGeoVector3d( IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != GEO_VECT3D) return nullptr ; return (static_cast(pGObj)) ; }