EgtMachKernel :

- correzione funzioni per importazione ed esportazione utensili.
This commit is contained in:
Sara Perdoncin
2021-03-17 11:24:37 +00:00
parent 0893cae18c
commit 276733bf24
4 changed files with 55 additions and 59 deletions
+33 -37
View File
@@ -792,7 +792,7 @@ ToolsMgr::GetCurrToolThLength( double& dThLen) const
//----------------------------------------------------------------------------
bool
ToolsMgr::Export( STRVECTOR& vsToolsNames, string& sOutFile, bool bCompressed)
ToolsMgr::Export( const STRVECTOR& vsToolsNames, const string& sOutFile, bool bCompressed)
{
LOG_ERROR( GetEMkLogger(), ( "Export Tools " + sOutFile).c_str()) ;
@@ -802,20 +802,13 @@ ToolsMgr::Export( STRVECTOR& vsToolsNames, string& sOutFile, bool bCompressed)
return false ;
string sOutDir = sOutFile.substr( 0, pos) ;
// Verifico che i tools da esportare esistano
for ( STRVECTOR::iterator it = vsToolsNames.begin() ; it != vsToolsNames.end() ; it ++) {
if ( m_suData.find( *it) == m_suData.end()){
// se non lo trovo fra i tools lo elimino dal vettore dei ToolsNames
string sOut = "Warning Export Tool : " + *it + " not found. Tool is ignored" ;
LOG_ERROR( GetEMkLogger(), sOut.c_str()) ;
vsToolsNames.erase( it) ;
it -- ;
}
// Conto i tools da esportare
int nTools = 0 ;
for ( STRVECTOR::const_iterator it = vsToolsNames.begin() ; it != vsToolsNames.end() ; it ++) {
if ( m_suData.find( *it) != m_suData.end())
nTools ++ ;
}
// Numero tools da salvare
size_t nTools = vsToolsNames.size() ;
// inizializzo il writer
Writer TheWriter ;
if ( ! TheWriter.Init( sOutFile, bCompressed)) {
@@ -834,7 +827,7 @@ ToolsMgr::Export( STRVECTOR& vsToolsNames, string& sOutFile, bool bCompressed)
bool bOk = TheWriter.OutText( TF_HEADER) ;
bOk = bOk && TheWriter.OutText( TF_VERSION + "=" + ToString( TF_CURR_VER)) ;
bOk = bOk && TheWriter.OutText( TF_TOOLSIZE + "=" + ToString( ToolData::GetSize())) ;
bOk = bOk && TheWriter.OutText( TF_TOTAL + "=" + to_string( nTools)) ;
bOk = bOk && TheWriter.OutText( TF_TOTAL + "=" + ToString( nTools)) ;
if ( ! bOk) {
LOG_ERROR( GetEMkLogger(), "Export Tools : Error on Header") ;
@@ -863,8 +856,15 @@ ToolsMgr::Export( STRVECTOR& vsToolsNames, string& sOutFile, bool bCompressed)
//----------------------------------------------------------------------------
bool
ToolsMgr::ExportOneTool( string& sToolName, Writer& TheWriter, int& nCounter, string& sOutDir)
ToolsMgr::ExportOneTool( const string& sToolName, Writer& TheWriter, const int& nCounter, const string& sOutDir)
{
// se il tool non esiste nel DB lo ignoro
if ( m_suData.find( sToolName) == m_suData.end()){
string sOut = "Warning Export Tool : " + sToolName + " not found. Tool is ignored" ;
LOG_ERROR( GetEMkLogger(), sOut.c_str()) ;
return true ;
}
const ToolData * tData = GetTool( sToolName) ;
string sOut ;
if ( tData == nullptr){
@@ -900,16 +900,13 @@ ToolsMgr::ExportOneTool( string& sToolName, Writer& TheWriter, int& nCounter, st
//----------------------------------------------------------------------------
STRVECTOR
ToolsMgr::ToBeImported( string& sFile)
bool
ToolsMgr::ToBeImported( const string& sFile, STRVECTOR& vsToolsNames)
{
// Vettore con i nomi di tutti i tools che posso importare da sFile.
STRVECTOR vsToolsNames ;
Scanner TheScanner ;
if ( ! TheScanner.Init( sFile, ";")) {
LOG_ERROR( GetEMkLogger(), "Tools ToBeImported : Error on Init") ;
return STRVECTOR() ;
return false ;
}
// leggo l'intestazione
@@ -923,9 +920,9 @@ ToolsMgr::ToBeImported( string& sFile)
string sLine ;
if ( ! TheScanner.GetLine( sLine))
return STRVECTOR() ;
return false ;
if ( sLine.front() != '[' || sLine.back() != ']')
return STRVECTOR() ;
return false ;
bool bToolName = false ;
bool bRemoved = false ;
@@ -951,39 +948,38 @@ ToolsMgr::ToBeImported( string& sFile)
}
}
return vsToolsNames ;
return true ;
}
//----------------------------------------------------------------------------
STRVECTOR
ToolsMgr::Import( string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsNames)
bool
ToolsMgr::Import( const string& sFile, const STRVECTOR& vsToolsToImport, const STRVECTOR& vsToolsNames, STRVECTOR& vsImported)
{
LOG_ERROR( GetEMkLogger(), ( "Import Tools : " + sFile).c_str()) ;
STRVECTOR vsImported ;
// 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 STRVECTOR() ;
return false ;
}
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 STRVECTOR() ;
return false ;
}
}
// sFile directory
size_t pos = sFile.rfind( "\\") ;
if ( pos == string::npos)
return STRVECTOR() ;
return false ;
string sFileDir = sFile.substr( 0, pos) ;
// Inizializzo lo scanner
Scanner TheScanner ;
if ( ! TheScanner.Init( sFile, ";")) {
LOG_ERROR( GetEMkLogger(), " Import Tools : Error on Init") ;
return STRVECTOR() ;
return false ;
}
// leggo l'intestazione
int nVersion = 0 ;
@@ -999,9 +995,9 @@ ToolsMgr::Import( string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsN
// leggo i tool
string sLine ;
if( ! TheScanner.GetLine( sLine))
return STRVECTOR() ;
return false ;
if ( sLine.front() != '[' || sLine.back() != ']')
return STRVECTOR() ;
return false ;
TheScanner.UngetLine( sLine) ;
while ( TheScanner.GetLine( sLine)) {
@@ -1009,7 +1005,7 @@ ToolsMgr::Import( string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsN
TheScanner.UngetLine( sLine) ;
ToolData tData ;
bOk = ReadTool( TheScanner, tData, nToolSize) ;
vector<string>::iterator it = find( vsToolsToImport.begin(), vsToolsToImport.end(), tData.m_sName) ;
vector<string>::const_iterator it = find( vsToolsToImport.begin(), vsToolsToImport.end(), tData.m_sName) ;
// Se il tool non deve essere importato proseguo con il successivo
if ( it == vsToolsToImport.end())
@@ -1057,13 +1053,13 @@ ToolsMgr::Import( string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsN
if ( ! vsImported.empty())
m_bModified = true ;
return vsImported ;
return true ;
}
//--------------------------------------------------------------------------
bool
ToolsMgr::ReadTool( Scanner& TheScanner, ToolData& tData, int& nToolSize)
ToolsMgr::ReadTool( Scanner& TheScanner, ToolData& tData, const int& nToolSize) const
{
string sLine ;
TheScanner.GetLine( sLine) ;
@@ -1101,7 +1097,7 @@ ToolsMgr::ReadTool( Scanner& TheScanner, ToolData& tData, int& nToolSize)
//----------------------------------------------------------------------------
bool
ToolsMgr::CopyToolDraw( string& sDraw, string& sOutDraw, string& sToolName)
ToolsMgr::CopyToolDraw( const string& sDraw, const string& sOutDraw, const string& sToolName)
{
// se il file del disegno esiste lo copio nella nuova cartella
if ( ExistsFile( sDraw)){