EgtMachKernel :
- gestione sovrascrittura di utensili - restituzione della famiglia di utensili in ToolsMgr::ToBeImported.
This commit is contained in:
+45
-18
@@ -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 ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user