EgtMachKernel :
- modifiche a Spiral di Pocketing per lavorare tutte le sotto-aree.
This commit is contained in:
+20
-3
@@ -2887,9 +2887,11 @@ Pocketing::CalcSpiral( const ICurveComposite* pCompo, bool bSplitArcs,
|
||||
}
|
||||
|
||||
// ciclo di offset verso l'interno
|
||||
const int MAX_ITER = 100 ;
|
||||
const int MAX_ITER = 1000 ;
|
||||
int nIter = 0 ;
|
||||
ICURVEPOVECTOR vOffs ;
|
||||
ICURVEPOVECTOR vCrvStack ;
|
||||
DBLVECTOR vRadStack ;
|
||||
PtrOwner<ICurve> pOffs ;
|
||||
double dCurrRad = GetCurveRadius( pCompo) ;
|
||||
while ( nIter < MAX_ITER) {
|
||||
@@ -2899,8 +2901,23 @@ Pocketing::CalcSpiral( const ICurveComposite* pCompo, bool bSplitArcs,
|
||||
m_pMchMgr->SetLastError( 2412, "Error in Pocketing : Offset not computable") ;
|
||||
return false ;
|
||||
}
|
||||
// recupero la prima curva di offset
|
||||
PtrOwner<ICurve> pNextOffs( OffsCrv.GetLongerCurve()) ;
|
||||
// recupero le curve di offset e le metto sullo stack
|
||||
ICurve* pCrv = OffsCrv.GetLongerCurve() ;
|
||||
while ( pCrv != nullptr) {
|
||||
vCrvStack.emplace_back( pCrv) ;
|
||||
vRadStack.emplace_back( dCurrRad) ;
|
||||
if ( nIter == 0)
|
||||
break ;
|
||||
pCrv = OffsCrv.GetCurve() ;
|
||||
}
|
||||
// recupero la prossima curva di offset
|
||||
PtrOwner<ICurve> pNextOffs ;
|
||||
if ( ! vCrvStack.empty()) {
|
||||
pNextOffs.Set( Release( vCrvStack.back())) ;
|
||||
vCrvStack.pop_back() ;
|
||||
dCurrRad = vRadStack.back() ;
|
||||
vRadStack.pop_back() ;
|
||||
}
|
||||
double dRad = GetCurveRadius( pNextOffs) ;
|
||||
bool bNextOk = ( dRad > EPS_ZERO && dRad < dCurrRad) ;
|
||||
bool bSmallRad = ( nIter == 0 ? dOffs < dTRad + GetOffsR() + EPS_ZERO : dOffs < dTRad + EPS_ZERO) ;
|
||||
|
||||
Reference in New Issue
Block a user