EgtMachKernel 2.2g3 :
- quando si prendono gli angoli finali della lavorazione precedente, possibilità di saltare le posizioni RISE - in tagli con lama corretta gestione spessore lama su facce lavorate al contrario.
This commit is contained in:
+16
-7
@@ -1027,7 +1027,7 @@ Operation::GetClPathInitialAxesValues( int nClPathId, DBLVECTOR& vAxVal) const
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Operation::GetFinalAxesValues( DBLVECTOR& vAxVal) const
|
||||
Operation::GetFinalAxesValues( bool bSkipRise, DBLVECTOR& vAxVal) const
|
||||
{
|
||||
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
|
||||
return false ;
|
||||
@@ -1038,17 +1038,26 @@ Operation::GetFinalAxesValues( DBLVECTOR& vAxVal) const
|
||||
// recupero l'ultimo percorso CL
|
||||
int nClPathId = m_pGeomDB->GetLastGroupInGroup( nClId) ;
|
||||
// restituisco i valori finali degli assi di questo percorso di lavorazione
|
||||
return GetClPathFinalAxesValues( nClPathId, vAxVal) ;
|
||||
return GetClPathFinalAxesValues( nClPathId, bSkipRise, vAxVal) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Operation::GetClPathFinalAxesValues( int nClPathId, DBLVECTOR& vAxVal) const
|
||||
Operation::GetClPathFinalAxesValues( int nClPathId, bool bSkipRise, DBLVECTOR& vAxVal) const
|
||||
{
|
||||
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
|
||||
return false ;
|
||||
// recupero l'ultima entità di questo percorso
|
||||
int nEntId = m_pGeomDB->GetLastInGroup( nClPathId) ;
|
||||
// se richiesto di ignorare le entità RISE
|
||||
if ( bSkipRise) {
|
||||
while ( nEntId != GDB_ID_NULL) {
|
||||
string sName ;
|
||||
if ( ! m_pGeomDB->GetName( nEntId, sName) || sName != MCH_CL_RISE)
|
||||
break ;
|
||||
nEntId = m_pGeomDB->GetPrev( nEntId) ;
|
||||
}
|
||||
}
|
||||
// recupero i dati Cam dell'entità
|
||||
CamData* pCamData = GetCamData( m_pGeomDB->GetUserObj( nEntId)) ;
|
||||
if ( pCamData == nullptr)
|
||||
@@ -1129,7 +1138,7 @@ Operation::CalculateAxesValues( const string& sHint, bool bSolChExact)
|
||||
DBLVECTOR vAxVal ;
|
||||
// se utensile non cambiato, uso gli angoli finali della lavorazione precedente
|
||||
if ( ! sPrevTool.empty() && ! ToolChangeNeeded( *pPrevOp, *this) &&
|
||||
pPrevOp->GetFinalAxesValues( vAxVal)) {
|
||||
pPrevOp->GetFinalAxesValues( true, vAxVal)) {
|
||||
for ( int i = 0 ; i < nRotAxes ; ++ i)
|
||||
vAxRotPrec[i] = vAxVal[nLinAxes + i] ;
|
||||
}
|
||||
@@ -1606,7 +1615,7 @@ Operation::AdjustStartEndMovements( bool bVerifyPreviousLink)
|
||||
// cancello risalita lavorazione precedente
|
||||
pPrevOp->RemoveRise() ;
|
||||
// recupero posizione finale lavorazione precedente
|
||||
if ( ! pPrevOp->GetFinalAxesValues( vAxVal))
|
||||
if ( ! pPrevOp->GetFinalAxesValues( false, vAxVal))
|
||||
return false ;
|
||||
// se richiesta verifica collegamento con lavorazione precedente
|
||||
if ( bVerifyPreviousLink) {
|
||||
@@ -1676,7 +1685,7 @@ Operation::AdjustStartEndMovements( bool bVerifyPreviousLink)
|
||||
// cancello eventuale risalita parziale della lavorazione precedente
|
||||
pPrevOp->RemoveRise() ;
|
||||
// recupero le nuove quote finali (per calcolare il corretto delta)
|
||||
pPrevOp->GetFinalAxesValues( vAxVal) ;
|
||||
pPrevOp->GetFinalAxesValues( false, vAxVal) ;
|
||||
// aggiungo risalita a Zsafe
|
||||
if ( ! pPrevOp->AddRise( vAxVal, dSafeZ - vAxVal[2]))
|
||||
return false ;
|
||||
@@ -1751,7 +1760,7 @@ Operation::AdjustStartEndMovements( bool bVerifyPreviousLink)
|
||||
bMaxZ = false ;
|
||||
// recupero nuovi finali
|
||||
RemoveRise( nClPathId) ;
|
||||
if ( ! GetClPathFinalAxesValues( nClPathId, vAxVal))
|
||||
if ( ! GetClPathFinalAxesValues( nClPathId, false, vAxVal))
|
||||
bOk = false ;
|
||||
// passo al successivo
|
||||
nPrevClPathId = nClPathId ;
|
||||
|
||||
Reference in New Issue
Block a user