EgtMachKernel 2.2c2 :

- corretto errore in fresatura con attacco o uscita a scivolo più lunghi del percorso chiuso e sovrapposizione.
This commit is contained in:
Dario Sassi
2020-03-10 22:34:27 +00:00
parent 82f3d1a5d8
commit 39dc5e2e14
2 changed files with 11 additions and 14 deletions
BIN
View File
Binary file not shown.
+11 -14
View File
@@ -3480,29 +3480,29 @@ Milling::AddLeadIn( const Point3d& ptP1, const Point3d& ptStart, const Vector3d&
pCompo->GetDomain( dParS, dParE) ;
if ( ! pCrv.Set( CreateCurveComposite()) || ! pCrv->AddCurve( pCompo->CopyParamRange( dU, dParE)))
return false ;
if ( m_dAddedOverlap > EPS_SMALL) {
pCrv->Invert() ;
pCrv->TrimStartAtLen( m_dAddedOverlap) ;
pCrv->Invert() ;
}
}
else {
if ( ! pCrv.Set( pCompo->Clone()))
return false ;
}
if ( m_dAddedOverlap > EPS_SMALL) {
pCrv->Invert() ;
pCrv->TrimStartAtLen( m_dAddedOverlap) ;
pCrv->Invert() ;
}
}
else {
double dU ;
if ( pCompo->GetParamAtLength( m_dAddedOverlap + dTang, dU)) {
if ( ! pCrv.Set( CreateCurveComposite()) || ! pCrv->AddCurve( pCompo->CopyParamRange( 0, dU)))
return false ;
if ( m_dAddedOverlap > EPS_SMALL)
pCrv->TrimStartAtLen( m_dAddedOverlap) ;
}
else {
if ( ! pCrv.Set( pCompo->Clone()))
return false ;
}
if ( m_dAddedOverlap > EPS_SMALL)
pCrv->TrimStartAtLen( m_dAddedOverlap) ;
pCrv->Invert() ;
}
pCrv->SetExtrusion( vtN) ;
@@ -3655,13 +3655,13 @@ Milling::AddLeadOut( const Point3d& ptEnd, const Vector3d& vtEnd, const Vector3d
if ( pCompo->GetParamAtLength( m_dAddedOverlap + dTang, dU)) {
if ( ! pCrv.Set( CreateCurveComposite()) || ! pCrv->AddCurve( pCompo->CopyParamRange( 0, dU)))
return false ;
if ( m_dAddedOverlap > EPS_SMALL)
pCrv->TrimStartAtLen( m_dAddedOverlap) ;
}
else {
if ( ! pCrv.Set( pCompo->Clone()))
return false ;
}
if ( m_dAddedOverlap > EPS_SMALL)
pCrv->TrimStartAtLen( m_dAddedOverlap) ;
}
else {
double dLen, dU ;
@@ -3670,17 +3670,14 @@ Milling::AddLeadOut( const Point3d& ptEnd, const Vector3d& vtEnd, const Vector3d
pCompo->GetDomain( dParS, dParE) ;
if ( ! pCrv.Set( CreateCurveComposite()) || ! pCrv->AddCurve( pCompo->CopyParamRange( dU, dParE)))
return false ;
if ( m_dAddedOverlap > EPS_SMALL) {
pCrv->Invert() ;
pCrv->TrimStartAtLen( m_dAddedOverlap) ;
pCrv->Invert() ;
}
}
else {
if ( ! pCrv.Set( pCompo->Clone()))
return false ;
}
pCrv->Invert() ;
if ( m_dAddedOverlap > EPS_SMALL)
pCrv->TrimStartAtLen( m_dAddedOverlap) ;
}
pCrv->SetExtrusion( vtN) ;
// la porto alla giusta quota