EgtMachKernel 1.8k3 :
- correzione a lavorazione Chisel per casi con direzione utensile non perpendicolare al piano del percorso.
This commit is contained in:
+13
-5
@@ -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 &&
|
||||
|
||||
Reference in New Issue
Block a user