From e10933bbad3fe777d6fb63198fd7e8531ed4178a Mon Sep 17 00:00:00 2001 From: DarioS Date: Fri, 11 Jun 2021 08:01:02 +0200 Subject: [PATCH 1/3] EgtMachKernel 2.3f1 : - allo script OnSetupHead aggiunto dato noto EMC.TCPOS. --- EgtMachKernel.rc | Bin 11774 -> 11774 bytes MachineCalc.cpp | 6 ++++++ SetupMgr.h | 2 ++ 3 files changed, 8 insertions(+) diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index d86e1ef151e09ea61a8c2c8047668fdc5480416f..e04e26ef1e4cf1bfae8a5827d3470ca7212c2e35 100644 GIT binary patch delta 121 zcmewt{V#gMH#Sx?1|0^&&A-{KnVHiV3@1O7)ZLuM)x!c8zsNNCgkT;*P6$a3MUMyL R=2g-z%(yjz6ex#q0RV5MCZGTS delta 121 zcmewt{V#gMH#SyN1|0^I&A-{KnVC}=OeQ~+)ZLuM)x!c8zsNNCgkT;*P6$a3MUMyL R=2g-z%(yjz6ex#q0RVH6Ca?ei diff --git a/MachineCalc.cpp b/MachineCalc.cpp index a93c16c..bedc890 100644 --- a/MachineCalc.cpp +++ b/MachineCalc.cpp @@ -37,6 +37,7 @@ static const string EVAR_TOTDIAM = ".TOTDIAM" ; // (num) diametro di in static const string EVAR_TOTLEN = ".TOTLEN" ; // (num) lunghezza di ingombro dell'utensile static const string EVAR_DIST = ".DIST" ; // (num) distanza dell'utensile (per seghe a catena) static const string EVAR_EXITPOS = ".EXITPOS" ; // (point) posizione attuale dell'uscita +static const string EVAR_TCPOS = ".TCPOS" ; // (string) posizione nell'attrezzaggio static const string EVAR_L1 = ".L1" ; // (num) valore del primo asse lineare static const string EVAR_L2 = ".L2" ; // (num) valore del secondo asse lineare static const string EVAR_L3 = ".L3" ; // (num) valore del terzo asse lineare @@ -229,6 +230,7 @@ Machine::SetCurrTool( const string& sTool, const string& sHead, int nExit) double dTOvLen = 0 ; double dTOvDiam = 0 ; double dTDist = 0 ; + string sTcPos = "" ; // se definito if ( ! sTool.empty()) { // carico anche gli utensili su eventuali altre uscite della testa @@ -249,6 +251,8 @@ Machine::SetCurrTool( const string& sTool, const string& sHead, int nExit) ! m_pMchMgr->TdbGetCurrToolParam( TPA_TOTDIAM, dTOvDiam)) return false ; m_pMchMgr->TdbGetCurrToolParam( TPA_DIST, dTDist) ; // opzionale + if ( ! m_pMchMgr->GetCurrSetupMgr().GetToolSetupPos( sTool, sTcPos)) + m_pMchMgr->TdbGetCurrToolParam( TPA_TCPOS, sTcPos) ; } // altrimenti casi speciali senza utensile else { @@ -261,6 +265,7 @@ Machine::SetCurrTool( const string& sTool, const string& sHead, int nExit) dTOvLen = 0 ; dTOvDiam = 0 ; dTDist = 0 ; + sTcPos = "" ; m_pMchMgr->TdbSetCurrTool( "") ; } // assegno tutti i dati @@ -289,6 +294,7 @@ Machine::SetCurrTool( const string& sTool, const string& sHead, int nExit) bOk = bOk && LuaSetGlobVar( EMC_VAR + EVAR_TOTDIAM, dTOvDiam) ; bOk = bOk && LuaSetGlobVar( EMC_VAR + EVAR_TOTLEN, dTOvLen) ; bOk = bOk && LuaSetGlobVar( EMC_VAR + EVAR_DIST, dTDist) ; + bOk = bOk && LuaSetGlobVar( EMC_VAR + EVAR_TCPOS, sTcPos) ; // chiamo funzione bOk = bOk && LuaCallFunction( ON_SET_HEAD) ; // reset variabili diff --git a/SetupMgr.h b/SetupMgr.h index bc164e8..84a3713 100644 --- a/SetupMgr.h +++ b/SetupMgr.h @@ -49,6 +49,8 @@ class SetupMgr bool FindTool( const std::string& sName) const ; bool GetPosData( int nPos, std::string& sTcPos, std::string& sHead, int& nExit, std::string& sName) const ; bool GetToolData( const std::string& sName, std::string& sTcPos, std::string& sHead, int& nExit, int* pnPos = nullptr) const ; + bool GetToolSetupPos( const std::string& sName, std::string& sTcPos) const + { std::string sH ; int nE ; return GetToolData( sName, sTcPos, sH, nE) ; } bool GetToolName( const std::string& sHead, int nExit, std::string& sName) const ; bool GetToolsInSetupPos( const std::string& sTcPos, STRVECTOR& vsTools) const ; From 2e1bf9ed295000a6792e803f5ac3c2f92cf29677 Mon Sep 17 00:00:00 2001 From: DarioS Date: Mon, 14 Jun 2021 10:24:58 +0200 Subject: [PATCH 2/3] EgtMachKernel : - modifiche per avere la lavorazione corrente corretta durante OnSetHead. --- Operation.cpp | 4 +++ Simulator.cpp | 74 ++++++++++++++++++++++++++++----------------------- 2 files changed, 44 insertions(+), 34 deletions(-) diff --git a/Operation.cpp b/Operation.cpp index 9423c6f..3a73995 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -1895,6 +1895,8 @@ Operation::AdjustStartEndMovements( bool bVerifyPreviousLink) } // altrimenti aggiungo uscita per cambio utensile alla lavorazione precedente e parto da questa else { + // imposto la lavorazione precedente come corrente + m_pMchMgr->SetCurrMachining( pPrevOp->GetOwner()) ; // imposto l'utensile precedente per i calcoli macchina if ( ! m_pMchMgr->SetCalcTool( pPrevOp->GetToolName(), pPrevOp->GetHeadName(), pPrevOp->GetExitNbr())) return false ; @@ -1908,6 +1910,8 @@ Operation::AdjustStartEndMovements( bool bVerifyPreviousLink) if ( ! m_pMchMgr->GetAllCurrAxesHomePos( vAxVal)) return false ; } + // ripristino la lavorazione corrente + m_pMchMgr->SetCurrMachining( GetOwner()) ; // imposto l'utensile per i calcoli macchina if ( ! m_pMchMgr->SetCalcTool( GetToolName(), GetHeadName(), GetExitNbr())) return false ; diff --git a/Simulator.cpp b/Simulator.cpp index 58adec3..09a9528 100644 --- a/Simulator.cpp +++ b/Simulator.cpp @@ -435,45 +435,51 @@ Simulator::UpdateTool( bool bFirst) // ripristino l'utensile corrente m_pMchMgr->TdbSetCurrTool( m_sTool) ; } + // verifico se cambierà + bool bDiffTool = ( sTool != m_sTool) ; // se cambierà ed esiste il corrente, lo scarico - if ( sTool != m_sTool && ! m_sTool.empty()) { + if ( bDiffTool && ! m_sTool.empty()) { // eventuale lancio script per scarico utensile if ( ! OnToolDeselect( sTool, sHead, nExit, sTcPos)) return false ; } - // se cambiato oppure prima volta, attivo l'utensile della lavorazione - if ( sTool != m_sTool || bFirst) { - // se prima volta, pulisco la testa - if ( bFirst) - m_pMchMgr->ResetHeadSet( sHead) ; - // carico l'utensile (e lo rendo corrente) - if ( ! m_pMchMgr->SetCalcTool( sTool, sHead, nExit)) - return false ; - m_sTool = sTool ; - m_sHead = sHead ; - m_nExit = nExit ; - m_pMchMgr->TdbGetCurrToolParam( TPA_DIAM, m_dTDiam) ; - // aggiorno gli assi macchina - if ( ! UpdateAxes()) - return false ; - // eventuali offset per Vmill (per adattare lo ZeroT macchina con quello di Zmap) - int nToolType ; m_pMchMgr->TdbGetCurrToolParam( TPA_TYPE, nToolType) ; - if ( nToolType == TT_MORTISE_STD) { - double dThick ; m_pMchMgr->TdbGetCurrToolParam( TPA_THICK, dThick) ; - m_dVmTdOffs = 0 ; - m_dVmAdOffs = 0.5 * dThick ; - } - else if ( nToolType == TT_SAW_STD || nToolType == TT_SAW_FLAT) { - double dLen ; m_pMchMgr->TdbGetCurrToolParam( TPA_LEN, dLen) ; - double dThick ; m_pMchMgr->TdbGetCurrToolParam( TPA_THICK, dThick) ; - m_dVmTdOffs = ( ( dLen <= dThick) ? -dLen + dThick : 0) ; - m_dVmAdOffs = 0 ; - } - else { - m_dVmTdOffs = 0 ; - m_dVmAdOffs = 0 ; - } - // eventuale lancio script + // se prima volta, pulisco la testa + if ( bFirst) + m_pMchMgr->ResetHeadSet( sHead) ; + // recupero la lavorazione corrente e imposto la nuova + int nCurrMchId = m_pMchMgr->GetCurrMachining() ; + m_pMchMgr->SetCurrMachining( m_nOpId) ; + // carico l'utensile (e lo rendo corrente) + if ( ! m_pMchMgr->SetCalcTool( sTool, sHead, nExit)) + return false ; + m_sTool = sTool ; + m_sHead = sHead ; + m_nExit = nExit ; + m_pMchMgr->TdbGetCurrToolParam( TPA_DIAM, m_dTDiam) ; + // ripristino la lavorazione corrente + m_pMchMgr->SetCurrMachining( nCurrMchId) ; + // aggiorno gli assi macchina + if ( ! UpdateAxes()) + return false ; + // eventuali offset per Vmill (per adattare lo ZeroT macchina con quello di Zmap) + int nToolType ; m_pMchMgr->TdbGetCurrToolParam( TPA_TYPE, nToolType) ; + if ( nToolType == TT_MORTISE_STD) { + double dThick ; m_pMchMgr->TdbGetCurrToolParam( TPA_THICK, dThick) ; + m_dVmTdOffs = 0 ; + m_dVmAdOffs = 0.5 * dThick ; + } + else if ( nToolType == TT_SAW_STD || nToolType == TT_SAW_FLAT) { + double dLen ; m_pMchMgr->TdbGetCurrToolParam( TPA_LEN, dLen) ; + double dThick ; m_pMchMgr->TdbGetCurrToolParam( TPA_THICK, dThick) ; + m_dVmTdOffs = ( ( dLen <= dThick) ? -dLen + dThick : 0) ; + m_dVmAdOffs = 0 ; + } + else { + m_dVmTdOffs = 0 ; + m_dVmAdOffs = 0 ; + } + // se cambiato oppure prima volta, lancio lo script di selezione + if ( bDiffTool || bFirst) { if ( ! OnToolSelect( m_sTool, sHead, nExit, sTcPos, bFirst)) return false ; } From 27f3957d4f3609c7d6b5bd9f319ea6d185ecf124 Mon Sep 17 00:00:00 2001 From: DarioS Date: Tue, 15 Jun 2021 09:58:03 +0200 Subject: [PATCH 3/3] EgtMachKernel : - modifica in generazione per richiamo OnSetHead sempre alla scelta utensile all'inizio lavorazione (come in simulazione). --- Processor.cpp | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/Processor.cpp b/Processor.cpp index e1f18ee..c0c6cb8 100644 --- a/Processor.cpp +++ b/Processor.cpp @@ -478,21 +478,18 @@ Processor::UpdateTool( const string& sTool) { // Salvo l'utensile attuale come precedente m_sPrevTool = m_sTool ; - // Se cambiato utensile ... - if ( sTool != m_sTool) { - // lo imposto come corrente - if ( ! m_pMchMgr->TdbSetCurrTool( sTool)) - return false ; - // lo carico in macchina (se esiste attrezzaggio prendo i dati da questo) - string sTcPos ; string sHead ; int nExit ; - if ( ! m_pMchMgr->GetCurrSetupMgr().GetToolData( sTool, sTcPos, sHead, nExit)) { - m_pMchMgr->TdbGetCurrToolParam( TPA_HEAD, sHead) ; - m_pMchMgr->TdbGetCurrToolParam( TPA_EXIT, nExit) ; - } - if ( ! m_pMchMgr->SetCalcTool( sTool, sHead, nExit)) - return false ; - m_sTool = sTool ; + // Lo imposto come corrente + if ( ! m_pMchMgr->TdbSetCurrTool( sTool)) + return false ; + // Lo carico in macchina (se esiste attrezzaggio prendo i dati da questo) + string sTcPos ; string sHead ; int nExit ; + if ( ! m_pMchMgr->GetCurrSetupMgr().GetToolData( sTool, sTcPos, sHead, nExit)) { + m_pMchMgr->TdbGetCurrToolParam( TPA_HEAD, sHead) ; + m_pMchMgr->TdbGetCurrToolParam( TPA_EXIT, nExit) ; } + if ( ! m_pMchMgr->SetCalcTool( sTool, sHead, nExit)) + return false ; + m_sTool = sTool ; return true ; }