From 26813af640c57d503cb0181d4cbf2b53760396d9 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 23 Jul 2026 20:16:44 +0200 Subject: [PATCH] =?UTF-8?q?EgtMachKernel=20:=20-=20aggiunto=20flag=20UseTc?= =?UTF-8?q?PosHead=20a=20dati=20generali=20macchina=20per=20abilitare=20po?= =?UTF-8?q?ssibilit=C3=A0=20dell'utensile=20di=20prendere=20la=20testa=20d?= =?UTF-8?q?alla=20posizione=20del=20TC=20-=20aggiunto=20controllo=20testa?= =?UTF-8?q?=20di=20utensile=20che=20non=20pu=C3=B2=20prenderla=20da=20TcPo?= =?UTF-8?q?s.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MachMgrSetup.cpp | 22 +++++++++++++++++----- Machine.cpp | 1 + Machine.h | 3 +++ MachineLua.cpp | 8 +++++++- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/MachMgrSetup.cpp b/MachMgrSetup.cpp index 860ce38..193af32 100644 --- a/MachMgrSetup.cpp +++ b/MachMgrSetup.cpp @@ -112,14 +112,26 @@ MachMgr::VerifyCurrSetup( STRVECTOR& vsErrors) if ( find( vsErrors.begin(), vsErrors.end(), sTool) == vsErrors.end()) vsErrors.push_back( sTool) ; } - // altrimenti, verifico se uscita coincide con quella indicata nel DB utensili + // altrimenti, verifico se testa e uscita coincidono con quella indicata nel DB utensili else { + string sTdbHead ; int nTdbExit = 0 ; if ( ! TdbSetCurrTool( sTool) || - ! TdbGetCurrToolParam( TPA_EXIT, nTdbExit) || - nExit != nTdbExit) { - string sErr = sTool + " (exit mismatch " + ToString( nExit) + " - " + ToString( nTdbExit) + ")" ; - vsErrors.push_back( sErr) ; + ! TdbGetCurrToolParam( TPA_HEAD, sTdbHead) || + ! TdbGetCurrToolParam( TPA_EXIT, nTdbExit)) { + string sErr = sTcPos + " - " + sTool + " (not found in Tool DB)" ; + if ( find( vsErrors.begin(), vsErrors.end(), sErr) == vsErrors.end()) + vsErrors.push_back( sErr) ; + } + else if ( sHead != sTdbHead && ( GetCurrMachine() == nullptr || ! GetCurrMachine()->GetUseTcPosHead())) { + string sErr = sTcPos + " - " + sTool + " (head mismatch " + sHead + " - " + sTdbHead + ")" ; + if ( find( vsErrors.begin(), vsErrors.end(), sErr) == vsErrors.end()) + vsErrors.push_back( sErr) ; + } + else if ( nExit != nTdbExit) { + string sErr = sTcPos + " - " + sTool + " (exit mismatch " + ToString( nExit) + " - " + ToString( nTdbExit) + ")" ; + if ( find( vsErrors.begin(), vsErrors.end(), sErr) == vsErrors.end()) + vsErrors.push_back( sErr) ; } } } diff --git a/Machine.cpp b/Machine.cpp index 2c66870..cad7566 100644 --- a/Machine.cpp +++ b/Machine.cpp @@ -45,6 +45,7 @@ Machine::Machine( void) m_nMultiProcess = 0 ; m_nLinkAxesMoveOrder = 0 ; m_nNewLinkMgr = 0 ; + m_nUseTcPosHead = 0 ; m_nCalcTabId = GDB_ID_NULL ; m_nCalcHeadId = GDB_ID_NULL ; m_nCalcExitId = GDB_ID_NULL ; diff --git a/Machine.h b/Machine.h index b510b64..e7d296b 100644 --- a/Machine.h +++ b/Machine.h @@ -92,6 +92,8 @@ class Machine { return m_nLinkAxesMoveOrder ; } bool GetNewLinkMgr( int nOpt = 1) const { return ( m_nNewLinkMgr >= nOpt || m_nCalcChainType == KIN_CHAIN_ROBOT) ; } + bool GetUseTcPosHead( void) const + { return ( m_nUseTcPosHead != 0) ; } bool LoadTool( const std::string& sHead, int nExit, const std::string& sTool) ; bool GetLoadedTool( const std::string& sHead, int nExit, std::string& sTool) const ; bool UnloadTool( const std::string& sHead, int nExit) ; @@ -318,6 +320,7 @@ class Machine int m_nMultiProcess ; // codice di macchina multi-processo (con stima speciale e simulazione ad hoc) int m_nLinkAxesMoveOrder ; // codice ordine interpolazione assi nei collegamenti (0=interpolati, ...) int m_nNewLinkMgr ; // codice del nuovo gestore link tra lavorazioni (0=vecchio, 1=nuovo) + int m_nUseTcPosHead ; // imposto codice per utilizzo Head da posizione TC (0=no, 1=si) INTVECTOR m_vLinkedRawParts ; // elenco dei grezzi agganciati a gruppi della macchina INTVECTOR m_vLinkedFixtures ; // elenco dei bloccaggi agganciati a gruppi della macchina INTVECTOR m_vLinkedParts ; // elenco dei pezzi agganciati a gruppi della macchina diff --git a/MachineLua.cpp b/MachineLua.cpp index 4d48808..da8e463 100644 --- a/MachineLua.cpp +++ b/MachineLua.cpp @@ -39,6 +39,7 @@ static const string FLD_ANGDELTAMINFORHOME = "AngDeltaMinForHome" ; static const string FLD_MULTIPROCESS = "MultiProcess" ; static const string FLD_LINKAXESMOVEORDER = "LinkAxesMoveOrder" ; static const string FLD_NEWLINKMGR = "NewLinkMgr" ; +static const string FLD_USETCPOSHEAD = "UseTcPosHead" ; static const string FLD_NAME = "Name" ; static const string FLD_PARENT = "Parent" ; static const string FLD_GEO = "Geo" ; @@ -368,9 +369,12 @@ Machine::LuaEmtGeneral( lua_State* L) // lettura eventuale campo "LinkAxesMoveOrder" dalla tabella(0=interpolati, ...) int nLinkAxesMoveOrder = 0 ; LuaGetTabFieldParam( L, 1, FLD_LINKAXESMOVEORDER, nLinkAxesMoveOrder) ; - // lettura eventuale campo 'NewLinkMgr' dalla tabella (0=old, 1 =new) + // lettura eventuale campo 'NewLinkMgr' dalla tabella (0=old, 1=new) int nNewLinkMgr = 0 ; LuaGetTabFieldParam( L, 1, FLD_NEWLINKMGR, nNewLinkMgr) ; + // lettura eventuale campo "UseTcPosHead" dalla tabella (0=no, 1=si) + int nUseTcPosHead = 0 ; + LuaGetTabFieldParam( L, 1, FLD_USETCPOSHEAD, nUseTcPosHead) ; // pulizia stack LuaClearStack( L) ; @@ -427,6 +431,8 @@ Machine::LuaEmtGeneral( lua_State* L) m_pMchLua->m_nLinkAxesMoveOrder = nLinkAxesMoveOrder ; // imposto codice per gestione link tra lavorazioni m_pMchLua->m_nNewLinkMgr = nNewLinkMgr ; + // imposto codice per utilizzo Head da posizione TC + m_pMchLua->m_nUseTcPosHead = nUseTcPosHead ; return 0 ; }