//---------------------------------------------------------------------------- // EgalTech 2013-2013 //---------------------------------------------------------------------------- // File : GeoFrame3d.cpp Data : 02.12.13 Versione : 1.4a3 // Contenuto : Implementazione della classe Riferimento geometrico. // // // // Modifiche : 10.10.13 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "GeoFrame3d.h" #include "GeoObjFactory.h" #include "\EgtDev\Include\EGkStringUtils3d.h" #include using namespace std ; //---------------------------------------------------------------------------- GEOOBJ_REGISTER( GEO_FRAME3D, "G_FRM", GeoFrame3d) ; //---------------------------------------------------------------------------- GeoFrame3d::GeoFrame3d( void) : m_frF() { } //---------------------------------------------------------------------------- GeoFrame3d::~GeoFrame3d( void) { } //---------------------------------------------------------------------------- bool GeoFrame3d::Set( const Point3d& ptOrig, const Vector3d& vtDirX, const Vector3d& vtDirY, const Vector3d& vtDirZ) { // imposto ricalcolo della grafica m_OGrMgr.Reset() ; // assegno i dati return m_frF.Set( ptOrig, vtDirX, vtDirY, vtDirZ) ; } //---------------------------------------------------------------------------- bool GeoFrame3d::Set( const Frame3d& frF) { // assegno i dati m_frF = frF ; // imposto ricalcolo della grafica m_OGrMgr.Reset() ; return true ; } //---------------------------------------------------------------------------- GeoFrame3d* GeoFrame3d::Clone( void) const { GeoFrame3d* pGFr ; // alloco oggetto pGFr = new(nothrow) GeoFrame3d ; if ( pGFr != nullptr) *pGFr = *(const_cast(this)) ; return pGFr ; } //---------------------------------------------------------------------------- const string& GeoFrame3d::GetKey( void) const { return GEOOBJ_GETKEY( GeoFrame3d) ; } //---------------------------------------------------------------------------- bool GeoFrame3d::Save( ostream& osOut) const { // Origine osOut << ToString( m_frF.Orig()) << ";" ; // VersoreX osOut << ToString( m_frF.VersX()) << ";" ; // VersoreY osOut << ToString( m_frF.VersY()) << ";" ; // VersoreZ osOut << ToString( m_frF.VersZ()) << ";" << endl ; return true ; } //---------------------------------------------------------------------------- bool GeoFrame3d::Load( Scanner& TheScanner) { // imposto ricalcolo della grafica m_OGrMgr.Reset() ; // leggo la prossima linea string sLine ; if ( ! TheScanner.GetLine( sLine)) return false ; // la divido in parametri STRVECTOR vsParams ; Tokenize( sLine, ";", vsParams) ; // 4 parametri : origine, versore X, versore Y, versore Z if ( vsParams.size() != 4) return false ; // recupero l'origine Point3d ptOrig ; if ( ! FromString( vsParams[0], ptOrig)) return false ; // recupero il versore X Vector3d vtDirX ; if ( ! FromString( vsParams[1], vtDirX)) return false ; // recupero il versore Y Vector3d vtDirY ; if ( ! FromString( vsParams[2], vtDirY)) return false ; // recupero il versore Z Vector3d vtDirZ ; if ( ! FromString( vsParams[3], vtDirZ)) return false ; // imposto il riferimento return m_frF.Set( ptOrig, vtDirX, vtDirY, vtDirZ) ; } //---------------------------------------------------------------------------- bool GeoFrame3d::GetLocalBBox( BBox3d& b3Loc) const { // reset del box (un riferimento non occupa posizioni nello spazio) b3Loc.Reset() ; return true ; } //---------------------------------------------------------------------------- bool GeoFrame3d::GetBBox( const Frame3d& frRef, BBox3d& b3Ref) const { // verifico validità del frame if ( frRef.GetType() == Frame3d::ERR) return false ; // reset del box (un riferimento non occupa posizioni nello spazio) b3Ref.Reset() ; return true ; }