diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index e177d56..9a81641 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/MachMgr.h b/MachMgr.h index cc4b3ea..528e152 100644 --- a/MachMgr.h +++ b/MachMgr.h @@ -484,11 +484,11 @@ class MachMgr : public IMachMgr bool ShowRootParts( bool bShow) ; // Tools DataBase bool UpdateAllToolDraws( void) const ; - bool UpdateToolDraw( const EgtUUID& UuidTool) const ; + bool UpdateToolDraw( const EgtUUID& UuidTool, double& dTHoldLen, double& dTHoldDiam) const ; int UpdateStandardToolDraw( const ToolData* pTdata, int nGenCtx, int nToolCtx, bool bToSave) const ; int UpdateCustomToolDraw( const ToolData* pTdata, int nGenCtx, int nToolCtx, bool bToSave) const ; std::string GetToolMakerKeyFromType( int nType) const ; - std::string GetToolHolderPath( const std::string& sHeadName, int nExit, int nType) const ; + std::string GetToolHolderPath( const std::string& sHeadName, int nExit, int nType, const std::string& sUserNotes) const ; // Operations : general bool InitOperation( int nId) ; // Operations : dispositions diff --git a/MachMgrDBTools.cpp b/MachMgrDBTools.cpp index ceb7a8a..e0ed411 100644 --- a/MachMgrDBTools.cpp +++ b/MachMgrDBTools.cpp @@ -526,9 +526,15 @@ MachMgr::UpdateAllToolDraws( void) const // verifico se non esiste il disegno associato string sDraw ; pTdata->GetParam( TPA_DRAW, sDraw) ; bool bNoDraw = ( ! sDraw.empty() && ! ExistsFile( sToolDir + "\\" + sDraw)) ; - // se modificato o senza disegno, ne lancio la creazione - if ( bModif || bNoDraw) - UpdateToolDraw( UuidTool) ; + // se modificato o senza disegno, ne lancio la creazione e aggiorno dati portautensile + if ( bModif || bNoDraw) { + double dTHoldLen = 0, dTHoldDiam = 0 ; + UpdateToolDraw( UuidTool, dTHoldLen, dTHoldDiam) ; + pTsMgr->SetCurrTool( sName) ; + pTsMgr->UpdateCurrToolHolderData( dTHoldLen, dTHoldDiam) ; + pTsMgr->SaveCurrTool() ; + pTsMgr->SetCurrTool( "") ; + } // passo al successivo bNext = pTsMgr->GetNextTool( TF_ALL, sName, nType) ; } @@ -542,7 +548,7 @@ MachMgr::UpdateAllToolDraws( void) const //---------------------------------------------------------------------------- bool -MachMgr::UpdateToolDraw( const EgtUUID& UuidTool) const +MachMgr::UpdateToolDraw( const EgtUUID& UuidTool, double& dTHoldLen, double& dTHoldDiam) const { // recupero il gestore di utensili della macchina corrente ToolsMgr* pTsMgr = GetCurrToolsMgr() ; @@ -581,6 +587,12 @@ MachMgr::UpdateToolDraw( const EgtUUID& UuidTool) const // Salvo il disegno ExeSetCurrentContext( nToolCtx) ; bOk = bOk && ExeSaveFile( sDrawPath, GDB_SV_BIN) ; + // Recupero i dati del portautensile + int nToolId = ExeGetFirstGroupInGroup( GDB_ID_ROOT) ; + if ( ! ExeGetInfo( nToolId, TTH_LEN, dTHoldLen)) + dTHoldLen = 0 ; + if ( ! ExeGetInfo( nToolId, TTH_DIAM, dTHoldDiam)) + dTHoldDiam = 0 ; // Ripristino il contesto originale ExeSetCurrentContext( nGenCtx) ; ExeDeleteContext( nToolCtx) ; @@ -631,8 +643,10 @@ MachMgr::UpdateStandardToolDraw( const ToolData* pTdata, int nGenCtx, int nToolC dCore = ( dLen >= dThick ? dThick - 1 : 2 * dLen - dThick) ; double dSpeed = 0 ; pTdata->GetParam( TPA_SPEED, dSpeed) ; + string sUserNotes ; + pTdata->GetParam( TPA_USERNOTES, sUserNotes) ; // Recupero la path dell'eventuale portautensile - string sThPath = GetToolHolderPath( sHeadName, nExit, nType) ; + string sThPath = GetToolHolderPath( sHeadName, nExit, nType, sUserNotes) ; // Carico generatore disegno utensile string sMaker = GetPrivateProfileStringUtf8( TOOLS_SEC.c_str(), GetToolMakerKeyFromType( nType).c_str(), "", sMachIni.c_str()) ; if ( sMaker.empty()) @@ -775,7 +789,7 @@ MachMgr::GetToolMakerKeyFromType( int nType) const //---------------------------------------------------------------------------- string -MachMgr::GetToolHolderPath( const string& sHeadName, int nExit, int nType) const +MachMgr::GetToolHolderPath( const string& sHeadName, int nExit, int nType, const std::string& sUserNotes) const { // Verifiche su testa e uscita if ( sHeadName.empty() || nExit == 0) @@ -822,9 +836,9 @@ MachMgr::GetToolHolderPath( const string& sHeadName, int nExit, int nType) const sToolHolder = GetPrivateProfileStringUtf8( TOOLS_SEC.c_str(), MILLHOLDER_KEY.c_str(), "", sMachIni.c_str()) ; } // Verifico se sovrascritto da nota dell'utensile - string sNotes, sVal ; - if ( TdbGetCurrToolParam( TPA_USERNOTES, sNotes) && - GetValInNotes( sNotes, "TH", sVal) && + string sVal ; + if ( ! sUserNotes.empty() && + GetValInNotes( sUserNotes, "TH", sVal) && ExistsFile( sToolHolderDir + "\\" + sVal)) sToolHolder = sVal ; // Se non trovato ancora, esco diff --git a/ToolsMgr.cpp b/ToolsMgr.cpp index 4108993..404bc1b 100644 --- a/ToolsMgr.cpp +++ b/ToolsMgr.cpp @@ -542,8 +542,6 @@ ToolsMgr::SaveCurrTool( void) m_suData.emplace( m_tdCurrTool.m_sName, m_tdCurrTool.m_Uuid) ; } } - // aggiorno dati portautensile - UpdateCurrToolHolderData() ; // eseguo salvataggio m_bModified = true ; if ( find( m_utModified.begin(), m_utModified.end(), m_tdCurrTool.m_Uuid) == m_utModified.end()) @@ -554,18 +552,11 @@ ToolsMgr::SaveCurrTool( void) //---------------------------------------------------------------------------- bool -ToolsMgr::UpdateCurrToolHolderData( void) +ToolsMgr::UpdateCurrToolHolderData( double dTHoldLen, double dTHoldDiam) { - // 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) ; + // verifico validità utensile corrente + if ( ! m_bCurrTool) + return false ; // Aggiorno i dati nelle note di sistema SetValInNotes( TSI_THLEN, dTHoldLen, m_tdCurrTool.m_sSysNotes) ; SetValInNotes( TSI_THDIAM, dTHoldDiam, m_tdCurrTool.m_sSysNotes) ; diff --git a/ToolsMgr.h b/ToolsMgr.h index 8dba009..4ab95cb 100644 --- a/ToolsMgr.h +++ b/ToolsMgr.h @@ -56,6 +56,7 @@ class ToolsMgr bool GetCurrToolParam( int nType, double& dVal) const ; bool GetCurrToolParam( int nType, std::string& sVal) const ; template bool GetCurrToolValInNotes( int nType, const std::string& sKey, T& Val) const ; + bool UpdateCurrToolHolderData( double dTHoldLen, double dTHoldDiam) ; bool GetCurrToolMaxDepth( double dSafe, double& dMaxDepth) const ; bool GetCurrToolThDiam( double& dThDiam) const ; bool GetCurrToolThLength( double& dThLen) const ; @@ -72,7 +73,6 @@ 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) ; bool ExportOneTool( const std::string& sToolName, Writer& TheWriter, const int& nCounter, const std::string& sOutDir) ; bool ReadTool( Scanner& TheScanner, ToolData& tData, const int& nToolSize) const ; bool CopyToolDraw( const std::string& sDraw, const std::string& sOutDraw, const std::string& sToolName) ;