//---------------------------------------------------------------------------- // EgalTech 2013-2013 //---------------------------------------------------------------------------- // File : GdbGeo.h Data : 05.03.14 Versione : 1.5c1 // Contenuto : Dichiarazione della classe GdbGeo. // // // // Modifiche : 22.01.13 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "GdbObj.h" #include "/EgtDev/Include/EGkGeoObjType.h" #include class IGeoObj ; //---------------------------------------------------------------------------- class GdbGeo : public GdbObj { public : ~GdbGeo( void) override ; GdbGeo* Clone( int nId) const override ; GdbType GetGdbType( void) const override { return GDB_TY_GEO ; } bool Save( int nBaseId, NgeWriter& ngeOut, INTUNORDSET* pSavedIds = nullptr) const override ; bool Load( int nNgeId, NgeReader& ngeIn, int nBaseGdbId, int& nParentId) override ; bool GetLocalBBox( BBox3d& b3Loc, int nFlag, int nLev = 0) const override ; bool GetBBox( const Frame3d& frRef, BBox3d& b3Ref, int nFlag, int nLev = 0) const override ; bool Translate( const Vector3d& vtMove) override ; bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng) override ; bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngDeg) override { double dAngRad = dAngDeg * DEGTORAD ; return Rotate( ptAx, vtAx, cos( dAngRad), sin( dAngRad)) ; } bool Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double dCoeffZ) override ; bool Mirror( const Point3d& ptOn, const Vector3d& vtNorm) override ; bool Shear( const Point3d& ptOn, const Vector3d& vtNorm, const Vector3d& vtDir, double dCoeff) override ; bool ToGlob( const Frame3d& frRef) override ; bool ToLoc( const Frame3d& frRef) override ; bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) override ; bool OnSetMaterial( void) override ; public : GdbGeo( void) ; GeoObjType GetGeoType( void) const ; public : IGeoObj* m_pGeoObj ; } ; //---------------------------------------------------------------------------- inline const GdbGeo* GetGdbGeo( const GdbObj* pGObj) { if ( pGObj == nullptr || pGObj->GetGdbType() != GDB_TY_GEO) return nullptr ; return static_cast( pGObj) ; } inline GdbGeo* GetGdbGeo( GdbObj* pGObj) { if ( pGObj == nullptr || pGObj->GetGdbType() != GDB_TY_GEO) return nullptr ; return static_cast( pGObj) ; }