diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 0f0ab27..5475aea 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/MachMgr.h b/MachMgr.h index de730fe..ec4303f 100644 --- a/MachMgr.h +++ b/MachMgr.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2015-2015 +// EgalTech 2015-2018 //---------------------------------------------------------------------------- -// File : MachMgr.h Data : 23.03.15 Versione : 1.6c6 +// File : MachMgr.h Data : 27.11.18 Versione : 1.9k2 // Contenuto : Dichiarazione della classe MachMgr. // // @@ -166,6 +166,7 @@ class MachMgr : public IMachMgr bool TdbGetCurrToolParam( int nType, int& nVal) const override ; bool TdbGetCurrToolParam( int nType, double& dVal) const override ; bool TdbGetCurrToolParam( int nType, std::string& sVal) const override ; + bool TdbGetCurrToolMaxDepth( double& dMaxDepth) const override ; bool TdbReload( void) override ; bool TdbSave( void) const override ; bool TdbGetToolDir( std::string& sToolDir) const override ; diff --git a/MachMgrDBTools.cpp b/MachMgrDBTools.cpp index cfd11c8..9b8dbd0 100644 --- a/MachMgrDBTools.cpp +++ b/MachMgrDBTools.cpp @@ -243,6 +243,18 @@ MachMgr::TdbGetCurrToolParam( int nType, string& sVal) const return pTsMgr->GetCurrToolParam( nType, sVal) ; } +//---------------------------------------------------------------------------- +bool +MachMgr::TdbGetCurrToolMaxDepth( double& dMaxDepth) const +{ + // recupero il gestore di utensili della macchina corrente + ToolsMgr* pTsMgr = GetCurrToolsMgr() ; + if ( pTsMgr == nullptr) + return false ; + // recupero il massimo affondamento + return pTsMgr->GetCurrToolMaxDepth( dMaxDepth) ; +} + //---------------------------------------------------------------------------- bool MachMgr::TdbReload( void) diff --git a/MachMgrMachines.cpp b/MachMgrMachines.cpp index 0974dc0..963c9ff 100644 --- a/MachMgrMachines.cpp +++ b/MachMgrMachines.cpp @@ -149,8 +149,8 @@ MachMgr::GetCurrToolsMgr( void) const // se DB utensili non esiste, provo a crearlo e caricarlo if ( m_vMachines[m_nCurrMch].pTsMgr == nullptr) { PtrOwner pTsMgr( new( nothrow) ToolsMgr) ; - string sToolsFile = m_sMachinesDir + "\\" + m_vMachines[m_nCurrMch].sName + "\\" + TOOLS_DIR + "\\" + TOOLS_FILE ; - if ( IsNull( pTsMgr) || ! pTsMgr->Load( sToolsFile)) + string sToolsDir = m_sMachinesDir + "\\" + m_vMachines[m_nCurrMch].sName + "\\" + TOOLS_DIR ; + if ( IsNull( pTsMgr) || ! pTsMgr->Load( sToolsDir, TOOLS_FILE)) return nullptr ; // salvo nel vettore const_cast( m_vMachines[m_nCurrMch]).pTsMgr = Release( pTsMgr) ; diff --git a/MachineCalc.cpp b/MachineCalc.cpp index 4203621..88df30a 100644 --- a/MachineCalc.cpp +++ b/MachineCalc.cpp @@ -350,7 +350,7 @@ Machine::GetCurrHeadCollGroups( INTVECTOR& vIds) const vIds.push_back( m_nCalcHeadId) ; // recupero stringhe con gruppi ausiliari di collisione const STRVECTOR& vsOthColl = pHead->GetOtherCollGroups() ; - for each ( const auto& sOthColl in vsOthColl) { + for ( const auto& sOthColl : vsOthColl) { string sGrp, sSub ; Split( sOthColl, "/", true, sGrp, sSub) ; int nId = GetGroup( sGrp) ; diff --git a/MachineHeads.cpp b/MachineHeads.cpp index 5644781..b74504d 100644 --- a/MachineHeads.cpp +++ b/MachineHeads.cpp @@ -30,7 +30,7 @@ Machine::GetAllHeadsNames( STRVECTOR& vNames) const // reset lista nomi vNames.clear() ; // ricerca delle teste - for each ( const auto& snGro in m_mapGroups) { + for ( const auto& snGro : m_mapGroups) { if ( IsHeadGroup( snGro.second)) vNames.push_back( snGro.first) ; } @@ -266,7 +266,7 @@ Machine::LoadAllTools( void) if ( ! m_pMchMgr->GetCurrSetupMgr().Exists()) return true ; // ciclo su tutte le teste - for each ( const auto& snGro in m_mapGroups) { + for ( const auto& snGro : m_mapGroups) { if ( IsHeadGroup( snGro.second)) { // recupero l'insieme di appartenenza della testa const STRVECTOR& vsHSet = GetHSet( snGro.first) ; @@ -320,7 +320,7 @@ Machine::UnloadAllTools( void) return false ; // ciclo su tutte le teste bool bOk = true ; - for each ( const auto& snGro in m_mapGroups) { + for ( const auto& snGro : m_mapGroups) { if ( IsHeadGroup( snGro.second)) { if ( ! UnloadTools( snGro.first)) bOk = false ; diff --git a/MachineTables.cpp b/MachineTables.cpp index dad4126..14fe87c 100644 --- a/MachineTables.cpp +++ b/MachineTables.cpp @@ -30,7 +30,7 @@ Machine::GetAllTablesNames( STRVECTOR& vNames) const // reset lista nomi vNames.clear() ; // ricerca delle tavole - for each ( const auto& snGro in m_mapGroups) { + for ( const auto& snGro : m_mapGroups) { if ( IsTableGroup( snGro.second)) vNames.push_back( snGro.first) ; } @@ -44,7 +44,7 @@ int Machine::GetFirstTable( void) const { // ricerca della prima tavola - for each ( const auto& snGro in m_mapGroups) { + for ( const auto& snGro : m_mapGroups) { if ( IsTableGroup( snGro.second)) return snGro.second ; } diff --git a/Operation.cpp b/Operation.cpp index 81b8d19..2fe9009 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -875,7 +875,7 @@ Operation::ExtractInfo( const string& sNotes, const string& sKey) string sInfo ; STRVECTOR vsCmd ; Tokenize( sNotes, ";", vsCmd) ; - for each (const auto& sCmd in vsCmd) { + for (const auto& sCmd : vsCmd) { // se per assi rotanti if ( sCmd.find( sKey) != string::npos) { sInfo = sCmd ; @@ -951,7 +951,7 @@ Operation::CalculateAxesValues( const string& sHint, bool bSolChExact) if ( ! sHint.empty()) { STRVECTOR vsTok ; Tokenize( sHint, ",", vsTok) ; - for each (const auto& sTok in vsTok) { + for (const auto& sTok : vsTok) { string szKey, szVal ; Split( sTok, "=", true, szKey, szVal) ; for ( int i = 0 ; i < nRotAxes ; ++ i) { @@ -2012,7 +2012,7 @@ Operation::TestCollisionAvoid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEn BBox3d b3Head ; INTVECTOR vCollId ; pMch->GetCurrHeadCollGroups( vCollId) ; - for each ( int nCId in vCollId) { + for ( int nCId : vCollId) { int nHId = m_pGeomDB->GetFirstInGroup( nCId) ; while ( nHId != GDB_ID_NULL) { BBox3d b3Tmp ; diff --git a/Processor.cpp b/Processor.cpp index 541c7eb..9998a2d 100644 --- a/Processor.cpp +++ b/Processor.cpp @@ -162,7 +162,7 @@ Processor::VerifySetup( void) // gestisco errore string sErr = "Error with setup :" ; - for each( const auto& sTmp in vsErr) + for ( const auto& sTmp : vsErr) sErr += " " + sTmp ; m_pMchMgr->SetLastError( 1001, sErr) ; return false ; diff --git a/Simulator.cpp b/Simulator.cpp index 83c749a..59a532c 100644 --- a/Simulator.cpp +++ b/Simulator.cpp @@ -155,7 +155,7 @@ Simulator::VerifySetup( void) // gestisco errore string sErr = "Error with setup :" ; - for each( const auto& sTmp in vsErr) + for ( const auto& sTmp : vsErr) sErr += " " + sTmp ; m_pMchMgr->SetLastError( 1001, sErr) ; return false ; diff --git a/ToolsMgr.cpp b/ToolsMgr.cpp index 658842f..7636544 100644 --- a/ToolsMgr.cpp +++ b/ToolsMgr.cpp @@ -17,11 +17,14 @@ #include "stdafx.h" #include "ToolsMgr.h" #include "DllMain.h" +#include "MachConst.h" +#include "/EgtDev/Include/EGkGeomDB.h" #include "/EgtDEv/Include/EmkToolConst.h" #include "/EgtDEv/Include/EGnStringKeyVal.h" #include "/EgtDEv/Include/EGnFileUtils.h" #include "/EgtDEv/Include/EGnScanner.h" #include "/EgtDEv/Include/EGnWriter.h" +#include "/EgtDev/Include/EgtPointerOwner.h" #include #include @@ -58,11 +61,12 @@ ToolsMgr::Clear( void) //---------------------------------------------------------------------------- bool -ToolsMgr::Load( const string& sToolsFile) +ToolsMgr::Load( const string& sToolsDir, const string& sToolsFile) { // salvo la path del file con i dati - m_sToolsFile = sToolsFile ; - string sOut = "ToolsMgr Init : " + m_sToolsFile ; + m_sToolsDir = sToolsDir ; + m_sToolsPath = m_sToolsDir + "\\" + sToolsFile ; + string sOut = "ToolsMgr Init : " + m_sToolsPath ; LOG_INFO( GetEMkLogger(), sOut.c_str()) // carico @@ -78,7 +82,7 @@ ToolsMgr::Reload( void) // inizializzo lo scanner Scanner TheScanner ; - if ( ! TheScanner.Init( m_sToolsFile, ";")) { + if ( ! TheScanner.Init( m_sToolsPath, ";")) { LOG_ERROR( GetEMkLogger(), "ReloadTools : Error on Init") return false ; } @@ -223,17 +227,17 @@ ToolsMgr::Save( bool bCompressed) const return true ; // faccio copia di backup del file originale - CopyFileEgt( m_sToolsFile, m_sToolsFile + ".bak") ; + CopyFileEgt( m_sToolsPath, m_sToolsPath + ".bak") ; // inizializzo il writer Writer TheWriter ; - if ( ! TheWriter.Init( m_sToolsFile, bCompressed)) { + if ( ! TheWriter.Init( m_sToolsPath, bCompressed)) { LOG_ERROR( GetEMkLogger(), "SaveTools : Error on Init") return false ; } // scrivo linea di inizio file - string sOut = "; --- " + m_sToolsFile + " " + CurrDateTime() + " ---" ; + string sOut = "; --- " + m_sToolsPath + " " + CurrDateTime() + " ---" ; if ( ! TheWriter.OutText( sOut)) { LOG_ERROR( GetEMkLogger(), "SaveTools : Error on Start") return false ; @@ -527,12 +531,34 @@ ToolsMgr::SaveCurrTool( void) m_suData.emplace( m_tdCurrTool.m_sName, m_tdCurrTool.m_Uuid) ; } } + // aggiorno dati portautensile + UpdateCurrToolHolderData() ; // eseguo salvataggio m_bModified = true ; iIter->second = m_tdCurrTool ; return true ; } +//---------------------------------------------------------------------------- +bool +ToolsMgr::UpdateCurrToolHolderData( void) +{ + // Leggo i dati del portautensile dal disegno dell'utensile + PtrOwner pGeomDB( CreateGeomDB()) ; + pGeomDB->Init() ; + string sDrawPath = m_sToolsDir + "\\" + m_tdCurrTool.m_sDraw ; + pGeomDB->Load( sDrawPath) ; + int nToolId = pGeomDB->GetFirstGroupInGroup( GDB_ID_ROOT) ; + double dTHoldLen = 0 ; + pGeomDB->GetInfo( nToolId, TTH_LEN, dTHoldLen) ; + double dTHoldDiam = 0 ; + pGeomDB->GetInfo( nToolId, TTH_DIAM, dTHoldDiam) ; + // Aggiorno i dati nelle note di sistema + SetValInNotes( TSI_THLEN, dTHoldLen, m_tdCurrTool.m_sSysNotes) ; + SetValInNotes( TSI_THDIAM, dTHoldDiam, m_tdCurrTool.m_sSysNotes) ; + return true ; +} + //---------------------------------------------------------------------------- bool ToolsMgr::IsCurrToolModified( void) const @@ -618,3 +644,56 @@ ToolsMgr::GetCurrToolParam( int nType, string& sVal) const { return ( m_bCurrTool ? m_tdCurrTool.GetParam( nType, sVal) : false) ; } + +//---------------------------------------------------------------------------- +bool +ToolsMgr::GetCurrToolMaxDepth( double& dMaxDepth) const +{ + // verifico esistenza utensile corrente + if ( ! m_bCurrTool) + return false ; + + // se punta a forare + if ( ( m_tdCurrTool.m_nType & TF_DRILLBIT) != 0) { + dMaxDepth = m_tdCurrTool.m_dMaxMat ; + return true ; + } + // se lama + else if ( ( m_tdCurrTool.m_nType & TF_SAWBLADE) != 0) { + dMaxDepth = m_tdCurrTool.m_dMaxMat ; + return true ; + } + // se fresa + else if ( ( m_tdCurrTool.m_nType & TF_MILL) != 0) { + // recupero le dimensioni del porta utensili + double dTHoldLen = 0 ; + double dTHoldDiam = 0 ; + if ( ! GetValInNotes( m_tdCurrTool.m_sSysNotes, TSI_THLEN, dTHoldLen) || + ! GetValInNotes( m_tdCurrTool.m_sSysNotes, TSI_THDIAM, dTHoldDiam)) { + (const_cast(this))->SaveCurrTool() ; + Save() ; + GetValInNotes( m_tdCurrTool.m_sSysNotes, TSI_THLEN, dTHoldLen) ; + GetValInNotes( m_tdCurrTool.m_sSysNotes, TSI_THDIAM, dTHoldDiam) ; + } + // calcolo il massimo affondamento + dMaxDepth = m_tdCurrTool.m_dLen - ( m_tdCurrTool.m_dDiam > dTHoldDiam ? 0 : dTHoldLen) - MAX_DEPTH_SAFE ; + return true ; + } + // se mortasatrice o sega a catena + else if ( ( m_tdCurrTool.m_nType & TF_MORTISE) != 0) { + dMaxDepth = m_tdCurrTool.m_dMaxMat ; + return true ; + } + // se scalpello + else if ( ( m_tdCurrTool.m_nType & TF_CHISEL) != 0) { + dMaxDepth = m_tdCurrTool.m_dMaxMat ; + return true ; + } + // utensile composito + else if ( ( m_tdCurrTool.m_nType & TF_COMPO) != 0) { + // non ancora gestito + return false ; + } + + return false ; +} diff --git a/ToolsMgr.h b/ToolsMgr.h index e6b911c..7c07469 100644 --- a/ToolsMgr.h +++ b/ToolsMgr.h @@ -25,7 +25,7 @@ class ToolsMgr { public : ToolsMgr( void) ; - bool Load( const std::string& sToolsFile) ; + bool Load( const std::string& sToolsDir, const std::string& sToolsFile) ; bool Reload( void) ; bool GetModified( void) { return m_bModified ; } @@ -49,6 +49,7 @@ class ToolsMgr bool GetCurrToolParam( int nType, int& nVal) const ; bool GetCurrToolParam( int nType, double& dVal) const ; bool GetCurrToolParam( int nType, std::string& sVal) const ; + bool GetCurrToolMaxDepth( double& dMaxDepth) const ; private : bool Clear( void) ; @@ -57,6 +58,7 @@ class ToolsMgr bool SaveHeader( Writer& TheWriter) const ; bool SaveOneTool( const EgtUUID& Uuid, int& nCounter, Writer& TheWriter) const ; bool VerifyTool( int nFamily, std::string& sName, int& nType) const ; + bool UpdateCurrToolHolderData( void) ; private : typedef std::unordered_map< EgtUUID, ToolData> UUIDTDATA_UMAP ; @@ -64,7 +66,8 @@ class ToolsMgr typedef STRUUID_MAP::const_iterator STRUUID_CITER ; private : - std::string m_sToolsFile ; + std::string m_sToolsDir ; + std::string m_sToolsPath ; UUIDTDATA_UMAP m_utData ; STRUUID_MAP m_suData ; mutable STRUUID_CITER m_suCIter ;