EgtMachKernel :

- gestione sovrascrittura di utensili
- restituzione della famiglia di utensili in ToolsMgr::ToBeImported.
This commit is contained in:
Sara Perdoncin
2021-03-24 16:40:45 +00:00
parent f375123865
commit 3a5d19fd08
4 changed files with 49 additions and 22 deletions
+45 -18
View File
@@ -794,7 +794,7 @@ ToolsMgr::GetCurrToolThLength( double& dThLen) const
bool
ToolsMgr::Export( const STRVECTOR& vsToolsNames, const string& sOutFile, bool bCompressed)
{
LOG_ERROR( GetEMkLogger(), ( "Export Tools " + sOutFile).c_str()) ;
LOG_INFO( GetEMkLogger(), ( "Export Tools " + sOutFile).c_str()) ;
// Out Directory
size_t pos = sOutFile.rfind( "\\") ;
@@ -901,7 +901,7 @@ ToolsMgr::ExportOneTool( const string& sToolName, Writer& TheWriter, const int&
//----------------------------------------------------------------------------
bool
ToolsMgr::ToBeImported( const string& sFile, STRVECTOR& vsToolsNames)
ToolsMgr::ToBeImported( const string& sFile, STRVECTOR& vsToolsNames, INTVECTOR& vToolsTypes)
{
Scanner TheScanner ;
if ( ! TheScanner.Init( sFile, ";")) {
@@ -925,29 +925,52 @@ ToolsMgr::ToBeImported( const string& sFile, STRVECTOR& vsToolsNames)
return false ;
bool bToolName = false ;
bool bRemoved = false ;
// cerco i nomi di tutti i tool del file
bool bToolType = false ;
bool bAdd = true ;
string sName, sType ;
while ( TheScanner.GetLine( sLine)) {
if ( sLine.front() == '[' && sLine.back() == ']') { // se è intestazione
// aggiungo tool precedente se ok
if ( bAdd && bToolType && bToolName){
vsToolsNames.push_back( sName) ;
vToolsTypes.push_back( stoi( sType)) ;
}
bToolName = false ;
bRemoved = false ;
bToolType = false ;
bAdd = true ;
}
else {
string sKey, sVal ;
SplitFirst( sLine, "=", sKey, sVal) ;
SplitFirst( sLine, "=", sKey, sVal) ;
if ( ToUpper( sKey) == "TYP") {
if ( ! bToolType) {
bToolType = true ;
sType = sVal ;
}
else // se tool ha più types è errore, non potrà essere importato
bAdd = false ;
}
if( ToUpper( sKey) == "NAME") {
if ( ! bToolName){
bToolName = true ;
vsToolsNames.push_back( sVal) ;
}
else if ( ! bRemoved) { // se tool ha più nomi è errore, lo elimino dal vettore
vsToolsNames.pop_back() ;
bRemoved = true ;
sName = sVal ;
}
else // se tool ha più nomi è errore, non potrà essere importato
bAdd = false ;
}
}
}
// aggiungo ultimo tool se ok
if ( bAdd && bToolType && bToolName) {
vsToolsNames.push_back( sName) ;
vToolsTypes.push_back( stoi( sType)) ;
}
if ( vsToolsNames.size() != vToolsTypes.size())
return false ;
return true ;
}
@@ -955,15 +978,19 @@ ToolsMgr::ToBeImported( const string& sFile, STRVECTOR& vsToolsNames)
bool
ToolsMgr::Import( const string& sFile, const STRVECTOR& vsToolsToImport, const STRVECTOR& vsToolsNames, STRVECTOR& vsImported)
{
LOG_ERROR( GetEMkLogger(), ( "Import Tools : " + sFile).c_str()) ;
LOG_INFO( GetEMkLogger(), ( "Import Tools : " + sFile).c_str()) ;
// Verifico validità dei ToolsNames
for ( size_t i = 0 ; i < vsToolsNames.size() ; i ++) {
if ( m_suData.find( vsToolsNames[i]) != m_suData.end()){
LOG_ERROR( GetEMkLogger(), ( " Error : name \"" + vsToolsNames[i] + "\" is already used").c_str()) ;
return false ;
for ( size_t i = 0 ; i < vsToolsNames.size() ; i ++) {
// Se esiste già nel DB un utensile con lo stesso nome lo rimuovo
if ( m_suData.find( vsToolsNames[i]) != m_suData.end()) {
bool bOk = RemoveTool( vsToolsNames[i]) ;
if ( ! bOk){
LOG_ERROR( GetEMkLogger(), ( " Error removing " + vsToolsNames[i]).c_str()) ;
return false ;
}
}
if ( i != vsToolsNames.size() - 1 && find( vsToolsNames.begin() + i + 1, vsToolsNames.end(), vsToolsNames[i]) != vsToolsNames.end()){
// Verfico che il nome non sia ripetuto nella lista dei vsToolsNames
if ( i != vsToolsNames.size() - 1 && find( vsToolsNames.begin() + i + 1, vsToolsNames.end(), vsToolsNames[i]) != vsToolsNames.end()) {
LOG_ERROR( GetEMkLogger(), ( " Error : name \"" + vsToolsNames[i] + "\" is already used").c_str()) ;
return false ;
}