From caf2176a3c9dbd7e829350e1cf339c4d304c49c5 Mon Sep 17 00:00:00 2001 From: DarioS Date: Wed, 9 Nov 2022 13:14:22 +0100 Subject: [PATCH] EgtMachKernel 2.4k3 : - aggiunto ricalcolo di AuxDir (se necessario) dopo modifiche di SpecialMoveZup. --- EgtMachKernel.rc | Bin 11782 -> 11782 bytes Operation.cpp | 40 +++++++++++++++++++++++++++++++--------- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index d782996e4f7bbfd3fe0be593ea8350bff83c4fd3..2f1b2baf620b021a18ded30002ed32880e46ac63 100644 GIT binary patch delta 97 zcmZpRX^YwLhmFyA^ItYwW=7-5j>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHPhB8F delta 97 zcmZpRX^YwLhmFx_^ItYwW=5mQj>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHP01iS diff --git a/Operation.cpp b/Operation.cpp index 7e6ebc8..8434022 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -2260,6 +2260,12 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation* if ( bModif) { vAxNew = vAxTmp ; pCamData->SetToolDir( vtTool) ; + Vector3d vtAux = pCamData->GetAuxDir() ; + if ( ! vtAux.IsSmall()) { + DBLVECTOR vAng( vAxNew.begin() + 3, vAxNew.end()) ; + if ( m_pMchMgr->GetCalcAuxDirFromAngles( vAng, vtAux)) + pCamData->SetAuxDir( vtAux) ; + } nFlagNew = nFlagTmp ; nFlag2New = nFlag2Tmp ; } @@ -2340,16 +2346,22 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation* int nFlagNew = 2 ; int nFlag2New = ( bPartRise ? 0 : 1) ; // eventuali aggiustamenti speciali dipendenti dalla macchina - Vector3d vtTool = pCamData->GetToolDir() ; DBLVECTOR vAxTmp = vAxNew ; + Vector3d vtTool = pCamData->GetToolDir() ; int nFlagTmp = nFlagNew ; int nFlag2Tmp = nFlag2New ; bool bModif ; if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, nFlag2Tmp, bModif)) return false ; if ( bModif) { - pCamData->SetToolDir( vtTool) ; vAxNew = vAxTmp ; + pCamData->SetToolDir( vtTool) ; + Vector3d vtAux = pCamData->GetAuxDir() ; + if ( ! vtAux.IsSmall()) { + DBLVECTOR vAng( vAxNew.begin() + 3, vAxNew.end()) ; + if ( m_pMchMgr->GetCalcAuxDirFromAngles( vAng, vtAux)) + pCamData->SetAuxDir( vtAux) ; + } nFlagNew = nFlagTmp ; nFlag2New = nFlag2Tmp ; } @@ -2388,16 +2400,22 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation* int nFlagNew = 2 ; int nFlag2New = 0 ; // eventuali aggiustamenti speciali dipendenti dalla macchina - Vector3d vtTool = pCamData->GetToolDir() ; DBLVECTOR vAxTmp = vAxNew ; + Vector3d vtTool = pCamData->GetToolDir() ; int nFlagTmp = nFlagNew ; int nFlag2Tmp = nFlag2New ; bool bModif ; if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, nFlag2Tmp, bModif)) return false ; if ( bModif) { - pCamData->SetToolDir( vtTool) ; vAxNew = vAxTmp ; + pCamData->SetToolDir( vtTool) ; + Vector3d vtAux = pCamData->GetAuxDir() ; + if ( ! vtAux.IsSmall()) { + DBLVECTOR vAng( vAxNew.begin() + 3, vAxNew.end()) ; + if ( m_pMchMgr->GetCalcAuxDirFromAngles( vAng, vtAux)) + pCamData->SetAuxDir( vtAux) ; + } nFlagNew = nFlagTmp ; nFlag2New = nFlag2Tmp ; } @@ -2520,16 +2538,22 @@ Operation::AddRise( DBLVECTOR& vAxVal, double dDelta, int nClPathId, bool bZHome nFlag2 = 1 ; } // eventuale aggiustamenti speciali dipendenti dalla macchina - Vector3d vtTool = pCam->GetToolDir() ; DBLVECTOR vAxTmp = vAxVal ; + Vector3d vtTool = pCam->GetToolDir() ; int nFlagTmp = nFlag ; int nFlag2Tmp = nFlag2 ; bool bModif ; if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, nFlag2Tmp, bModif)) return false ; if ( bModif) { - pCam->SetToolDir( vtTool) ; vAxVal = vAxTmp ; + pCam->SetToolDir( vtTool) ; + Vector3d vtAux = pCam->GetAuxDir() ; + if ( ! vtAux.IsSmall()) { + DBLVECTOR vAng( vAxVal.begin() + 3, vAxVal.end()) ; + if ( m_pMchMgr->GetCalcAuxDirFromAngles( vAng, vtAux)) + pCam->SetAuxDir( vtAux) ; + } nFlag = nFlagTmp ; nFlag2 = nFlag2Tmp ; } @@ -2537,9 +2561,7 @@ Operation::AddRise( DBLVECTOR& vAxVal, double dDelta, int nClPathId, bool bZHome double dL1 = vAxVal[0] ; double dL2 = vAxVal[1] ; double dL3 = vAxVal[2] ; - DBLVECTOR vAng ; - for ( int i = 0 ; i < int( vAxVal.size()) - 3 ; ++ i) - vAng.emplace_back( vAxVal[i+3]) ; + DBLVECTOR vAng( vAxVal.begin() + 3, vAxVal.end()) ; int nStat ; bool bOk = ( m_pMchMgr->VerifyOutstroke( dL1, dL2, dL3, vAng, false, nStat) && nStat == 0) ; // assegno i dati