EgtMachKernel :
- modifiche a svuotature SpiralIn per ingresso su lato aperto da considerare fuori grezzo anche se dentro (da OpenOutRaw=1 in Note Utente).
This commit is contained in:
+24
-8
@@ -115,6 +115,7 @@ Pocketing::Clone( void) const
|
||||
pPock->m_bTiltingTab = m_bTiltingTab ;
|
||||
pPock->m_bAboveHead = m_bAboveHead ;
|
||||
pPock->m_bAggrBottom = m_bAggrBottom ;
|
||||
pPock->m_bOpenOutRaw = m_bOpenOutRaw ;
|
||||
}
|
||||
catch( ...) {
|
||||
delete pPock ;
|
||||
@@ -238,6 +239,7 @@ Pocketing::Pocketing( void)
|
||||
m_bTiltingTab = false ;
|
||||
m_bAboveHead = true ;
|
||||
m_bAggrBottom = false ;
|
||||
m_bOpenOutRaw = false ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -1607,6 +1609,10 @@ Pocketing::ProcessPath( int nPathId, int nPvId, int nClId)
|
||||
return false ;
|
||||
}
|
||||
|
||||
// recupero eventuale flag di lato aperto forzato fuori dal grezzo
|
||||
int nOpenOutRaw ;
|
||||
m_bOpenOutRaw = ( FromString( ExtractInfo( m_Params.m_sUserNotes, "OpenOutRaw="), nOpenOutRaw) && nOpenOutRaw != 0) ;
|
||||
|
||||
// se richiesta anteprima
|
||||
if ( nPvId != GDB_ID_NULL) {
|
||||
// creo gruppo per geometria di lavorazione del percorso
|
||||
@@ -3278,12 +3284,13 @@ Pocketing::AddSpiralIn( const ICurveComposite* pCompo, const Vector3d& vtTool, c
|
||||
|
||||
// se prima regione e gestione lato aperto ( caso non ottimizzato)
|
||||
bool bOutStart = ( nReg == 1 && bMidOpen) ;
|
||||
if ( bOutStart && ! bOptimizedTrap) {
|
||||
if ( bOutStart && ! bOptimizedTrap) {
|
||||
// calcolo il punto fuori
|
||||
Point3d ptOut = ptMidOpen + vtMidOut * ( 0.5 * m_TParams.m_dDiam + dSafeZ) ;
|
||||
// verifico che il punto sia veramente fuori dal grezzo
|
||||
double dStElev ;
|
||||
if ( ! GetElevation( m_nPhase, ptOut, vtTool, 0.5 * m_TParams.m_dDiam, vtTool, dStElev) || dStElev < EPS_SMALL) {
|
||||
bOutStart = ( ! GetElevation( m_nPhase, ptOut, vtTool, 0.5 * m_TParams.m_dDiam, vtTool, dStElev) || dStElev < EPS_SMALL) ;
|
||||
if ( bOutStart || m_bOpenOutRaw) {
|
||||
// aggiungo al ritorno l'uscita
|
||||
if ( pRCrv->GetCurveCount() == 0) {
|
||||
Point3d ptStart ; pMCrv->GetStartPoint( ptStart) ;
|
||||
@@ -3293,8 +3300,6 @@ Pocketing::AddSpiralIn( const ICurveComposite* pCompo, const Vector3d& vtTool, c
|
||||
// premetto alla spirale la partenza da fuori
|
||||
pMCrv->AddLine( ptOut, false) ;
|
||||
}
|
||||
else
|
||||
bOutStart = false ;
|
||||
}
|
||||
|
||||
// calcolo gli eventuali punti fuori dal grezzo nel caso ottimizzato
|
||||
@@ -3304,8 +3309,11 @@ Pocketing::AddSpiralIn( const ICurveComposite* pCompo, const Vector3d& vtTool, c
|
||||
bOutStart = ( nOutsideRaw > 0) ;
|
||||
}
|
||||
|
||||
// verifico se ingresso da considerare fuori grezzo anche se dentro
|
||||
bool bForcedOutStart = ( bMidOpen && m_bOpenOutRaw) ;
|
||||
|
||||
// se utensile che non lavora di testa e ingresso non fuori dal pezzo, errore
|
||||
if ( m_TParams.m_nType == TT_MILL_NOTIP && ! bOutStart) {
|
||||
if ( m_TParams.m_nType == TT_MILL_NOTIP && ! bOutStart && ! bForcedOutStart) {
|
||||
if ( ! LeadInIsOk()) {
|
||||
m_pMchMgr->SetLastError( 2431, "Error in Pocketing : LeadIn with Mill NoTip in material") ;
|
||||
return false ;
|
||||
@@ -3365,13 +3373,13 @@ Pocketing::AddSpiralIn( const ICurveComposite* pCompo, const Vector3d& vtTool, c
|
||||
dStElev = 0 ;
|
||||
}
|
||||
// approccio al punto iniziale
|
||||
if ( ! AddApproach( ptP1, vtTool, dSafeZ, dSafeAggrBottZ, dStElev, dAppr, bOutStart)) {
|
||||
if ( ! AddApproach( ptP1, vtTool, dSafeZ, dSafeAggrBottZ, dStElev, dAppr, bOutStart || bForcedOutStart)) {
|
||||
m_pMchMgr->SetLastError( 2414, "Error in Pocketing : Approach not computable") ;
|
||||
return false ;
|
||||
}
|
||||
// aggiungo attacco
|
||||
SetFeed( GetStartFeed()) ;
|
||||
if ( ! AddLeadIn( ptP1, ptStart, vtStart, vtExtr, pCompo, pRCrv, ! m_Params.m_bInvert, bSplitArcs, bOutStart)) {
|
||||
if ( ! AddLeadIn( ptP1, ptStart, vtStart, vtExtr, pCompo, pRCrv, ! m_Params.m_bInvert, bSplitArcs, bOutStart || bForcedOutStart)) {
|
||||
m_pMchMgr->SetLastError( 2415, "Error in Pocketing : LeadIn not computable") ;
|
||||
return false ;
|
||||
}
|
||||
@@ -3380,7 +3388,7 @@ Pocketing::AddSpiralIn( const ICurveComposite* pCompo, const Vector3d& vtTool, c
|
||||
else {
|
||||
SetFeed( GetStartFeed()) ;
|
||||
GetCurrPos( ptP1) ;
|
||||
if ( ! AddLeadIn( ptP1, ptStart, vtStart, vtExtr, pCompo, pRCrv, ! m_Params.m_bInvert, bSplitArcs, bOutStart)) {
|
||||
if ( ! AddLeadIn( ptP1, ptStart, vtStart, vtExtr, pCompo, pRCrv, ! m_Params.m_bInvert, bSplitArcs, bOutStart || bForcedOutStart)) {
|
||||
m_pMchMgr->SetLastError( 2418, "Error in Pocketing : Link not computable") ;
|
||||
return false ;
|
||||
}
|
||||
@@ -4528,6 +4536,14 @@ Pocketing::ComputeTrapezoidSpiralLeadInLeadOut( ICurveComposite* pCompo, const V
|
||||
|
||||
Vector3d vtDirP = ( bLeadIn ? -vtDir : vtDir) ;
|
||||
|
||||
// se forzato come fuori dal grezzo
|
||||
if ( m_bOpenOutRaw) {
|
||||
Point3d ptNewStart = ptP + vtDirP * ( m_TParams.m_dDiam / 2 + dSafeZ) ;
|
||||
pCompo->AddLine( ptNewStart, ! bLeadIn) ;
|
||||
bIsOutsideRaw = true ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
// recupero la distanza dal bordo del grezzo lungo la direzione di allungamento
|
||||
double dDist ;
|
||||
Vector3d vtNorm ;
|
||||
|
||||
@@ -181,4 +181,5 @@ class Pocketing : public Machining
|
||||
bool m_bAggrBottom ; // flag di utilizzo dell'aggregato da sotto
|
||||
Vector3d m_vtAggrBottom ; // vettore direzione ausiliaria aggregato da sotto
|
||||
AggrBottom m_AggrBottom ; // dati eventuale aggregato da sotto
|
||||
bool m_bOpenOutRaw ; // flag forzatura lati aperti sempre fuori dal grezzo
|
||||
} ;
|
||||
Reference in New Issue
Block a user