diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 69591e1..a8e5e83 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/Operation.cpp b/Operation.cpp index 8f642c2..6457bda 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -2345,9 +2345,10 @@ Operation::TestCollisionAvoid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEn INTVECTOR vCollId ; pMch->GetCurrHeadCollGroups( vCollId) ; // distanza di sicurezza + const double TOL_SAFEDIST = 10.0 ; const double MIN_SAFEDIST = 10.0 ; double dSafeDist = m_pMchMgr->GetCurrMachiningsMgr()->GetSafeZ() ; - dSafeDist = min( dSafeDist, max( 0.5 * dSafeDist, MIN_SAFEDIST)) ; + dSafeDist = max( dSafeDist - TOL_SAFEDIST, MIN_SAFEDIST) ; // Vado nelle posizioni da controllare const int COLL_STEP = 16 ; bool bCollide = false ; diff --git a/Sawing.cpp b/Sawing.cpp index b1039e2..65d8354 100644 --- a/Sawing.cpp +++ b/Sawing.cpp @@ -2022,10 +2022,8 @@ Sawing::GenerateLineCl( const ICurveLine* pLine, const Vector3d& vtTool, const V SetCorrAuxDir( vtCorr) ; // recupero distanza di sicurezza double dSafeZ = m_pMchMgr->GetCurrMachiningsMgr()->GetSafeZ() ; - // lunghezza di approccio/retrazione + // distanza di approccio/retrazione double dAppr = m_Params.m_dStartPos ; - if ( abs( m_Params.m_dSideAngle) > EPS_ANG_SMALL) - dAppr /= cos( m_Params.m_dSideAngle * DEGTORAD) ; // valori di step double dActStep = m_Params.m_dStep ; double dActBstep = GetStepBack() ; @@ -2195,12 +2193,12 @@ Sawing::GenerateLineCl( const ICurveLine* pLine, const Vector3d& vtTool, const V if ( i != 0) { // movimento di risalita sopra il punto finale SetFeed( GetEndFeed()) ; - Point3d ptP4 = pLine->GetEnd() + vtCorr * ( dElev + dAppr) ; + Point3d ptP4 = pLine->GetEnd() + vtCorr * ( dElev + dAppr / vtCorr.z) ; if ( AddLinearMove( ptP4) == GDB_ID_NULL) return false ; // movimento di ritorno spora il punto iniziale SetFeed( GetEndFeed()) ; - Point3d ptP5 = pLine->GetStart() + vtCorr * ( dElev + dAppr) ; + Point3d ptP5 = pLine->GetStart() + vtCorr * ( dElev + dAppr / vtCorr.z) ; if ( AddLinearMove( ptP5) == GDB_ID_NULL) return false ; } @@ -2966,10 +2964,10 @@ Sawing::GenerateExtCurveCl( const ICurveComposite* pCrv, // ricavo punto di risalita e punto iniziale Point3d ptP4 ; pCrv->GetEndPoint( ptP4) ; - ptP4 += vtEndCorr * ( dElev + dAppr) ; + ptP4 += vtEndCorr * ( dElev + dAppr / vtEndCorr.z) ; Point3d ptP5 ; pCrv->GetStartPoint( ptP5) ; - ptP5 += vtStaCorr * ( dElev + dAppr) ; + ptP5 += vtStaCorr * ( dElev + dAppr / vtStaCorr.z) ; // se sono diversi o le direzioni utensile sono diverse if ( ! AreSamePointApprox( ptP4, ptP5) || ! AreSameVectorApprox( vtEndTool, vtStaTool)) {