//---------------------------------------------------------------------------- // EgalTech 2013-2013 //---------------------------------------------------------------------------- // File : GdbGroup.h Data : 28.11.13 Versione : 1.4a2 // Contenuto : Dichiarazione della classe GdbGroup. // // // // Modifiche : 28.11.13 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include #include "/EgtDev/Include/EGkGeoObj.h" #include "GeoFrame3d.h" #include "GdbNode.h" //---------------------------------------------------------------------------- class GdbGroup : public GdbNode { friend class GdbNode ; public : virtual ~GdbGroup( void) ; virtual GdbGroup* Clone( int nId, IdManager& IdMgr) const ; virtual bool Save( std::ostream& osOut) const ; virtual bool Load( const std::string& sType, CScan& TheScanner, int& nParentId) ; virtual bool Translate( const Vector3d& vtMove) ; virtual bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng) ; virtual bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngDeg) { double dAngRad = dAngDeg * DEGTORAD ; return Rotate( ptAx, vtAx, cos( dAngRad), sin( dAngRad)) ; } virtual bool Scale( const Point3d& ptCen, double dCoeffX, double dCoeffY, double dCoeffZ) ; public : GdbGroup( void) ; bool Clear( void) ; void NodeCountInc( void) { ++ m_nNodeCount ; } void NodeCountDec( void) { -- m_nNodeCount ; } int GetNodeCount( void) const { return m_nNodeCount ; } GdbNode* GetFirstNode( void) { return m_pFirstNode ; } const GdbNode* GetFirstNode( void) const { return m_pFirstNode ; } GdbNode* GetLastNode( void) { return m_pLastNode ; } const GdbNode* GetLastNode( void) const { return m_pLastNode ; } public : static const std::string& GetKey( void) { static std::string s_sKey = "A_GRP" ; return s_sKey ; } public : bool GetGlobFrame( Frame3d& frGlob) ; public : GeoFrame3d m_gfrFrame ; private : int m_nNodeCount ; GdbNode* m_pFirstNode ; GdbNode* m_pLastNode ; } ;