EgtMachKernel :
- SpecialMoveZup ora può modificare Flag.
This commit is contained in:
+25
-16
@@ -1779,7 +1779,7 @@ Operation::AdjustStartEndMovements( bool bVerifyPreviousLink)
|
||||
// cancello eventuale risalita parziale della lavorazione precedente
|
||||
pPrevOp->RemoveRise() ;
|
||||
// aggiungo risalita a Zmax
|
||||
if ( ! pPrevOp->AddRise( vAxVal, ( bToZmax && false ? -10000 : -1)))
|
||||
if ( ! pPrevOp->AddRise( vAxVal))
|
||||
return false ;
|
||||
// si parte da Z massima
|
||||
bMaxZ = true ;
|
||||
@@ -1948,20 +1948,23 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation*
|
||||
m_pGeomDB->SetName( nEntId, MCH_CL_CLIMB) ;
|
||||
DBLVECTOR vAxNew = vAxCurr ;
|
||||
vAxNew[2] = dHomeZ ;
|
||||
int nFlagNew = 2 ;
|
||||
// eventuali aggiustamenti speciali dipendenti dalla macchina
|
||||
Vector3d vtTool = pCamData->GetToolDir() ;
|
||||
DBLVECTOR vAxTmp = vAxNew ;
|
||||
Vector3d vtTool = pCamData->GetToolDir() ;
|
||||
int nFlagTmp = nFlagNew ;
|
||||
bool bModif ;
|
||||
if ( ! SpecialMoveZup( 2, vtTool, vAxTmp, bModif))
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, bModif))
|
||||
return false ;
|
||||
if ( bModif) {
|
||||
pCamData->SetToolDir( vtTool) ;
|
||||
vAxNew = vAxTmp ;
|
||||
pCamData->SetToolDir( vtTool) ;
|
||||
nFlagNew = nFlagTmp ;
|
||||
}
|
||||
// applico le modifiche (non forzo emissione della Z che è già massima)
|
||||
pCamData->SetAxes( CamData::AS_OK, vAxNew) ;
|
||||
pCamData->ChangeAxesMask( CamData::MSK_L1 | CamData::MSK_L2 | CamData::MSK_R1 | CamData::MSK_R2 | CamData::MSK_R3) ;
|
||||
pCamData->SetFlag( 2) ;
|
||||
pCamData->SetFlag( nFlagNew) ;
|
||||
}
|
||||
// verifico se la testa interferisce con i pezzi o i bloccaggi sulla tavola
|
||||
else {
|
||||
@@ -2011,20 +2014,23 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation*
|
||||
m_pGeomDB->SetName( nEntId, MCH_CL_CLIMB) ;
|
||||
DBLVECTOR vAxNew = vAxCurr ;
|
||||
vAxNew[2] = vAxNew1[2] ;
|
||||
int nFlagNew = 2 ;
|
||||
// eventuali aggiustamenti speciali dipendenti dalla macchina
|
||||
Vector3d vtTool = pCamData->GetToolDir() ;
|
||||
DBLVECTOR vAxTmp = vAxNew ;
|
||||
int nFlagTmp = nFlagNew ;
|
||||
bool bModif ;
|
||||
if ( ! SpecialMoveZup( 2, vtTool, vAxTmp, bModif))
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, bModif))
|
||||
return false ;
|
||||
if ( bModif) {
|
||||
pCamData->SetToolDir( vtTool) ;
|
||||
vAxNew = vAxTmp ;
|
||||
nFlagNew = nFlagTmp ;
|
||||
}
|
||||
// applico le modifiche (non forzo emissione della Z che è già alta)
|
||||
pCamData->SetAxes( CamData::AS_OK, vAxNew) ;
|
||||
pCamData->ChangeAxesMask( CamData::MSK_L1 | CamData::MSK_L2 | CamData::MSK_R1 | CamData::MSK_R2 | CamData::MSK_R3) ;
|
||||
pCamData->SetFlag( 2) ;
|
||||
pCamData->SetFlag( nFlagNew) ;
|
||||
}
|
||||
// altrimenti
|
||||
else {
|
||||
@@ -2034,9 +2040,9 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation*
|
||||
// se Z corrente maggiore della precedente o viceversa se HomeZ sotto
|
||||
else if ( ( ! bZHomeDown && vAxCurr[2] > vAxPrev[2]) ||
|
||||
( bZHomeDown && vAxCurr[2] < vAxPrev[2]) ) {
|
||||
// devo essere sulla stessa lavorazione
|
||||
// se vengo da precedente lavorazione non devo fare alcunché
|
||||
if ( nPrevClPathId == GDB_ID_NULL)
|
||||
return false ;
|
||||
return true ;
|
||||
// aggiungo risalita alla fine del precedente percorso
|
||||
DBLVECTOR vAxNew ;
|
||||
if ( ! AddRise( vAxNew, vAxCurr[2] - vAxPrev[2], nPrevClPathId, bZHomeDown))
|
||||
@@ -2051,20 +2057,23 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation*
|
||||
m_pGeomDB->SetName( nEntId, MCH_CL_CLIMB) ;
|
||||
DBLVECTOR vAxNew = vAxCurr ;
|
||||
vAxNew[2] = vAxPrev[2] ;
|
||||
int nFlagNew = 2 ;
|
||||
// eventuali aggiustamenti speciali dipendenti dalla macchina
|
||||
Vector3d vtTool = pCamData->GetToolDir() ;
|
||||
DBLVECTOR vAxTmp = vAxNew ;
|
||||
int nFlagTmp = nFlagNew ;
|
||||
bool bModif ;
|
||||
if ( ! SpecialMoveZup( 2, vtTool, vAxTmp, bModif))
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, bModif))
|
||||
return false ;
|
||||
if ( bModif) {
|
||||
pCamData->SetToolDir( vtTool) ;
|
||||
vAxNew = vAxTmp ;
|
||||
nFlagNew = nFlagTmp ;
|
||||
}
|
||||
// applico le modifiche (non forzo emissione della Z che è già alta)
|
||||
pCamData->SetAxes( CamData::AS_OK, vAxNew) ;
|
||||
pCamData->ChangeAxesMask( CamData::MSK_L1 | CamData::MSK_L2 | CamData::MSK_R1 | CamData::MSK_R2 | CamData::MSK_R3) ;
|
||||
pCamData->SetFlag( 2) ;
|
||||
pCamData->SetFlag( nFlagNew) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2172,19 +2181,18 @@ Operation::AddRise( DBLVECTOR& vAxVal, double dDelta, int nClPathId, bool bZHome
|
||||
m_pMchMgr->GetAllCurrAxesHomePos( vAxHome) ;
|
||||
vAxVal[2] = vAxHome[2] ;
|
||||
nFlag = 3 ; // movimento a Zmax
|
||||
// !!! PROVA !!!
|
||||
if ( dDelta < -9999)
|
||||
nFlag = 5 ;
|
||||
}
|
||||
// eventuale aggiustamenti speciali dipendenti dalla macchina
|
||||
Vector3d vtTool = pCam->GetToolDir() ;
|
||||
DBLVECTOR vAxTmp = vAxVal ;
|
||||
int nFlagTmp = nFlag ;
|
||||
bool bModif ;
|
||||
if ( ! SpecialMoveZup( nFlag, vtTool, vAxTmp, bModif))
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, bModif))
|
||||
return false ;
|
||||
if ( bModif) {
|
||||
pCam->SetToolDir( vtTool) ;
|
||||
vAxVal = vAxTmp ;
|
||||
nFlag = nFlagTmp ;
|
||||
}
|
||||
// verifico extra-corsa dell'asse Z
|
||||
double dL1 = vAxVal[0] ;
|
||||
@@ -2670,7 +2678,7 @@ Operation::TestCollisionAvoid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEn
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Operation::SpecialMoveZup( int nFlag, Vector3d& vtTool, DBLVECTOR& vAx, bool& bModif)
|
||||
Operation::SpecialMoveZup( DBLVECTOR& vAx, Vector3d& vtTool, int& nFlag, bool& bModif)
|
||||
{
|
||||
// recupero la macchina corrente
|
||||
Machine* pMch = ( m_pMchMgr != nullptr ? m_pMchMgr->GetCurrMachine() : nullptr) ;
|
||||
@@ -2704,6 +2712,7 @@ Operation::SpecialMoveZup( int nFlag, Vector3d& vtTool, DBLVECTOR& vAx, bool& bM
|
||||
// recupero valori parametri obbligatori
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_ERROR, nErr) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_MODIF, bModif) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + GVAR_FLAG, nFlag) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + GVAR_TDIR, vtTool) ;
|
||||
for ( int i = 1 ; i <= nNumAxes ; ++ i)
|
||||
bOk = bOk && pMch->LuaGetGlobVar( GetGlobVarAxisValue( i, EMC_VAR), vAx[i-1]) ;
|
||||
|
||||
+1
-1
@@ -114,7 +114,7 @@ class Operation : public IUserObj
|
||||
bool ForcedZmax( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd) const ;
|
||||
bool GetZHomeDown( void) const ;
|
||||
bool TestCollisionAvoid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd) const ;
|
||||
bool SpecialMoveZup( int nFlag, Vector3d& vtTool, DBLVECTOR& vAx, bool& bModif) ;
|
||||
bool SpecialMoveZup( DBLVECTOR& vAx, Vector3d& vtTool, int& nFlag, bool& bModif) ;
|
||||
bool SpecialMoveRapid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd, DBLVECTOR& vAxNew, bool& bModif) ;
|
||||
|
||||
bool GetAggrBottomData( const std::string& sHead, AggrBottom& agbData) const ;
|
||||
|
||||
Reference in New Issue
Block a user