//---------------------------------------------------------------------------- // EgalTech 2017-2017 //---------------------------------------------------------------------------- // File : SetupMgr.cpp Data : 18.01.17 Versione : 1.6x8 // Contenuto : Implementazione gestore attrezzaggio utensili. // // // // Modifiche : 18.01.17 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "SetupMgr.h" #include "DllMain.h" #include "MachMgr.h" using namespace std ; //---------------------------------------------------------------------------- SetupMgr::SetupMgr( void) { } //---------------------------------------------------------------------------- bool SetupMgr::Init( MachMgr* pMchMgr) { // verifico ambiente if ( pMchMgr == nullptr || pMchMgr->GetContextId() == 0 || pMchMgr->GetGeomDB() == nullptr || pMchMgr->GetCurrMachine() == nullptr) return false ; m_pMchMgr = pMchMgr ; m_pGeomDB = m_pMchMgr->GetGeomDB() ; m_pMachine = m_pMchMgr->GetCurrMachine() ; // reset m_vStuData.clear() ; return true ; } //---------------------------------------------------------------------------- bool SetupMgr::Load( void) { // reset m_vStuData.clear() ; // verifico ci sia una macchinata corrente if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr || m_pMachine == nullptr || m_pMchMgr->GetCurrMachGroup() == GDB_ID_NULL) return false ; // recupero il gruppo di setup int nSetupId = m_pMchMgr->GetCurrSetupGroupId() ; // eseguo la lettura dei campi di attrezzaggio int nPos = 1 ; while ( true) { // leggo una nuova posizione di attrezzaggio string sVal ; if ( ! m_pGeomDB->GetInfo( nSetupId, "Pos" + ToString( nPos), sVal)) break ; // recupero i dati della posizione (Tn;Hm;1/Tuuid/Name,2/Tuuid/Name...) bool bAdded = false ; STRVECTOR vsTok1 ; Tokenize( sVal, ";", vsTok1) ; if ( vsTok1.empty()) break ; SetupData stuData ; stuData.m_sTcPos = vsTok1[0] ; if ( vsTok1.size() >= 3) { stuData.m_sHead = vsTok1[1] ; STRVECTOR vsTok2 ; Tokenize( vsTok1[2], ",", vsTok2) ; for ( size_t i = 0 ; i < vsTok2.size() ; ++ i) { STRVECTOR vsTok3 ; Tokenize( vsTok2[i], "/", vsTok3) ; if ( vsTok3.size() >= 2) { if ( FromString( vsTok3[0], stuData.m_nExit) && m_pMchMgr->TdbGetToolFromUUID( vsTok3[1], stuData.m_sName)) { bAdded = true ; m_vStuData.emplace_back( stuData) ; } } } } if ( ! bAdded) { stuData.m_nExit = 0 ; m_vStuData.emplace_back( stuData) ; } // passo alla successiva posizione ++ nPos ; } return true ; } //---------------------------------------------------------------------------- bool SetupMgr::FindTool( const string& sName) { for ( size_t i = 0 ; i < m_vStuData.size() ; ++ i) { if ( EqualNoCase( sName, m_vStuData[i].m_sName)) return true ; } return false ; } //---------------------------------------------------------------------------- bool SetupMgr::GetPosData( int nPos, string& sTcPos, string& sHead, int& nExit, string& sName) { // verifico che la posizione sia valida if ( nPos < 1 || nPos > int( m_vStuData.size())) return false ; // assegno i dati sTcPos = m_vStuData[nPos - 1].m_sTcPos ; if ( m_vStuData[nPos - 1].m_nExit > 0) { sHead = m_vStuData[nPos - 1].m_sHead ; nExit = m_vStuData[nPos - 1].m_nExit ; sName = m_vStuData[nPos - 1].m_sName ; } else { sHead = "" ; nExit = 0 ; sName = "" ; } return true ; } //---------------------------------------------------------------------------- bool SetupMgr::GetToolData( const string& sName, string& sTcPos, string& sHead, int& nExit, int* pnPos) { // cerco l'utensile int nI = - 1 ; for ( size_t i = 0 ; i < m_vStuData.size() ; ++ i) { if ( EqualNoCase( sName, m_vStuData[i].m_sName)) { nI = int( i) ; break ; } } if ( nI == -1) return false ; // assegno i dati sTcPos = m_vStuData[nI].m_sTcPos ; sHead = m_vStuData[nI].m_sHead ; nExit = m_vStuData[nI].m_nExit ; if ( pnPos != nullptr) *pnPos = nI + 1 ; return true ; }