EgtMachKernel :

- modifiche per rinviare caricamento macchina e DB utensili e lavorazioni a quando servono.
This commit is contained in:
Dario Sassi
2016-09-15 08:21:11 +00:00
parent a2f39ab432
commit ea319d1fa9
6 changed files with 78 additions and 46 deletions
+51 -26
View File
@@ -35,25 +35,14 @@ MachMgr::LoadMachine( const string& sMachineName)
// se macchina già caricata, non devo fare alcunchè
if ( GetMachine( sMachineName) != - 1)
return true ;
// creo gruppo ausiliario di base per le macchine
if ( ! CreateMachAux())
return false ;
// creo e carico la macchina
PtrOwner<Machine> pMch( new( nothrow) Machine) ;
if ( IsNull( pMch) || ! pMch->Init( m_sMachinesDir, sMachineName, this))
return false ;
// creo e carico il DB utensili
PtrOwner<ToolsMgr> pTsMgr( new( nothrow) ToolsMgr) ;
string sToolsFile = m_sMachinesDir + "\\" + sMachineName + "\\" + TOOLS_DIR + "\\" + TOOLS_FILE ;
if ( IsNull( pTsMgr) || ! pTsMgr->Load( sToolsFile))
return false ;
// creo e carico il DB lavorazioni
PtrOwner<MachiningsMgr> pMsMgr( new( nothrow) MachiningsMgr) ;
string sMachsFile = m_sMachinesDir + "\\" + sMachineName + "\\" + MACHININGS_DIR + "\\" + MACHININGS_FILE ;
if ( IsNull( pMsMgr) || ! pMsMgr->Load( sMachsFile, pTsMgr))
// verifico esista il file mlde ( o mde) della macchina
string sMachineMlde = m_sMachinesDir + "\\" + sMachineName + "\\" + sMachineName + ".Mlde" ;
if ( ! ExistsFile( sMachineMlde))
sMachineMlde = ChangeFileExtension( sMachineMlde, ".Mde") ;
if ( ! ExistsFile( sMachineMlde))
return false ;
// salvo nel vettore
m_vMachines.emplace_back( Release( pMch), Release( pTsMgr), Release( pMsMgr)) ;
m_vMachines.emplace_back( sMachineName, nullptr, nullptr, nullptr) ;
return true ;
}
@@ -63,8 +52,7 @@ MachMgr::GetMachine( const string& sMachineName) const
{
// ciclo sulle macchine
for ( size_t i = 0 ; i < m_vMachines.size() ; ++ i) {
if ( m_vMachines[i].pMachine != nullptr &&
EqualNoCase( m_vMachines[i].pMachine->GetMachineName(), sMachineName))
if ( EqualNoCase( m_vMachines[i].sName, sMachineName))
return int( i) ;
}
return - 1 ;
@@ -76,8 +64,7 @@ MachMgr::SetCurrMachine( const string& sMachineName)
{
// se è già la macchina corrente, tutto bene
if ( m_nCurrMch >= 0 && m_nCurrMch < int( m_vMachines.size()) &&
m_vMachines[m_nCurrMch].pMachine != nullptr &&
EqualNoCase( m_vMachines[m_nCurrMch].pMachine->GetMachineName(), sMachineName))
EqualNoCase( m_vMachines[m_nCurrMch].sName, sMachineName))
return true ;
// se c'è macchinata corrente, non posso cambiare la macchina
if ( m_nCurrMGrpId != GDB_ID_NULL)
@@ -87,8 +74,6 @@ MachMgr::SetCurrMachine( const string& sMachineName)
return false ;
// imposto i dati della macchina corrente
m_nCurrMch = GetMachine( sMachineName) ;
// nascondo la macchina
m_pGeomDB->SetStatus( GetCurrMachineId(), GDB_ST_OFF) ;
return true ;
}
@@ -96,10 +81,11 @@ MachMgr::SetCurrMachine( const string& sMachineName)
bool
MachMgr::GetCurrMachineName( string& sMachineName) const
{
Machine* pMch = GetCurrMachine() ;
if ( pMch == nullptr)
// verifico validità indice macchina corrente
if ( m_nCurrMch < 0 || m_nCurrMch >= int( m_vMachines.size()))
return false ;
sMachineName = pMch->GetMachineName() ;
// assegno il nome
sMachineName = m_vMachines[m_nCurrMch].sName ;
return true ;
}
@@ -107,8 +93,25 @@ MachMgr::GetCurrMachineName( string& sMachineName) const
Machine*
MachMgr::GetCurrMachine( void) const
{
// verifico validità indice macchina corrente
if ( m_nCurrMch < 0 || m_nCurrMch >= int( m_vMachines.size()))
return nullptr ;
// se gestore macchina non esiste, provo a crearlo e caricarlo
if ( m_vMachines[m_nCurrMch].pMachine == nullptr) {
// creo gruppo ausiliario di base per le macchine
if ( ! const_cast<MachMgr*>(this)->CreateMachAux())
return nullptr ;
// creo e carico la macchina
PtrOwner<Machine> pMch( new( nothrow) Machine) ;
if ( IsNull( pMch) || ! pMch->Init( m_sMachinesDir, m_vMachines[m_nCurrMch].sName, const_cast<MachMgr*>(this)))
return nullptr ;
// nascondo la macchina
if ( m_pGeomDB != nullptr)
m_pGeomDB->SetStatus( pMch->GetMachineId(), GDB_ST_OFF) ;
// salvo nel vettore
const_cast<MachineData&>( m_vMachines[m_nCurrMch]).pMachine = Release( pMch) ;
}
// restituisco il gestore macchina
return m_vMachines[m_nCurrMch].pMachine ;
}
@@ -116,8 +119,19 @@ MachMgr::GetCurrMachine( void) const
ToolsMgr*
MachMgr::GetCurrToolsMgr( void) const
{
// verifico validità indice macchina corrente
if ( m_nCurrMch < 0 || m_nCurrMch >= int( m_vMachines.size()))
return nullptr ;
// se DB utensili non esiste, provo a crearlo e caricarlo
if ( m_vMachines[m_nCurrMch].pTsMgr == nullptr) {
PtrOwner<ToolsMgr> pTsMgr( new( nothrow) ToolsMgr) ;
string sToolsFile = m_sMachinesDir + "\\" + m_vMachines[m_nCurrMch].sName + "\\" + TOOLS_DIR + "\\" + TOOLS_FILE ;
if ( IsNull( pTsMgr) || ! pTsMgr->Load( sToolsFile))
return nullptr ;
// salvo nel vettore
const_cast<MachineData&>( m_vMachines[m_nCurrMch]).pTsMgr = Release( pTsMgr) ;
}
// restituisco il gestore DB utensili
return m_vMachines[m_nCurrMch].pTsMgr ;
}
@@ -125,8 +139,19 @@ MachMgr::GetCurrToolsMgr( void) const
MachiningsMgr*
MachMgr::GetCurrMachiningsMgr( void) const
{
// verifico validità indice macchina corrente
if ( m_nCurrMch < 0 || m_nCurrMch >= int( m_vMachines.size()))
return nullptr ;
// se DB lavorazioni non esiste, provo a crearlo e caricarlo
if ( m_vMachines[m_nCurrMch].pMsMgr == nullptr) {
PtrOwner<MachiningsMgr> pMsMgr( new( nothrow) MachiningsMgr) ;
string sMachsFile = m_sMachinesDir + "\\" + m_vMachines[m_nCurrMch].sName + "\\" + MACHININGS_DIR + "\\" + MACHININGS_FILE ;
if ( IsNull( pMsMgr) || ! pMsMgr->Load( sMachsFile, GetCurrToolsMgr()))
return nullptr ;
// salvo nel vettore
const_cast<MachineData&>( m_vMachines[m_nCurrMch]).pMsMgr = Release( pMsMgr) ;
}
// restituisco il gestore DB lavorazioni
return m_vMachines[m_nCurrMch].pMsMgr ;
}