EgtMachKernel 2.3i4 :

- migliorato controllo risalita tra percorsi di lavorazione e migliorata assegnazione Flag2 (se 1 allora a MaxZ).
This commit is contained in:
DarioS
2021-09-09 15:49:08 +02:00
parent 0c3ad1ebe5
commit 01cb04ac96
2 changed files with 27 additions and 11 deletions
+27 -11
View File
@@ -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 ;