diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index d782996..2f1b2ba 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ 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