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
+3 -2
View File
@@ -48,13 +48,14 @@ struct AxisBlock {
//----------------------------------------------------------------------------
struct MachineData {
string sName ;
Machine* pMachine ;
ToolsMgr* pTsMgr ;
MachiningsMgr* pMsMgr ;
MachineData( void)
: pMachine( nullptr), pTsMgr( nullptr), pMsMgr( nullptr) {}
MachineData( Machine* pM, ToolsMgr* pTM, MachiningsMgr* pMM)
{ pMachine = pM ; pTsMgr = pTM ; pMsMgr = pMM ; }
MachineData( const string& sN, Machine* pM, ToolsMgr* pTM, MachiningsMgr* pMM)
{ sName = sN ; pMachine = pM ; pTsMgr = pTM ; pMsMgr = pMM ; }
} ;
//----------------------------------------------------------------------------
+14 -10
View File
@@ -69,17 +69,21 @@ MachMgr::Clear( void)
delete m_pSimul ;
m_pSimul = nullptr ;
}
// pulisco le macchine
while ( ! m_vMachines.empty()) {
if ( m_vMachines.back().pMsMgr != nullptr)
delete m_vMachines.back().pMsMgr ;
if ( m_vMachines.back().pTsMgr != nullptr)
delete m_vMachines.back().pTsMgr ;
if ( m_vMachines.back().pMachine != nullptr)
delete m_vMachines.back().pMachine ;
m_vMachines.pop_back() ;
// pulisco le macchine (ma ne lascio intatto l'elencazione con il nome)
for ( size_t i = 0 ; i < m_vMachines.size() ; ++ i) {
if ( m_vMachines[i].pMsMgr != nullptr) {
delete m_vMachines[i].pMsMgr ;
m_vMachines[i].pMsMgr = nullptr ;
}
if ( m_vMachines[i].pTsMgr != nullptr) {
delete m_vMachines[i].pTsMgr ;
m_vMachines[i].pTsMgr = nullptr ;
}
if ( m_vMachines[i].pMachine != nullptr) {
delete m_vMachines[i].pMachine ;
m_vMachines[i].pMachine = nullptr ;
}
}
m_nCurrMch = - 1 ;
}
//----------------------------------------------------------------------------
+3 -2
View File
@@ -329,8 +329,9 @@ MachMgr::MdbSave( void) const
bool
MachMgr::MdbGetMachiningDir( string& sMchDir) const
{
if ( GetCurrMachine() == nullptr)
string sMachineName ;
if ( ! GetCurrMachineName( sMachineName))
return false ;
sMchDir = m_sMachinesDir + "\\" + GetCurrMachine()->GetMachineName() + "\\" + MACHININGS_DIR ;
sMchDir = m_sMachinesDir + "\\" + sMachineName + "\\" + MACHININGS_DIR ;
return true ;
}
+6 -4
View File
@@ -259,9 +259,10 @@ MachMgr::TdbSave( void) const
bool
MachMgr::TdbGetToolDir( string& sToolDir) const
{
if ( GetCurrMachine() == nullptr)
string sMachineName ;
if ( ! GetCurrMachineName( sMachineName))
return false ;
sToolDir = m_sMachinesDir + "\\" + GetCurrMachine()->GetMachineName() + "\\" + TOOLS_DIR ;
sToolDir = m_sMachinesDir + "\\" + sMachineName + "\\" + TOOLS_DIR ;
return true ;
}
@@ -269,8 +270,9 @@ MachMgr::TdbGetToolDir( string& sToolDir) const
bool
MachMgr::TdbGetToolHolderDir( string& sToolDir) const
{
if ( GetCurrMachine() == nullptr)
string sMachineName ;
if ( ! GetCurrMachineName( sMachineName))
return false ;
sToolDir = m_sMachinesDir + "\\" + GetCurrMachine()->GetMachineName() + "\\" + TOOLHOLDERS_DIR ;
sToolDir = m_sMachinesDir + "\\" + sMachineName + "\\" + TOOLHOLDERS_DIR ;
return true ;
}
+1 -2
View File
@@ -100,9 +100,8 @@ MachMgr::AddMachGroup( const string& sName, const string& sMachineName)
// se nome macchina vuoto, verifico esista una macchina corrente
string sMachName ;
if ( &sMachineName == nullptr || sMachineName.empty()) {
if ( GetCurrMachine() == nullptr)
if ( ! GetCurrMachineName( sMachName))
return GDB_ID_NULL ;
sMachName = GetCurrMachine()->GetMachineName() ;
}
// altrimenti, verifica ed eventuale caricamento della macchina
else {
+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 ;
}