EgtMachKernel :
- in PocketingNT piccola miglioria sui punti inziali delle lavorazioni Spiral ( e casi Trapezi) - in PocketingNT migliorata l'elevazione per la funzione AddRetract.
This commit is contained in:
+23
-13
@@ -2239,7 +2239,7 @@ PocketingNT::GetStartPointsFromSteps( const STEPINFOPOVECTOR& vStepInfo, int nCr
|
||||
ICRVCOMPOPOVECTOR vpCrvs ;
|
||||
GetHomogeneousParts( pCrvLoop, vpCrvs) ;
|
||||
double dLenRef = 0. ;
|
||||
int nIndRef = -1 ;
|
||||
int nIndRef = -1, nCrvRef = -1 ;
|
||||
Point3d ptMid ;
|
||||
// se bordo tutto aperto, allora cerco il punto medio della curva più lunga
|
||||
if ( int( vpCrvs.size()) == 1 && vpCrvs[0]->GetTempProp() == TEMP_PROP_OPEN_EDGE) {
|
||||
@@ -2258,16 +2258,24 @@ PocketingNT::GetStartPointsFromSteps( const STEPINFOPOVECTOR& vStepInfo, int nCr
|
||||
// scorro i tratti con le proprietà richieste e cerco quello più lungo
|
||||
for ( int i = 0 ; i < int( vpCrvs.size()) ; ++ i) {
|
||||
if ( vpCrvs[i]->GetTempProp() == nCrvType) {
|
||||
double dLen = 0. ; vpCrvs[i]->GetLength( dLen) ;
|
||||
if ( dLen > dLenRef) {
|
||||
dLenRef = dLen ;
|
||||
nIndRef = i ;
|
||||
// scorro le curve che lo compongono
|
||||
for ( int j = 0 ; j < int( vpCrvs.size()) ; ++ j) {
|
||||
// recupero la curva corrente
|
||||
const ICurve* pCrv = vpCrvs[i]->GetCurve( j) ;
|
||||
if ( pCrv != nullptr && pCrv->IsValid()) {
|
||||
double dLen = 0. ; vpCrvs[i]->GetLength( dLen) ;
|
||||
if ( dLen > dLenRef) {
|
||||
dLenRef = dLen ;
|
||||
nIndRef = i ;
|
||||
nCrvRef = j ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( nIndRef == -1)
|
||||
if ( nIndRef == -1 || nCrvRef == -1)
|
||||
continue ;
|
||||
vpCrvs[nIndRef]->GetMidPoint( ptMid) ;
|
||||
vpCrvs[nIndRef]->GetCurve(nCrvRef)->GetMidPoint( ptMid) ;
|
||||
}
|
||||
|
||||
#if DEBUG_START_POINT
|
||||
@@ -4020,11 +4028,9 @@ PocketingNT::CalcPaths( STEPINFOPOVECTOR& vStepInfo)
|
||||
// se l'utensile ha un raggio sotto la tolleranza, allora è il punto finale del percorso attuale
|
||||
else if ( m_TParams.m_dDiam / 2. < TOOL_RAD_PTSTART)
|
||||
vStepInfo[i].vPaths.back().pCrvPath->GetEndPoint( ptStartRef) ;
|
||||
// se l'utensile ha un raggio sopra la tolleranza, rimane fisso al punto iniziale del primo percorso
|
||||
else {
|
||||
if ( ! ptStartRef.IsValid())
|
||||
vStepInfo[i].vPaths.front().pCrvPath->GetStartPoint( ptStartRef) ;
|
||||
}
|
||||
// se l'utensile ha un raggio sopra la tolleranza, rimane fisso al punto iniziale del percorso precedente
|
||||
else
|
||||
vStepInfo[i].vPaths.front().pCrvPath->GetStartPoint( ptStartRef) ;
|
||||
// aggiorno la progressBar
|
||||
ExeProcessEvents( 50 + i * 50 / int( vStepInfo.size()), 0) ;
|
||||
}
|
||||
@@ -4264,8 +4270,12 @@ PocketingNT::AddPocket( STEPINFOPOVECTOR& vStepInfo, const Vector3d& vtTool, dou
|
||||
m_pMchMgr->SetLastError( 3014, "Error in PocketingNT : LeadOut not computable") ;
|
||||
return false ;
|
||||
}
|
||||
// calcolo l'elevazione al di sopra del punto corrente
|
||||
double dLastElev = 0. ;
|
||||
if ( ! GetElevation( m_nPhase, ptP1, vtTool, m_TParams.m_dDiam / 2., m_TParams.m_dLen, 0., vtTool, dLastElev))
|
||||
dLastElev = - currStep.dDepth ;
|
||||
// aggiungo retroazione finale
|
||||
if ( ! AddRetract( ptP1, vtTool, dSafeZ, dSafeAggrBottZ, - currStep.dDepth, dAppr, bSplitArcs)) {
|
||||
if ( ! AddRetract( ptP1, vtTool, dSafeZ, dSafeAggrBottZ, dLastElev, dAppr, bSplitArcs)) {
|
||||
m_pMchMgr->SetLastError( 3015, "Error in PocketingNT : Retract not computable") ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user