Files
EgtMachKernel/SetupMgr.cpp
T
Dario Sassi f0c1bc3360 EgtMachKernel 1.6x8 :
- prima versione della gestione dell'attrezzaggio.
2017-01-19 08:35:41 +00:00

155 lines
4.6 KiB
C++

//----------------------------------------------------------------------------
// 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 ;
}