EgtMachKernel :
- in PocketingNT modifica punto iniziale delle lavorazioni a seconda del raggio utensile.
This commit is contained in:
+12
-7
@@ -55,6 +55,7 @@ static string KEY_THICK = "THICK" ;
|
||||
static int LINK_CURVE_PROP = -3 ;
|
||||
static double EXTRA_ELEV = 5. ;
|
||||
static double SAFETY_LINK_COS = cos( - ( 175 * DEGTORAD)) ;
|
||||
static double TOOL_RAD_PTSTART = 20. ;
|
||||
// Parametri avanzati da UserNotes
|
||||
const string UN_MAXELEV = "MaxElev" ;
|
||||
const string UN_OPEN = "Open" ;
|
||||
@@ -3405,22 +3406,19 @@ PocketingNT::CalcPaths( STEPINFOPOVECTOR& vStepInfo)
|
||||
|
||||
// punto finale di riferimento per il percorso attuale ( serve per trovare il punto iniziale
|
||||
// del percorso successivo)
|
||||
Point3d ptEndLastPath = P_INVALID ;
|
||||
Point3d ptStartRef = P_INVALID ;
|
||||
|
||||
// controllo parametri per casi ottimizzati
|
||||
double dMaxOptSize = m_Params.m_dSideStep ;
|
||||
GetValInNotes( m_Params.m_sUserNotes, UN_MAXOPTSIZE, dMaxOptSize) ;
|
||||
|
||||
// se non richiesto controllo con il grezzo, elimino la superficie limite
|
||||
|
||||
|
||||
// scorro gli indici delle superfici
|
||||
for ( int i = 0 ; i < int( vStepInfo.size()) ; ++ i) {
|
||||
// calcolo i percorsi di Pocketing
|
||||
ICRVCOMPOPOVECTOR vCrvPaths ;
|
||||
if ( ! CalcPocketing( vStepInfo[i].pSfrPock, m_TParams.m_dDiam / 2, GetOffsR(), m_Params.m_dSideStep,
|
||||
m_Params.m_dSideAngle, m_dOpenMinSafe, m_Params.m_nSubType, true, m_Params.m_bInvert,
|
||||
false, true, true, ptEndLastPath, vStepInfo[i].pSfrLimit, false, dMaxOptSize, vCrvPaths)) {
|
||||
false, true, true, ptStartRef, vStepInfo[i].pSfrLimit, false, dMaxOptSize, vCrvPaths)) {
|
||||
m_pMchMgr->SetLastError( 3028, "Error in PocketingNT : Error in CalcPocketing") ;
|
||||
return false ;
|
||||
}
|
||||
@@ -3430,8 +3428,15 @@ PocketingNT::CalcPaths( STEPINFOPOVECTOR& vStepInfo)
|
||||
// sistemo gli archi per massimo angolo al centro
|
||||
for ( int j = 0 ; j < int( vCrvPaths.size()) ; ++ j)
|
||||
VerifyArcs( vCrvPaths[j]) ;
|
||||
// recupero il punto finale del percorso per lo step successivo
|
||||
vCrvPaths.back()->GetEndPoint( ptEndLastPath) ;
|
||||
// definisco il nuovo punto di riferimento per il percorso successivo
|
||||
// se l'utensile ha un raggio sotto la tolleranza, allora è il punto finale del percorso attuale
|
||||
if ( m_TParams.m_dDiam / 2. < TOOL_RAD_PTSTART)
|
||||
vCrvPaths.back()->GetEndPoint( ptStartRef) ;
|
||||
// se l'utensile ha un raggio sopra la tolleranza, rimane fisso al punto iniziale del primo percorso
|
||||
else {
|
||||
if ( ! ptStartRef.IsValid())
|
||||
vCrvPaths.front()->GetStartPoint( ptStartRef) ;
|
||||
}
|
||||
// inserisco i percorsi nel vettore dei Paths
|
||||
vStepInfo[i].vPaths.resize( int( vCrvPaths.size())) ;
|
||||
for ( int j = 0 ; j < int( vCrvPaths.size()) ; ++ j) {
|
||||
|
||||
Reference in New Issue
Block a user