EgtMachKernel :

- aggiunta ImportSetup.
This commit is contained in:
Dario Sassi
2017-01-28 07:56:32 +00:00
parent 5ffbaab0e4
commit 0bafc660b5
5 changed files with 175 additions and 6 deletions
+120 -1
View File
@@ -16,12 +16,16 @@
#include "SetupMgr.h"
#include "DllMain.h"
#include "MachMgr.h"
#include "/EgtDEv/Include/EGnScanner.h"
using namespace std ;
//----------------------------------------------------------------------------
SetupMgr::SetupMgr( void)
{
m_pMchMgr = nullptr ;
m_pGeomDB = nullptr ;
m_pMachine = nullptr ;
}
//----------------------------------------------------------------------------
@@ -80,7 +84,122 @@ SetupMgr::Load( void)
if ( vsTok3.size() >= 2) {
if ( FromString( vsTok3[0], stuData.m_nExit) &&
m_pMchMgr->TdbGetToolFromUUID( vsTok3[1], stuData.m_sName)) {
bAdded = true ;
bAdded = true ;
stuData.m_sTuuid = vsTok3[1] ;
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::Save( void) const
{
// 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() ;
// cancello eventuali campi di attrezzaggio già presenti
int nPosiz = 1 ;
while ( m_pGeomDB->ExistsInfo( nSetupId, "Pos" + ToString( nPosiz))) {
m_pGeomDB->RemoveInfo( nSetupId, "Pos" + ToString( nPosiz)) ;
++ nPosiz ;
}
// eseguo la scrittura dei campi di attrezzaggio
int nSize = int( m_vStuData.size()) ;
int nI = 0 ;
int nPos = 1 ;
while ( nI < nSize) {
// assegno i dati della posizione (Tn;Hm;1/Tuuid/Name,2/Tuuid/Name...)
string sVal ;
sVal = m_vStuData[nI].m_sTcPos ;
if ( m_vStuData[nI].m_nExit > 0)
sVal += ";" + m_vStuData[nI].m_sHead + ";" + ToString( m_vStuData[nI].m_nExit) + "/" +
m_vStuData[nI].m_sTuuid + "/" + m_vStuData[nI].m_sName ;
++ nI ;
// verifico se ci sono altri utensili nella medesima posizione
while ( nI < nSize && m_vStuData[nI].m_sTcPos == m_vStuData[nI-1].m_sTcPos) {
if ( m_vStuData[nI].m_nExit > 0)
sVal += "," + ToString( m_vStuData[nI].m_nExit) + "/" + m_vStuData[nI].m_sTuuid + "/" + m_vStuData[nI].m_sName ;
++ nI ;
}
// scrivo una nuova posizione di attrezzaggio
if ( ! m_pGeomDB->SetInfo( nSetupId, "Pos" + ToString( nPos), sVal))
return false ;
// passo alla successiva posizione
++ nPos ;
}
return true ;
}
//----------------------------------------------------------------------------
bool
SetupMgr::Import( const string& sFileName)
{
// 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() ;
// inizializzo lo scanner
Scanner TheScanner ;
if ( ! TheScanner.Init( sFileName, ";"))
return false ;
// eseguo la lettura dei campi di attrezzaggio
int nPos = 1 ;
string sLine ;
while ( TheScanner.GetLine( sLine)) {
// salto dichiarazione sezione
if ( sLine.front() == '[')
continue ;
// recupero i dati della posizione (Posxx=Tn;Hm;1/Tuuid/Name,2/Tuuid/Name...)
size_t nInd = sLine.find( "=") ;
if ( nInd != string::npos)
sLine.erase( 0, nInd + 1) ;
STRVECTOR vsTok1 ;
Tokenize( sLine, ";", vsTok1) ;
if ( vsTok1.empty())
break ;
bool bAdded = false ;
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 ;
stuData.m_sTuuid = vsTok3[1] ;
m_vStuData.emplace_back( stuData) ;
}
}