EgtMachKernel 1.8k3 :

- correzione a lavorazione Chisel per casi con direzione utensile non perpendicolare al piano del percorso.
This commit is contained in:
Dario Sassi
2017-11-20 14:25:23 +00:00
parent 9937407327
commit 41089de7ef
2 changed files with 13 additions and 5 deletions
+13 -5
View File
@@ -1030,7 +1030,7 @@ Chiseling::ProcessPath( int nPathId, int nPvId, int nClId)
// valore offset
double dSignOffs = ( m_Params.m_nWorkSide == CHISEL_WS_RIGHT) ? dOffs : - dOffs ;
// flag offset
int nFlag = ICurve::OFF_EXTEND ;
int nFlag = ICurve::OFF_EXTEND | ICurve::OFF_MEDIA_INTDZ ;
// se percorso chiuso senza overlap ed inizio/fine è un angolo esterno
if ( pCompo->IsClosed()) {
Vector3d vtStart, vtEnd ;
@@ -1143,10 +1143,18 @@ Chiseling::ProcessPath( int nPathId, int nPvId, int nClId)
// devono essere due rette
if ( pPrevCrv->GetType() == CRV_LINE && pCurrCrv->GetType() == CRV_LINE) {
// devono essere abbastanza lunghe e formare un angolo retto dalla parte della correzione
double dPrevLen ; pPrevCrv->GetLength( dPrevLen) ;
double dCurrLen ; pCurrCrv->GetLength( dCurrLen) ;
Vector3d vtPrevDir ; pPrevCrv->GetEndDir( vtPrevDir) ;
Vector3d vtCurrDir ; pCurrCrv->GetStartDir( vtCurrDir) ;
double dPrevLen ;
pPrevCrv->GetLength( dPrevLen) ;
double dCurrLen ;
pCurrCrv->GetLength( dCurrLen) ;
Vector3d vtPrevDir ;
pPrevCrv->GetEndDir( vtPrevDir) ;
vtPrevDir -= ( vtPrevDir * vtExtr) * vtExtr ;
vtPrevDir.Normalize() ;
Vector3d vtCurrDir ;
pCurrCrv->GetStartDir( vtCurrDir) ;
vtCurrDir -= ( vtCurrDir * vtExtr) * vtExtr ;
vtCurrDir.Normalize() ;
double dProVett = ( vtPrevDir ^ vtCurrDir) * vtExtr ;
const double SIN_ANG_LIM = sin( ( ANG_RIGHT - 100 * EPS_ANG_SMALL) * DEGTORAD) ;
if ( dPrevLen > 0.5 * m_TParams.m_dDiam - EPS_SMALL &&