EgtMachKernel 2.3i4 :
- migliorato controllo risalita tra percorsi di lavorazione e migliorata assegnazione Flag2 (se 1 allora a MaxZ).
This commit is contained in:
+27
-11
@@ -2042,17 +2042,33 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation*
|
||||
double dHomeZ ;
|
||||
if ( ! m_pMchMgr->GetCurrAxisHomePos( 2, dHomeZ))
|
||||
return false ;
|
||||
// riprovo con una Z intermedia
|
||||
bool bPartRise = false ;
|
||||
double dSafeZ = dHomeZ ;
|
||||
double dUnsafeZ = dTopZ ;
|
||||
for ( int i = 1 ; i <= 3 ; ++ i) {
|
||||
double dTestSafeZ = ( dUnsafeZ + dSafeZ) / 2 ;
|
||||
vAxPrevTmp[2] = dTestSafeZ ;
|
||||
vAxCurrTmp[2] = dTestSafeZ ;
|
||||
if ( ! bForcedZMax && TestCollisionAvoid( vAxPrevTmp, vAxCurrTmp))
|
||||
dSafeZ = dTestSafeZ ;
|
||||
else
|
||||
dUnsafeZ = dTestSafeZ ;
|
||||
// se non forzata Zmax
|
||||
if ( ! bForcedZMax) {
|
||||
// riprovo con una Z intermedia
|
||||
double dUnsafeZ = dTopZ ;
|
||||
for ( int i = 1 ; i <= 3 ; ++ i) {
|
||||
double dTestSafeZ = ( dUnsafeZ + dSafeZ) / 2 ;
|
||||
vAxPrevTmp[2] = dTestSafeZ ;
|
||||
vAxCurrTmp[2] = dTestSafeZ ;
|
||||
if ( TestCollisionAvoid( vAxPrevTmp, vAxCurrTmp)) {
|
||||
bPartRise = true ;
|
||||
dSafeZ = dTestSafeZ ;
|
||||
}
|
||||
else
|
||||
dUnsafeZ = dTestSafeZ ;
|
||||
}
|
||||
// se necessario, riprovo appena prima di Zmax
|
||||
if ( ! bPartRise) {
|
||||
double dOffsZ = 5 * ( bZHomeDown ? 1 : -1) ;
|
||||
vAxPrevTmp[2] = dHomeZ + dOffsZ ;
|
||||
vAxCurrTmp[2] = dHomeZ + dOffsZ ;
|
||||
if ( TestCollisionAvoid( vAxPrevTmp, vAxCurrTmp)) {
|
||||
bPartRise = true ;
|
||||
dSafeZ = dHomeZ + dOffsZ ;
|
||||
}
|
||||
}
|
||||
}
|
||||
// risalita sopra fine percorso precedente
|
||||
DBLVECTOR vAxNew1 ;
|
||||
@@ -2074,7 +2090,7 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation*
|
||||
DBLVECTOR vAxNew = vAxCurr ;
|
||||
vAxNew[2] = vAxNew1[2] ;
|
||||
int nFlagNew = 2 ;
|
||||
int nFlag2New = 1 ;
|
||||
int nFlag2New = ( bPartRise ? 0 : 1) ;
|
||||
// eventuali aggiustamenti speciali dipendenti dalla macchina
|
||||
Vector3d vtTool = pCamData->GetToolDir() ;
|
||||
DBLVECTOR vAxTmp = vAxNew ;
|
||||
|
||||
Reference in New Issue
Block a user