EgtGeomKernel :

- in Zmap prime modifiche/migliorie al movimento 5 assi.
This commit is contained in:
Dario Sassi
2020-10-05 17:42:32 +00:00
parent 94a7f51513
commit 51b9263f69
+22 -26
View File
@@ -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 ;
}
//----------------------------------------------------------------------------