diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 9436fca..43a3846 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/GeoCalc.cpp b/GeoCalc.cpp index 3055488..a7d583b 100644 --- a/GeoCalc.cpp +++ b/GeoCalc.cpp @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2015-2015 +// EgalTech 2015-2026 //---------------------------------------------------------------------------- -// File : GeoCalc.cpp Data : 12.05.15 Versione : 1.6e3 +// File : GeoCalc.cpp Data : 08.05.26 Versione : 3.1e2 // Contenuto : Funzioni varie e speciali di calcolo geometrico. // // @@ -14,6 +14,7 @@ //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "GeoCalc.h" +#include "\EgtDev\Include\EGkAngle.h" //---------------------------------------------------------------------------- int @@ -86,6 +87,10 @@ GetRotationComponent( const Vector3d& vtDir1, double dComp, const Vector3d& vtDi double dDeltaAngRad = acos( dNumer / dDenom) ; dAng1Deg = ( dOffsAngRad + dDeltaAngRad) * RADTODEG ; dAng2Deg = ( dOffsAngRad - dDeltaAngRad) * RADTODEG ; + if ( abs( dAng1Deg) <= abs( dAng2Deg)) + dAng2Deg = AngleNearAngle( dAng2Deg, dAng1Deg) ; + else + dAng1Deg = AngleNearAngle( dAng1Deg, dAng2Deg) ; bDet = true ; return 2 ; } diff --git a/Operation.cpp b/Operation.cpp index 225aea7..b9d5bbe 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -2497,13 +2497,14 @@ Operation::CalculateMcentRotAxesValues( bool bFirst, const Vector3d& vtTool, con dDelta1 += abs( vAng1[i] - vAxRotPrec[i]) * ( bFirst ? pMachine->GetCurrRot1W() : 1) ; dDelta2 += abs( vAng2[i] - vAxRotPrec[i]) * ( bFirst ? pMachine->GetCurrRot1W() : 1) ; } - if ( bAng2 && ( dDelta2 < dDelta1 - EPS_ANG_SMALL || ! bAng1)) + if ( bAng2 && ( dDelta2 < dDelta1 - 10 * EPS_ANG_SMALL || ! bAng1)) swap( vAng1, vAng2) ; // se imposto limite su variazione di secondo asse rotante if ( ( pMachine->GetCurrCalcMaxDeltaR2OnFirst() || ! bFirst) && dMaxDeltaR2 > EPS_ANG_SMALL && vAng1.size() >= 2) { - double dR2Diff1 = vAng1[1] - vAxRotPrec[1] ; - double dR2Diff2 = vAng2[1] - vAxRotPrec[1] ; - if ( abs( dR2Diff1) > abs( dR2Diff2) && abs( dR2Diff1) > dMaxDeltaR2) + double dR2Diff1 = abs( vAng1[1] - vAxRotPrec[1]) ; + double dR2Diff2 = abs( vAng2[1] - vAxRotPrec[1]) ; + if ( dR2Diff1 > dR2Diff2 + 10 * EPS_ANG_SMALL && + dR2Diff1 > dMaxDeltaR2 && ( dR2Diff2 < dMaxDeltaR2 || dR2Diff2 < dR2Diff1 - dMaxDeltaR2)) swap( vAng1, vAng2) ; } }