EgtGeomKernel :
- in Zmap prime modifiche/migliorie al movimento 5 assi.
This commit is contained in:
+22
-26
@@ -505,6 +505,7 @@ VolZmap::MillingStep( const Point3d& ptPs, const Vector3d& vtDs, const Vector3d&
|
||||
if ( vtAs.IsSmall() || vtAe.IsSmall())
|
||||
return false ;
|
||||
}
|
||||
|
||||
// Reset numero di parti
|
||||
m_nConnectedCompoCount = - 1 ;
|
||||
|
||||
@@ -538,35 +539,30 @@ bool
|
||||
VolZmap::MillingGeneralMotionStep( const Point3d& ptPs, const Vector3d& vtDs, const Vector3d& vtAs,
|
||||
const Point3d& ptPe, const Vector3d& vtDe, const Vector3d& vtAe)
|
||||
{
|
||||
// Ciclo sulle mappe
|
||||
double dAngDeg ;
|
||||
vtDs.GetAngle( vtDe, dAngDeg) ;
|
||||
int nNumSubStep = int( abs( dAngDeg) / 0.5) ;
|
||||
Vector3d vtMove = ptPe - ptPs ;
|
||||
double dLenPath = vtMove.Len() ;
|
||||
double dDeltaLen = dLenPath / nNumSubStep ;
|
||||
vtMove /= dLenPath ;
|
||||
bool bSuccessful = true ;
|
||||
for ( int n = 0 ; n < nNumSubStep + 1 && bSuccessful ; ++ n) {
|
||||
double dPathSt = 0 ;
|
||||
double dPathEn = 0.5 * dDeltaLen ;
|
||||
if ( n == nNumSubStep) {
|
||||
dPathSt = ( n - 0.5) * dDeltaLen ;
|
||||
dPathEn = n * dDeltaLen ;
|
||||
// Divido il movimento in tratti con direzione utensile costante
|
||||
const double ANG_STEP = 0.5 ;
|
||||
double dAngDeg ; vtDs.GetAngle( vtDe, dAngDeg) ;
|
||||
int nStepCnt = int( abs( dAngDeg) / ANG_STEP) + 1 ;
|
||||
bool bOk = true ;
|
||||
Point3d ptSt = ptPs ;
|
||||
for ( int i = 0 ; i <= nStepCnt && bOk ; ++ i) {
|
||||
double dPosCoeff, dDirCoeff ;
|
||||
if ( i < nStepCnt) {
|
||||
dPosCoeff = ( i + 0.5) / nStepCnt ;
|
||||
dDirCoeff = double( i) / nStepCnt ;
|
||||
}
|
||||
else if ( n > 0) {
|
||||
dPathSt = ( n - 0.5) * dDeltaLen ;
|
||||
dPathEn = ( n + 0.5) * dDeltaLen ;
|
||||
else {
|
||||
dPosCoeff = 1 ;
|
||||
dDirCoeff = 1 ;
|
||||
}
|
||||
Point3d ptSt = ptPs + dPathSt * vtMove ;
|
||||
Point3d ptEn = ptPs + dPathEn * vtMove ;
|
||||
Vector3d vtD = ( dLenPath - dPathSt) * vtDs + dPathSt * vtDe ;
|
||||
vtD.Normalize() ;
|
||||
Vector3d vtA = ( dLenPath - dPathSt) * vtAs + dPathSt * vtAe ;
|
||||
vtA.Normalize() ;
|
||||
bSuccessful = bSuccessful && MillingTranslationStep( ptSt, ptEn, vtD, vtA) ;
|
||||
Point3d ptEn = Media( ptPs, ptPe, dPosCoeff) ;
|
||||
Vector3d vtD = Media( vtDs, vtDe, dDirCoeff) ; vtD.Normalize() ;
|
||||
Vector3d vtA = Media( vtAs, vtAe, dDirCoeff) ; vtA.Normalize() ;
|
||||
bOk = bOk && MillingTranslationStep( ptSt, ptEn, vtD, vtA) ;
|
||||
// aggiorno prossimo inizio
|
||||
ptSt = ptEn ;
|
||||
}
|
||||
return bSuccessful ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user