From 1ba62546b0ef6e5a58c076d200293be4ebbff98e Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Thu, 12 Mar 2026 18:20:36 +0100 Subject: [PATCH] =?UTF-8?q?EgtMachKernel=203.1c5=20:=20-=20in=20Operation?= =?UTF-8?q?=20corretta=20assegnazione=20entit=C3=A0/camData=20con=20Info?= =?UTF-8?q?=20per=20funzione=20AdjustOneStartEndMovement.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EgtMachKernel.rc | Bin 11774 -> 11774 bytes Operation.cpp | 52 ++++++++++++++++++++++++++++++++--------------- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 682f6d3d2f3efe1626a5a38765ee6ce05ec7b300..17238aec31875138229ad15e550eef06860a01c5 100644 GIT binary patch delta 81 zcmewt{V#gMH#SDo&F|$dGEF|gnFC}RN|iEhUd8Rf3>J0-QHDw&Az`QxlFGd-$coN# F0{{Z>9M}K= delta 81 zcmewt{V#gMH#SC-&F|$dGEF|gnFC}RN|iEhUd8Rf3>J0-QHDw&Az`QxlFGd-$coN# F0{{WW9MAv& diff --git a/Operation.cpp b/Operation.cpp index fa70a3a..53ab9c2 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -3589,7 +3589,12 @@ Operation::AdjustOneStartEndMovement( int nClPathId, int nPrevClPathId, Operatio // se centro di lavoro if ( m_pMchMgr->GetCurrIsMcent()) { // copio l'entità - if ( m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_AFTER) == GDB_ID_NULL) + int nNewEntId = m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_BEFORE) ; + if ( nNewEntId == GDB_ID_NULL) + return false ; + // aggiorno il CamData + pCamData = GetCamData( m_pGeomDB->GetUserObj( nNewEntId)) ; + if ( pCamData == nullptr) return false ; // recupero HomeZ double dHomeZ ; @@ -3605,9 +3610,9 @@ Operation::AdjustOneStartEndMovement( int nClPathId, int nPrevClPathId, Operatio if ( abs( dExtraZ) > EPS_SMALL) dHomeZ += dExtraZ ; } - // modifico quella originale (è la prima del percorso) - m_pGeomDB->SetName( nEntId, MCH_CL_CLIMB) ; - m_pGeomDB->RemoveInfo( nEntId, KEY_CL_DOUBLE) ; + // modifico quella copiata (è la prima del percorso) + m_pGeomDB->SetName( nNewEntId, MCH_CL_CLIMB) ; + m_pGeomDB->RemoveInfo( nNewEntId, KEY_CL_DOUBLE) ; DBLVECTOR vAxNew = vAxCurr ; vAxNew[2] = dHomeZ ; int nFlagNew = 2 ; @@ -3714,11 +3719,16 @@ Operation::AdjustOneStartEndMovement( int nClPathId, int nPrevClPathId, Operatio return false ; } // aggiungo posizione elevata prima dell'inizio del percorso corrente - if ( m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_AFTER) == GDB_ID_NULL) + int nNewEntId = m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_BEFORE) ; + if ( nNewEntId == GDB_ID_NULL) return false ; - // modifico l'entità originale (è la prima del percorso) - m_pGeomDB->SetName( nEntId, MCH_CL_CLIMB) ; - m_pGeomDB->RemoveInfo( nEntId, KEY_CL_DOUBLE) ; + // aggiorno il CamData + pCamData = GetCamData( m_pGeomDB->GetUserObj( nNewEntId)) ; + if ( pCamData == nullptr) + return false ; + // modifico l'entità copiata (è la prima del percorso) + m_pGeomDB->SetName( nNewEntId, MCH_CL_CLIMB) ; + m_pGeomDB->RemoveInfo( nNewEntId, KEY_CL_DOUBLE) ; DBLVECTOR vAxNew = vAxCurr ; vAxNew[2] = vAxNew1[2] ; int nFlagNew = 2 ; @@ -3783,11 +3793,16 @@ Operation::AdjustOneStartEndMovement( int nClPathId, int nPrevClPathId, Operatio // altrimenti Z corrente minore della precedente else { // aggiungo posizione elevata prima dell'inizio del percorso corrente - if ( m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_AFTER) == GDB_ID_NULL) + int nNewEntId = m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_BEFORE) ; + if ( nNewEntId == GDB_ID_NULL) return false ; - // modifico l'entità originale (è la prima del percorso) - m_pGeomDB->SetName( nEntId, MCH_CL_CLIMB) ; - m_pGeomDB->RemoveInfo( nEntId, KEY_CL_DOUBLE) ; + // aggiorno il CamData + pCamData = GetCamData( m_pGeomDB->GetUserObj( nNewEntId)) ; + if ( pCamData == nullptr) + return false ; + // modifico l'entità copiata (è la prima del percorso) + m_pGeomDB->SetName( nNewEntId, MCH_CL_CLIMB) ; + m_pGeomDB->RemoveInfo( nNewEntId, KEY_CL_DOUBLE) ; DBLVECTOR vAxNew = vAxCurr ; vAxNew[2] = vAxPrev[2] ; int nFlagNew = 2 ; @@ -3822,11 +3837,16 @@ Operation::AdjustOneStartEndMovement( int nClPathId, int nPrevClPathId, Operatio if ( nLKAMO == LKAMO_HEAD_BEFORE || nLKAMO == LKAMO_HEAD_AFTER) { // aggiungo prima della corrente nEntId = m_pGeomDB->GetFirstInGroup( nClPathId) ; - if ( m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_AFTER) == GDB_ID_NULL) + int nNewEntId = m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_BEFORE) ; + if ( nNewEntId == GDB_ID_NULL) return false ; - // modifico l'entità originale (è la prima del percorso) - m_pGeomDB->SetName( nEntId, MCH_CL_CLIMB) ; - m_pGeomDB->RemoveInfo( nEntId, KEY_CL_DOUBLE) ; + // aggiorno il CamData + pCamData = GetCamData( m_pGeomDB->GetUserObj( nNewEntId)) ; + if ( pCamData == nullptr) + return false ; + // modifico l'entità copiata (è la prima del percorso) + m_pGeomDB->SetName( nNewEntId, MCH_CL_CLIMB) ; + m_pGeomDB->RemoveInfo( nNewEntId, KEY_CL_DOUBLE) ; DBLVECTOR vAxNew = pCamData->GetAxesVal() ; for ( int i = 0 ; i < 2 ; ++ i) { bool bLinear, bHead ; pMch->GetCurrAxisType( i, bLinear, bHead) ;