EgtMachKernel (NewLink) :
- aggiunta gestione ZMax.
This commit is contained in:
+58
-47
@@ -3390,7 +3390,7 @@ Operation::AdjustStartEndMovementsStd( bool bVerifyPreviousLink)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Operation::MoveHeadFromHomeToMach( bool bCurrMain, const string& sToolName, const string& sHeadName, int nExitNbr)
|
||||
Operation::MoveHeadFromHomeToMach( bool bCurrMain, const string& sToolName, const string& sHeadName, int nExitNbr, int nStartZMax)
|
||||
{
|
||||
// verifico gestore delle lavorazioni e operazione
|
||||
if ( m_pMchMgr == nullptr)
|
||||
@@ -3405,7 +3405,7 @@ Operation::MoveHeadFromHomeToMach( bool bCurrMain, const string& sToolName, cons
|
||||
if ( ! AdjustOneStartEndMovement( GetFirstFullToolpath( bCurrMain), GDB_ID_NULL, nullptr, vAxVal, 0, true))
|
||||
return false ;
|
||||
// eseguo collegamento speciale
|
||||
if ( ! ManageSpecialLink( nullptr, GDB_ID_NULL, false, this, GDB_ID_NULL, bCurrMain))
|
||||
if ( ! ManageSpecialLink( nullptr, GDB_ID_NULL, false, this, GDB_ID_NULL, bCurrMain, nStartZMax))
|
||||
return false ;
|
||||
|
||||
// riporto l'utensile corrente come originale
|
||||
@@ -3420,7 +3420,7 @@ bool
|
||||
Operation::MoveHeadFromMachToMach( Operation* pPrevOpe,
|
||||
bool bPrevMain, const string& sPrevToolName, const string& sPrevHeadName, int nPrevExitNbr,
|
||||
bool bCurrMain, const string& sCurrToolName, const string& sCurrHeadName, int nCurrExitNbr,
|
||||
bool bToolChangeNeeded)
|
||||
bool bToolChangeNeeded, int nStartZMax)
|
||||
{
|
||||
// verifico gestore delle lavorazioni e operazione precedente
|
||||
if ( m_pMchMgr == nullptr || pPrevOpe == nullptr)
|
||||
@@ -3446,7 +3446,7 @@ Operation::MoveHeadFromMachToMach( Operation* pPrevOpe,
|
||||
if ( ! AdjustOneStartEndMovement( GetFirstFullToolpath( bCurrMain), GDB_ID_NULL, pPrevOpe, vAxVal, dPrevOffsX, false))
|
||||
return false ;
|
||||
// gestione collegamento speciale
|
||||
if ( ! ManageSpecialLink( pPrevOpe, GDB_ID_NULL, bPrevMain, this, GDB_ID_NULL, bCurrMain))
|
||||
if ( ! ManageSpecialLink( pPrevOpe, GDB_ID_NULL, bPrevMain, this, GDB_ID_NULL, bCurrMain, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
|
||||
@@ -3454,12 +3454,12 @@ Operation::MoveHeadFromMachToMach( Operation* pPrevOpe,
|
||||
else {
|
||||
// imposto la lavorazione precedente come corrente ed effettuo collegamento
|
||||
m_pMchMgr->SetCurrMachining( pPrevOpe->GetOwner()) ;
|
||||
if ( ! MoveHeadFromMachToHome( pPrevOpe, bPrevMain, sPrevToolName, sPrevHeadName, nPrevExitNbr))
|
||||
if ( ! MoveHeadFromMachToHome( pPrevOpe, bPrevMain, sPrevToolName, sPrevHeadName, nPrevExitNbr, nStartZMax))
|
||||
return false ;
|
||||
|
||||
// ripristino la lavorazione corrente ed effettuo collegamento
|
||||
m_pMchMgr->SetCurrMachining( GetOwner()) ;
|
||||
if ( ! MoveHeadFromHomeToMach( bCurrMain, sCurrToolName, sCurrHeadName, nCurrExitNbr))
|
||||
if ( ! MoveHeadFromHomeToMach( bCurrMain, sCurrToolName, sCurrHeadName, nCurrExitNbr, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
|
||||
@@ -3472,7 +3472,8 @@ Operation::MoveHeadFromMachToMach( Operation* pPrevOpe,
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Operation::MoveHeadFromMachToHome( Operation* pPrevOpe, bool bPrevMain, const string& sPrevToolName, const string& sPrevHeadName, int nPrevExitNbr)
|
||||
Operation::MoveHeadFromMachToHome( Operation* pPrevOpe, bool bPrevMain, const string& sPrevToolName, const string& sPrevHeadName, int nPrevExitNbr,
|
||||
int nStartZMax)
|
||||
{
|
||||
// verifico gestore delle lavorazioni e operazione precedente
|
||||
if ( m_pMchMgr == nullptr || pPrevOpe == nullptr)
|
||||
@@ -3488,7 +3489,7 @@ Operation::MoveHeadFromMachToHome( Operation* pPrevOpe, bool bPrevMain, const st
|
||||
return false ;
|
||||
}
|
||||
// eventuale rilascio utensile speciale di lavorazione precedente
|
||||
if ( ! pPrevOpe->ManageSpecialLink( pPrevOpe, GDB_ID_NULL, bPrevMain, nullptr, GDB_ID_NULL, false))
|
||||
if ( ! pPrevOpe->ManageSpecialLink( pPrevOpe, GDB_ID_NULL, bPrevMain, nullptr, GDB_ID_NULL, false, nStartZMax))
|
||||
return false ;
|
||||
|
||||
// riporto l'utensile corrente come originale
|
||||
@@ -3529,14 +3530,17 @@ Operation::ManageDoubleOperNew( Operation* pPrevOpe)
|
||||
if ( ! bPrevInDouble && ! bCurrInDouble)
|
||||
return false ;
|
||||
|
||||
// leggo da parametro della lavorazione corrente se risalita a ZMax forzata
|
||||
int nStartZMax = GetUserNotesZmax() ;
|
||||
|
||||
// *** [A] Se primo utensile o richiesto, uso la posizione Home
|
||||
if ( sPrevTool.empty() || NeedPrevHome()) {
|
||||
// -->! la lavorazione corrente è per forza in doppio !<--
|
||||
// Dalla sua posizione di Home porto la Testa Main sul percorso Main corrente
|
||||
if ( ! MoveHeadFromHomeToMach( true, GetToolName(), GetHeadName(), GetExitNbr()))
|
||||
if ( ! MoveHeadFromHomeToMach( true, GetToolName(), GetHeadName(), GetExitNbr(), nStartZMax))
|
||||
return false ;
|
||||
// Dalla sua posizione di Home porto da Testa Double sul percorso Double corrente
|
||||
if ( ! MoveHeadFromHomeToMach( false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr))
|
||||
if ( ! MoveHeadFromHomeToMach( false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
else {
|
||||
@@ -3544,24 +3548,24 @@ Operation::ManageDoubleOperNew( Operation* pPrevOpe)
|
||||
if ( ! bPrevInDouble) {
|
||||
// -->! 1) Verifico se l'unico utensile della lavorazione precedente ( in quanto singola) è compatibile
|
||||
// con l'Utensile presente sul percorso Main della lavorazione corrente ( in doppio) !<--
|
||||
if ( ! ToolChangeNeeded( *pPrevOpe, true, *this, true)) {
|
||||
if ( ! ToolChangeNeeded( *pPrevOpe, true, *this, true) && nStartZMax == 0) {
|
||||
// Come prima cosa sposto la testa Main della prima lavorazione sul percorso Main della lavorazione corrente
|
||||
if ( ! MoveHeadFromMachToMach( pPrevOpe, true, sPrevTool, sPrevHead, nPrevExitNbr,
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), false))
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), false, nStartZMax))
|
||||
return false ;
|
||||
// Successivamente porto la testa Double dalla sua Home alla lavorazione corrente ( in doppio) sul percorso
|
||||
if ( ! MoveHeadFromHomeToMach( false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr))
|
||||
if ( ! MoveHeadFromHomeToMach( false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
// -->! 2) Verifico se l'unico utensile della lavorazione precedente ( in quanto singola) è compatibile
|
||||
// con l'utensile presente sul percorso Double della lavorazione corrente ( in doppio) !<--
|
||||
else if ( ! ToolChangeNeeded( *pPrevOpe, true, *this, false)) {
|
||||
else if ( ! ToolChangeNeeded( *pPrevOpe, true, *this, false) && nStartZMax == 0) {
|
||||
// Come prima cosa sposto la testa Main della lavorazione precedente sul percorso Double della lavorazione corrente
|
||||
if ( ! MoveHeadFromMachToMach( pPrevOpe, true, sPrevTool, sPrevHead, nPrevExitNbr,
|
||||
false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr, false))
|
||||
false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr, false, nStartZMax))
|
||||
return false ;
|
||||
// Successivamente porto la testa Main dalla sua Home alla lavorazione corrente ( in doppio) sul percorso
|
||||
if ( ! MoveHeadFromHomeToMach( true, GetToolName(), GetHeadName(), GetExitNbr()))
|
||||
if ( ! MoveHeadFromHomeToMach( true, GetToolName(), GetHeadName(), GetExitNbr(), nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
// -->! 3) In questo caso l'unico utensile della lavorazione precedente ( in quanto singola) non è compatibile
|
||||
@@ -3569,10 +3573,10 @@ Operation::ManageDoubleOperNew( Operation* pPrevOpe)
|
||||
else {
|
||||
// Porto la Testa Main sul percorso Main corrente
|
||||
if ( ! MoveHeadFromMachToMach( pPrevOpe, true, sPrevTool, sPrevHead, nPrevExitNbr,
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), true))
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), true, nStartZMax))
|
||||
return false ;
|
||||
// Dalla sua posizione di Home porto da Testa Double sul percorso Double corrente
|
||||
if ( ! MoveHeadFromHomeToMach( false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr))
|
||||
if ( ! MoveHeadFromHomeToMach( false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
@@ -3580,60 +3584,60 @@ Operation::ManageDoubleOperNew( Operation* pPrevOpe)
|
||||
else if ( ! bCurrInDouble) {
|
||||
// -->! 1) Verifico se l'utensile principale della lavorazione precedente ( in doppio) è compatibile
|
||||
// con l'Utensile presente sul percorso Main della lavorazione corrente ( in quanto singola) !<--
|
||||
if ( ! ToolChangeNeeded( *pPrevOpe, true, *this, true)) {
|
||||
if ( ! ToolChangeNeeded( *pPrevOpe, true, *this, true) && nStartZMax == 0) {
|
||||
// Come prima cosa sposto la testa Double della lavorazione precedente ( in doppio) in Home
|
||||
if ( ! MoveHeadFromMachToHome( pPrevOpe, false, sPrevDblTool, sPrevDblHead, nPrevDblExitNbr))
|
||||
if ( ! MoveHeadFromMachToHome( pPrevOpe, false, sPrevDblTool, sPrevDblHead, nPrevDblExitNbr, nStartZMax))
|
||||
return false ;
|
||||
// Sposto al testa Main della lavorazione precedente sul percorso Main corrente
|
||||
if ( ! MoveHeadFromMachToMach( pPrevOpe, true, sPrevTool, sPrevHead, nPrevExitNbr,
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), false))
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), false, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
// -->! 2) Verifico se l'utensile secondario della lavorazione precedente ( in doppio) è compatibile
|
||||
// con l'Utensile presente sul percorso Double della lavorazione corrente ( in quanto singola) !<--
|
||||
else if ( ! ToolChangeNeeded( *pPrevOpe, false, *this, true)) {
|
||||
else if ( ! ToolChangeNeeded( *pPrevOpe, false, *this, true) && nStartZMax == 0) {
|
||||
// Come prima cosa sposto la testa Main della lavorazione precedente ( in doppio) in Home
|
||||
if ( ! MoveHeadFromMachToHome( pPrevOpe, true, sPrevTool, sPrevHead, nPrevExitNbr))
|
||||
if ( ! MoveHeadFromMachToHome( pPrevOpe, true, sPrevTool, sPrevHead, nPrevExitNbr, nStartZMax))
|
||||
return false ;
|
||||
// Sposto al testa Double della lavorazione precedente sul percorso corrente
|
||||
if ( ! MoveHeadFromMachToMach( pPrevOpe, false, sPrevDblTool, sPrevDblHead, nPrevDblExitNbr,
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), false))
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), false, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
// -->! 3) In questo caso l'unico utensile della lavorazione corrente ( in quanto singola) non è compatibile
|
||||
// con nessun utensile della lavorazione precedente ( in doppio) !<--
|
||||
else {
|
||||
// Come prima cosa sposto la testa Double della lavorazione precedente ( in doppio) in Home
|
||||
if ( ! MoveHeadFromMachToHome( pPrevOpe, false, sPrevDblTool, sPrevDblHead, nPrevDblExitNbr))
|
||||
if ( ! MoveHeadFromMachToHome( pPrevOpe, false, sPrevDblTool, sPrevDblHead, nPrevDblExitNbr, nStartZMax))
|
||||
return false ;
|
||||
// Sposto la testa Main della lavorazione precedente sul percorso corrente
|
||||
if ( ! MoveHeadFromMachToMach( pPrevOpe, true, sPrevTool, sPrevHead, nPrevExitNbr,
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), true))
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), true, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
// *** [D] entrambe le lavorazioni sono in doppio
|
||||
else {
|
||||
// -->! 1) Entrambe le lavorazioni in doppio sono compatibili tra di loro !<--
|
||||
if ( ! ToolChangeNeeded( *pPrevOpe, true, *this, true) && ! ToolChangeNeeded( *pPrevOpe, false, *this, false)) {
|
||||
if ( ! ToolChangeNeeded( *pPrevOpe, true, *this, true) && ! ToolChangeNeeded( *pPrevOpe, false, *this, false) && nStartZMax == 0) {
|
||||
// Porto la testa Main dalla lavorazione precedente alla lavorazione corrente
|
||||
if ( ! MoveHeadFromMachToMach( pPrevOpe, true, sPrevTool, sPrevHead, nPrevExitNbr,
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), false))
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), false, nStartZMax))
|
||||
return false ;
|
||||
// Porto la testa double delle lavorazione precedente alla lavorazine corrente
|
||||
if ( ! MoveHeadFromMachToMach( pPrevOpe, false, sPrevDblTool, sPrevDblHead, nPrevDblExitNbr,
|
||||
false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr, false))
|
||||
false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr, false, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
// -->! 2) Per tutto il resto porto sempre in Home per sicurezza passando da una lavorazione all'altra !<--
|
||||
else {
|
||||
// Porto la testa Main dalla lavorazione precedente alla lavorazione corrente
|
||||
if ( ! MoveHeadFromMachToMach( pPrevOpe, true, sPrevTool, sPrevHead, nPrevExitNbr,
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), true))
|
||||
true, GetToolName(), GetHeadName(), GetExitNbr(), true, nStartZMax))
|
||||
return false ;
|
||||
// Porto la testa Double delle lavorazione precedente alla lavorazine corrente
|
||||
if ( ! MoveHeadFromMachToMach( pPrevOpe, false, sPrevDblTool, sPrevDblHead, nPrevDblExitNbr,
|
||||
false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr, true))
|
||||
false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr, true, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
@@ -3652,7 +3656,7 @@ Operation::ManageDoubleOperNew( Operation* pPrevOpe)
|
||||
DBLVECTOR vAxVal ;
|
||||
bOk = bOk && GetClPathFinalAxesValues( nPrevCLPathId, false, vAxVal) ;
|
||||
bOk = bOk && AdjustOneStartEndMovement( nCLPathId, nPrevCLPathId, nullptr, vAxVal, 0, false) ;
|
||||
bOk = bOk && ManageSpecialLink( this, nPrevCLPathId, true, this, nCLPathId, true) ;
|
||||
bOk = bOk && ManageSpecialLink( this, nPrevCLPathId, true, this, nCLPathId, true, nStartZMax) ;
|
||||
// passo al successivo
|
||||
nPrevCLPathId = nCLPathId ;
|
||||
nCLPathId = GetNextFullToolpath( nCLPathId) ;
|
||||
@@ -3662,7 +3666,7 @@ Operation::ManageDoubleOperNew( Operation* pPrevOpe)
|
||||
DBLVECTOR vAxVal ;
|
||||
bOk = bOk && AddRise( vAxVal) ;
|
||||
// -->! nuova verifica di aree protette alla fine !<--
|
||||
bOk = bOk && ManageSpecialLink( this, GDB_ID_NULL, true, nullptr, GDB_ID_NULL, false) ;
|
||||
bOk = bOk && ManageSpecialLink( this, GDB_ID_NULL, true, nullptr, GDB_ID_NULL, false, nStartZMax) ;
|
||||
// -->! se ultima operazione o la successiva lo richiede, vado in Home !<--
|
||||
int nNextOpId = m_pMchMgr->GetNextActiveOperation( m_nOwnerId) ;
|
||||
Operation* pNextOp = GetOperation( m_pGeomDB->GetUserObj( nNextOpId)) ;
|
||||
@@ -3684,13 +3688,13 @@ Operation::ManageDoubleOperNew( Operation* pPrevOpe)
|
||||
// Utensile Main
|
||||
bOk = bOk && GetClPathFinalAxesValues( nPrevCLPathId, false, vAxVal) ;
|
||||
bOk = bOk && AdjustOneStartEndMovement( nCLPathId, nPrevCLPathId, nullptr, vAxVal, 0, false) ;
|
||||
bOk = bOk && ManageSpecialLink( this, nPrevCLPathId, true, this, nCLPathId, true) ;
|
||||
bOk = bOk && ManageSpecialLink( this, nPrevCLPathId, true, this, nCLPathId, true, nStartZMax) ;
|
||||
// Utensile Double
|
||||
DBLVECTOR vAxDblVal ;
|
||||
bOk = bOk && m_pMchMgr->SetCalcTool( sCurrDblTool, sCurrDblHead, nCurrDblExitNbr) ;
|
||||
bOk = bOk && GetClPathFinalAxesValues( nPrevDBLPathId, false, vAxDblVal) ;
|
||||
bOk = bOk && AdjustOneStartEndMovement( nDBLPathId, nPrevDBLPathId, nullptr, vAxDblVal, 0, false) ;
|
||||
bOk = bOk && ManageSpecialLink( this, nPrevDBLPathId, false, this, nDBLPathId, false) ;
|
||||
bOk = bOk && ManageSpecialLink( this, nPrevDBLPathId, false, this, nDBLPathId, false, nStartZMax) ;
|
||||
bOk = bOk && m_pMchMgr->SetCalcTool( GetToolName(), GetHeadName(), GetExitNbr()) ;
|
||||
// passo al successivo
|
||||
nPrevCLPathId = nCLPathId ;
|
||||
@@ -3703,12 +3707,12 @@ Operation::ManageDoubleOperNew( Operation* pPrevOpe)
|
||||
// per utensile Main
|
||||
DBLVECTOR vAxVal ;
|
||||
bOk = bOk && AddRise( vAxVal) ;
|
||||
bOk = bOk && ManageSpecialLink( this, GDB_ID_NULL, true, nullptr, GDB_ID_NULL, true) ;
|
||||
bOk = bOk && ManageSpecialLink( this, GDB_ID_NULL, true, nullptr, GDB_ID_NULL, true, nStartZMax) ;
|
||||
// per utensile Double
|
||||
DBLVECTOR vAxDblVal ;
|
||||
bOk = bOk && m_pMchMgr->SetCalcTool( sCurrDblTool, sCurrDblHead, nCurrDblExitNbr) ;
|
||||
bOk = bOk && AddRise( vAxDblVal, NAN, GDB_ID_NULL, false) ;
|
||||
bOk = bOk && ManageSpecialLink( this, GDB_ID_NULL, false, nullptr, GDB_ID_NULL, false) ;
|
||||
bOk = bOk && ManageSpecialLink( this, GDB_ID_NULL, false, nullptr, GDB_ID_NULL, false, nStartZMax) ;
|
||||
bOk = bOk && m_pMchMgr->SetCalcTool( GetToolName(), GetHeadName(), GetExitNbr()) ;
|
||||
// -->! se ultima operazione o la successiva lo richiede, vado in Home !<--
|
||||
int nNextOpId = m_pMchMgr->GetNextActiveOperation( m_nOwnerId) ;
|
||||
@@ -3757,6 +3761,9 @@ Operation::AdjustStartEndMovementsNew( void)
|
||||
// -->! se entrambe le lavorazioni sono singole !<--
|
||||
if ( ! bPrevDbl && ! bCurrDbl) {
|
||||
|
||||
// leggo da parametro della lavorazione corrente se risalita a ZMax forzata
|
||||
int nStartZMax = GetUserNotesZmax() ;
|
||||
|
||||
// *** Se primo utensile o richiesto, uso la posizione home
|
||||
if ( sPrevTool.empty() || NeedPrevHome()) {
|
||||
// imposto l'utensile per i calcoli macchina
|
||||
@@ -3767,12 +3774,12 @@ Operation::AdjustStartEndMovementsNew( void)
|
||||
if ( ! AdjustOneStartEndMovement( GetFirstFullToolpath(), GDB_ID_NULL, nullptr, vAxVal, 0, true))
|
||||
return false ;
|
||||
// eseguo collegamento speciale
|
||||
if ( ! ManageSpecialLink( nullptr, GDB_ID_NULL, true, this, GDB_ID_NULL, true))
|
||||
if ( ! ManageSpecialLink( nullptr, GDB_ID_NULL, true, this, GDB_ID_NULL, true, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
|
||||
// *** Se utensile non cambiato o su diversa uscita della stessa testa, uso posizione finale della lavorazione precedente
|
||||
else if ( ! ToolChangeNeeded( *pPrevOp, true, *this, true)) {
|
||||
else if ( ! ToolChangeNeeded( *pPrevOp, true, *this, true) && nStartZMax == 0) {
|
||||
// imposto l'utensile per i calcoli macchina
|
||||
if ( ! m_pMchMgr->SetCalcTool( GetToolName(), GetHeadName(), GetExitNbr()))
|
||||
return false ;
|
||||
@@ -3790,7 +3797,7 @@ Operation::AdjustStartEndMovementsNew( void)
|
||||
if ( ! AdjustOneStartEndMovement( GetFirstFullToolpath(), GDB_ID_NULL, pPrevOp, vAxVal, dPrevOffsX, false))
|
||||
return false ;
|
||||
// gestione collegamento speciale
|
||||
if ( ! ManageSpecialLink( pPrevOp, GDB_ID_NULL, true, this, GDB_ID_NULL, true))
|
||||
if ( ! ManageSpecialLink( pPrevOp, GDB_ID_NULL, true, this, GDB_ID_NULL, true, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
|
||||
@@ -3808,7 +3815,7 @@ Operation::AdjustStartEndMovementsNew( void)
|
||||
return false ;
|
||||
}
|
||||
// eventuale rilascio utensile speciale di lavorazione precedente
|
||||
if ( ! pPrevOp->ManageSpecialLink( pPrevOp, GDB_ID_NULL, true, nullptr, GDB_ID_NULL, true))
|
||||
if ( ! pPrevOp->ManageSpecialLink( pPrevOp, GDB_ID_NULL, true, nullptr, GDB_ID_NULL, true, nStartZMax))
|
||||
return false ;
|
||||
|
||||
// ripristino la lavorazione corrente
|
||||
@@ -3821,7 +3828,7 @@ Operation::AdjustStartEndMovementsNew( void)
|
||||
if ( ! AdjustOneStartEndMovement( GetFirstFullToolpath(), GDB_ID_NULL, nullptr, vAxVal, 0, true))
|
||||
return false ;
|
||||
// eseguo verifica
|
||||
if ( ! ManageSpecialLink( nullptr, GDB_ID_NULL, true, this, GDB_ID_NULL, true))
|
||||
if ( ! ManageSpecialLink( nullptr, GDB_ID_NULL, true, this, GDB_ID_NULL, true, nStartZMax))
|
||||
return false ;
|
||||
}
|
||||
|
||||
@@ -3839,7 +3846,7 @@ Operation::AdjustStartEndMovementsNew( void)
|
||||
if ( ! AdjustOneStartEndMovement( nClPathId, nPrevClPathId, nullptr, vAxVal, 0, false))
|
||||
bOk = false ;
|
||||
// gestione collegamento speciale ( tra due percorsi della stessa lavorazione)
|
||||
if ( ! ManageSpecialLink( this, nPrevClPathId, true, this, nClPathId, true))
|
||||
if ( ! ManageSpecialLink( this, nPrevClPathId, true, this, nClPathId, true, nStartZMax))
|
||||
return false ;
|
||||
// passo al successivo
|
||||
nPrevClPathId = nClPathId ;
|
||||
@@ -3851,7 +3858,7 @@ Operation::AdjustStartEndMovementsNew( void)
|
||||
DBLVECTOR vAxVal ;
|
||||
bOk = bOk && AddRise( vAxVal) ;
|
||||
// nuova verifica aree protette alla fine
|
||||
if ( ! ManageSpecialLink( this, GDB_ID_NULL, true, nullptr, GDB_ID_NULL, true))
|
||||
if ( ! ManageSpecialLink( this, GDB_ID_NULL, true, nullptr, GDB_ID_NULL, true, nStartZMax))
|
||||
return false ;
|
||||
|
||||
// se ultima operazione o la successiva lo richiede, vado in home
|
||||
@@ -3871,7 +3878,8 @@ Operation::AdjustStartEndMovementsNew( void)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Operation::ManageSpecialLink( Operation* pPrevOpe, int nPrevClPathId, bool bPrevMain, Operation* pNextOpe, int nNextClPathId, bool bNextMain)
|
||||
Operation::ManageSpecialLink( Operation* pPrevOpe, int nPrevClPathId, bool bPrevMain, Operation* pNextOpe, int nNextClPathId, bool bNextMain,
|
||||
int nStartZmax)
|
||||
{
|
||||
// controlli
|
||||
if ( pPrevOpe == nullptr && pNextOpe == nullptr)
|
||||
@@ -3914,7 +3922,7 @@ Operation::ManageSpecialLink( Operation* pPrevOpe, int nPrevClPathId, bool bPrev
|
||||
return false ;
|
||||
|
||||
// chiamo funzione script OnSpecialRapidMove per avere posizioni di movimento
|
||||
bool bOk = SpecialLink( vNeatAxSta, vNeatAxEnd, nLinkType, pPrevOpe, bPrevMain, pNextOpe, bNextMain) ;
|
||||
bool bOk = SpecialLink( vNeatAxSta, vNeatAxEnd, nLinkType, pPrevOpe, bPrevMain, pNextOpe, bNextMain, nStartZmax) ;
|
||||
|
||||
// in caso di errore eseguo inserimento con segnalazione di errore
|
||||
if ( ! bOk) {
|
||||
@@ -5900,7 +5908,8 @@ Operation::SpecialMoveRapid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd,
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Operation::SpecialLink( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd, int nLinkType,
|
||||
const Operation* pPrevOpe, bool bPrevMain, const Operation* pNextOpe, bool bNextMain)
|
||||
const Operation* pPrevOpe, bool bPrevMain, const Operation* pNextOpe, bool bNextMain,
|
||||
int nStartZMax)
|
||||
{
|
||||
// recupero la macchina corrente
|
||||
Machine* pMch = ( m_pMchMgr != nullptr ? m_pMchMgr->GetCurrMachine() : nullptr) ;
|
||||
@@ -5914,6 +5923,7 @@ Operation::SpecialLink( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd, int
|
||||
static const string EVAR_NEXTMCHID = ".NEXTMCHID" ; // IN (int) identificativo lavorazione successiva
|
||||
static const string EVAR_NEXTPHASE = ".NEXTPHASE" ; // IN (int) indice fase della lavorazione successiva
|
||||
static const string EVAR_NEXTMAIN = ".NEXTMAIN" ; // IN (bool) flag lavorazione principale o double successiva
|
||||
static const string EVAR_STARTZMAX = ".STARTZMAX" ; // IN (int) identificativo StartZMax
|
||||
static const string EVAR_LINKTYPE = ".LINKTYPE" ; // IN (int) codice tipo collegamento (1=Inizio, 2=Fine, 3=FinePrec+InizioSucc)
|
||||
static const string EVAR_ERROR = ".ERR" ; // OUT (int) codice di errore ( 0 = ok)
|
||||
static const string ON_SPECIAL_LINK = "OnSpecialLink" ;
|
||||
@@ -5945,6 +5955,7 @@ Operation::SpecialLink( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd, int
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_NEXTMCHID, ( pNextOpe != nullptr ? pNextOpe->GetOwner() : GDB_ID_NULL)) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_NEXTPHASE, ( pNextOpe != nullptr ? pNextOpe->m_nPhase : 0)) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_NEXTMAIN, ( bNextMain ? MCH_CL : MCH_DBL)) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_STARTZMAX, nStartZMax) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_PHASE, m_nPhase) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_LINKTYPE, nLinkType) ;
|
||||
// valore degli assi
|
||||
|
||||
+8
-7
@@ -240,16 +240,16 @@ class Operation : public IUserObj
|
||||
bool AdjustStartEndMovementsStd( bool bVerifyPreviousLink) ;
|
||||
bool AdjustOneStartEndMovement( int nClPathId, int nPrevClPathId, Operation* pPrevOpe, const DBLVECTOR& vAxPrev, double dPrevOffsX, bool bMaxZ) ;
|
||||
bool AdjustStartEndMovementsNew( void) ;
|
||||
|
||||
bool MoveHeadFromHomeToMach( bool bMain, const std::string& sToolName, const std::string& sHeadName, int nExitNbr) ;
|
||||
bool MoveHeadFromHomeToMach( bool bMain, const std::string& sToolName, const std::string& sHeadName, int nExitNbr, int nStartZMax) ;
|
||||
bool MoveHeadFromMachToMach( Operation* pPrevOpe,
|
||||
bool bPrevMain, const std::string& sPrevToolName, const std::string& sPrevHeadName, int nPrevExitNbr,
|
||||
bool bCurrMain, const std::string& sCurrToolName, const std::string& sCurrHeadName, int nCurrExitNbr,
|
||||
bool bToolChange) ;
|
||||
bool MoveHeadFromMachToHome( Operation* pPrevOpe, bool bCurrMain, const std::string& sCurrToolName, const std::string& sCurrHeadName, int nCurrExitNbr) ;
|
||||
bool bToolChange, int nStartZMax) ;
|
||||
bool MoveHeadFromMachToHome( Operation* pPrevOpe, bool bCurrMain, const std::string& sCurrToolName, const std::string& sCurrHeadName, int nCurrExitNbr,
|
||||
int nStartZMax) ;
|
||||
bool ManageDoubleOperNew( Operation* pPrevOpe) ;
|
||||
|
||||
bool ManageSpecialLink( Operation* pPrevOpe, int nPrevClPathId, bool bPrevMain, Operation* pNextOpe, int nNextClPathId, bool bNextMain) ;
|
||||
bool ManageSpecialLink( Operation* pPrevOpe, int nPrevClPathId, bool bPrevMain, Operation* pNextOpe, int nNextClPathId, bool bNextMain,
|
||||
int nStartZMax) ;
|
||||
bool ToolChangeNeeded( const Operation& Ope1, bool bMain1, const Operation& Ope2, bool bMain2) const ;
|
||||
bool AddSpecialClimb( const DBLVECTOR& vAxVal, bool bOk = true, int nClPathId = GDB_ID_NULL, bool bMain = true,
|
||||
int nFlag = 0, int nFlag2 = 0, int nMask = -1, const std::string& sInfo = "", bool bFirst = true) ;
|
||||
@@ -277,7 +277,8 @@ class Operation : public IUserObj
|
||||
bool SpecialMoveZup( DBLVECTOR& vAx, Vector3d& vtTool, int& nFlag, int& nFlag2, bool& bModif) ;
|
||||
bool SpecialMoveRapid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd, DBLVECTOR& vAxNew, bool& bModif) ;
|
||||
bool SpecialLink( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd, int nLinkType,
|
||||
const Operation* pPrevOpe, bool bPrevMain, const Operation* pNextOpe, bool bNextMain) ;
|
||||
const Operation* pPrevOpe, bool bPrevMain, const Operation* pNextOpe, bool bNextMain,
|
||||
int nStartZMax) ;
|
||||
bool SpecialPrevMachiningOffset( const Operation* pPrevOpe, double& dOffsetX) ;
|
||||
|
||||
protected :
|
||||
|
||||
Reference in New Issue
Block a user