diff --git a/Drilling.cpp b/Drilling.cpp index a6a3dee..dceeeea 100644 --- a/Drilling.cpp +++ b/Drilling.cpp @@ -94,6 +94,9 @@ Drilling::Clone( void) const pDri->m_TParams = m_TParams ; pDri->m_nStatus = m_nStatus ; pDri->m_nDrillings = m_nDrillings ; + pDri->m_bTiltingTab = m_bTiltingTab ; + pDri->m_bAboveHead = m_bAboveHead ; + pDri->m_bAggrBottom = m_bAggrBottom ; } catch( ...) { delete pDri ; @@ -207,6 +210,8 @@ Drilling::Drilling( void) m_TParams.m_sHead = "*" ; m_nStatus = MCH_ST_TO_VERIFY ; m_nDrillings = 0 ; + m_bTiltingTab = false ; + m_bAboveHead = true ; m_bAggrBottom = false ; m_dDistBottom = 0 ; } @@ -1024,6 +1029,11 @@ Drilling::GenerateHoleCl( int nInd, const SelData& nCircId, const string& sPName string sInfo = "Warning in Drilling : Drill bit too short for Hole " + ToString( nCircId) ; m_pMchMgr->SetWarning( 2155, sInfo) ; } + // verifico se tavola basculante + bool bTiltTab = false ; + m_bTiltingTab = ( m_pMchMgr->GetCurrMachine()->GetCurrTableIsTilting( bTiltTab) && bTiltTab) ; + // verifico se testa da sopra (Z+) + m_bAboveHead = m_pMchMgr->GetHeadAbove( m_TParams.m_sHead) ; // verifiche per foro verso il basso m_bAggrBottom = false ; if ( ! VerifyHoleFromBottom( hole, nCircId)) @@ -1410,9 +1420,8 @@ Drilling::VerifyHoleFromBottom( const Hole& hole, SelData Id) // se non è foro dal basso in alto, esco if ( hole.vtDir.z > MIN_ZDIR_TOP_TOOL) return true ; - // se c'è tavola basculante, esco - bool bTabTilting = false ; - if ( m_pMchMgr->GetCurrMachine()->GetCurrTableIsTilting( bTabTilting) && bTabTilting) + // se c'è testa non dall'alto o tavola basculante, esco + if ( ! m_bAboveHead || m_bTiltingTab) return true ; // recupero dati di eventuale rinvio da sotto if ( ! GetAggrBottomData( m_TParams.m_sHead, m_AggrBottom) || m_AggrBottom.nType == 0) { diff --git a/Drilling.h b/Drilling.h index 60dd019..299e8aa 100644 --- a/Drilling.h +++ b/Drilling.h @@ -99,6 +99,8 @@ class Drilling : public Machining ToolData m_TParams ; // parametri utensile int m_nStatus ; // stato di aggiornamento della lavorazione int m_nDrillings ; // numero di fori generati + bool m_bTiltingTab ; // flag utilizzo tavola basculante + bool m_bAboveHead ; // flag utilizzo testa da sopra bool m_bAggrBottom ; // flag di utilizzo dell'aggregato da sotto Vector3d m_vtAggrBottom ; // vettore direzione ausiliaria aggregato da sotto double m_dDistBottom ; // distanza del foro dal bordo del grezzo diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index f23e2d0..023966a 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/Milling.cpp b/Milling.cpp index 54e0868..5718590 100644 --- a/Milling.cpp +++ b/Milling.cpp @@ -2004,8 +2004,8 @@ Milling::VerifyPathFromBottom( const ICurveComposite* pCompo, const Vector3d& vt // se non è fresatura dal basso in alto, esco if ( vtTool.z > MIN_ZDIR_TOP_TOOL) return true ; - // se c'è tavola basculante, esco - if ( m_bTiltingTab) + // se c'è testa non dall'alto o tavola basculante, esco + if ( ! m_bAboveHead || m_bTiltingTab) return true ; // recupero dati di eventuale rinvio da sotto if ( ! GetAggrBottomData( m_TParams.m_sHead, m_AggrBottom) || m_AggrBottom.nType == 0) { diff --git a/Pocketing.cpp b/Pocketing.cpp index c3ccb57..d164279 100644 --- a/Pocketing.cpp +++ b/Pocketing.cpp @@ -107,6 +107,7 @@ Pocketing::Clone( void) const pPock->m_TParams = m_TParams ; pPock->m_nStatus = m_nStatus ; pPock->m_nPockets = m_nPockets ; + pPock->m_bTiltingTab = m_bTiltingTab ; pPock->m_bAboveHead = m_bAboveHead ; pPock->m_bAggrBottom = m_bAggrBottom ; } @@ -225,8 +226,9 @@ Pocketing::Pocketing( void) m_dMaxHelixRad = INFINITO ; m_nStatus = MCH_ST_TO_VERIFY ; m_nPockets = 0 ; - m_bAggrBottom = false ; + m_bTiltingTab = false ; m_bAboveHead = true ; + m_bAggrBottom = false ; } //---------------------------------------------------------------------------- @@ -1558,6 +1560,10 @@ Pocketing::ProcessPath( int nPathId, int nPvId, int nClId) } } + // verifico se tavola basculante + bool bTiltTab = false ; + m_bTiltingTab = ( m_pMchMgr->GetCurrMachine()->GetCurrTableIsTilting( bTiltTab) && bTiltTab) ; + // verifico se testa da sopra (Z+) m_bAboveHead = m_pMchMgr->GetHeadAbove( m_TParams.m_sHead) ; @@ -1753,9 +1759,8 @@ Pocketing::VerifyPathFromBottom( const ICurveComposite* pCompo, const Vector3d& // se non è svuotatura dal basso in alto, esco if ( vtTool.z > MIN_ZDIR_TOP_TOOL) return true ; - // se c'è tavola basculante, esco - bool bTabTilting = false ; - if ( m_pMchMgr->GetCurrMachine()->GetCurrTableIsTilting( bTabTilting) && bTabTilting) + // se c'è testa non dall'alto o tavola basculante, esco + if ( ! m_bAboveHead || m_bTiltingTab) return true ; // recupero dati di eventuale rinvio da sotto if ( ! GetAggrBottomData( m_TParams.m_sHead, m_AggrBottom) || m_AggrBottom.nType == 0) { diff --git a/Pocketing.h b/Pocketing.h index 32b0858..89ec6e3 100644 --- a/Pocketing.h +++ b/Pocketing.h @@ -148,6 +148,7 @@ class Pocketing : public Machining double m_dMaxHelixRad ; // raggio massimo attacco ad elica nel caso di cerchi int m_nStatus ; // stato di aggiornamento della lavorazione int m_nPockets ; // numero di percorsi di svuotatura generati + bool m_bTiltingTab ; // flag utilizzo tavola basculante bool m_bAboveHead ; // flag utilizzo testa da sopra bool m_bAggrBottom ; // flag di utilizzo dell'aggregato da sotto Vector3d m_vtAggrBottom ; // vettore direzione ausiliaria aggregato da sotto