EgtMachKernel 1.8f7 :
- migliorie alle risalite in Z per evitare collisioni.
This commit is contained in:
+18
-13
@@ -1122,10 +1122,11 @@ Operation::AdjustStartEndMovements( void)
|
||||
return false ;
|
||||
bool bPartRise = false ;
|
||||
double dSafeZ = dHomeZ ;
|
||||
double dUnsafeZ = max( vAxVal[2], vAxIni[2]) ;
|
||||
DBLVECTOR vAxVal2 = vAxVal ;
|
||||
DBLVECTOR vAxIni2 = vAxIni ;
|
||||
for ( int i = 1 ; i <= 3 ; ++ i) {
|
||||
double dTestSafeZ = ( max( vAxVal[2], vAxIni[2]) + dSafeZ) / 2 ;
|
||||
for ( int i = 1 ; i <= 4 ; ++ i) {
|
||||
double dTestSafeZ = ( dUnsafeZ + dSafeZ) / 2 ;
|
||||
vAxVal2[2] = dTestSafeZ ;
|
||||
vAxIni2[2] = dTestSafeZ ;
|
||||
if ( TestCollisionAvoid( vAxVal2, vAxIni2)) {
|
||||
@@ -1133,9 +1134,7 @@ Operation::AdjustStartEndMovements( void)
|
||||
dSafeZ = dTestSafeZ ;
|
||||
}
|
||||
else {
|
||||
vAxVal2[2] = dSafeZ ;
|
||||
vAxIni2[2] = dSafeZ ;
|
||||
break ;
|
||||
dUnsafeZ = dTestSafeZ ;
|
||||
}
|
||||
}
|
||||
if ( ! bPartRise) {
|
||||
@@ -1227,8 +1226,7 @@ Operation::AdjustOneStartMovement( int nClPathId, const DBLVECTOR& vAxPrev, bool
|
||||
if ( pCamData == nullptr)
|
||||
return false ;
|
||||
// recupero i valori degli assi
|
||||
DBLVECTOR vAxCurr ;
|
||||
vAxCurr = pCamData->GetAxesVal() ;
|
||||
DBLVECTOR vAxCurr = pCamData->GetAxesVal() ;
|
||||
// se provengo da Z massima
|
||||
if ( bMaxZ) {
|
||||
// copio l'entità
|
||||
@@ -1267,10 +1265,17 @@ Operation::AdjustOneStartMovement( int nClPathId, const DBLVECTOR& vAxPrev, bool
|
||||
if ( ! m_pMchMgr->GetCurrAxisHomePos( 2, dHomeZ))
|
||||
return false ;
|
||||
// riprovo con una Z intermedia
|
||||
double dSafeZ = ( dTopZ + dHomeZ) / 2 ;
|
||||
vAxPrevTmp[2] = dSafeZ ;
|
||||
vAxCurrTmp[2] = dSafeZ ;
|
||||
bool bSafeOk = TestCollisionAvoid( vAxPrevTmp, vAxCurrTmp) ;
|
||||
double dSafeZ = dHomeZ ;
|
||||
double dUnsafeZ = dTopZ ;
|
||||
for ( int i = 1 ; i <= 4 ; ++ i) {
|
||||
double dTestSafeZ = ( dUnsafeZ + dSafeZ) / 2 ;
|
||||
vAxPrevTmp[2] = dTestSafeZ ;
|
||||
vAxCurrTmp[2] = dTestSafeZ ;
|
||||
if ( TestCollisionAvoid( vAxPrevTmp, vAxCurrTmp))
|
||||
dSafeZ = dTestSafeZ ;
|
||||
else
|
||||
dUnsafeZ = dTestSafeZ ;
|
||||
}
|
||||
// risalita sopra fine percorso precedente
|
||||
// copio l'entità
|
||||
int nNew1Id = m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_BEFORE) ;
|
||||
@@ -1280,7 +1285,7 @@ Operation::AdjustOneStartMovement( int nClPathId, const DBLVECTOR& vAxPrev, bool
|
||||
// modifico questa entità
|
||||
m_pGeomDB->SetName( nNew1Id, MCH_CL_CLIMB) ;
|
||||
DBLVECTOR vAxNew1 = vAxPrev ;
|
||||
vAxNew1[2] = ( bSafeOk ? dSafeZ : dHomeZ) ;
|
||||
vAxNew1[2] = dSafeZ ;
|
||||
int nMask = CamData::MSK_L3 ;
|
||||
// eventuali aggiustamenti speciali dipendenti dalla macchina
|
||||
Vector3d vtTool = pNew1CamData->GetToolDir() ;
|
||||
@@ -1317,7 +1322,7 @@ Operation::AdjustOneStartMovement( int nClPathId, const DBLVECTOR& vAxPrev, bool
|
||||
// la modifico
|
||||
m_pGeomDB->SetName( nNew2Id, MCH_CL_CLIMB) ;
|
||||
DBLVECTOR vAxNew2 = vAxCurr ;
|
||||
vAxNew2[2] = ( bSafeOk ? dSafeZ : dHomeZ) ;
|
||||
vAxNew2[2] = dSafeZ ;
|
||||
pNew2CamData->SetAxes( CamData::AS_OK, vAxNew2) ;
|
||||
pNew2CamData->ChangeAxesMask( CamData::MSK_L1 | CamData::MSK_L2 | CamData::MSK_R1 | CamData::MSK_R2 | CamData::MSK_R3) ;
|
||||
pNew2CamData->SetFlag( 2) ;
|
||||
|
||||
Reference in New Issue
Block a user