EgtMachKernel :

- in PocketingNT piccola miglioria su Entrate/Uscite a scivolo.
This commit is contained in:
Riccardo Elitropi
2025-05-26 12:28:41 +02:00
parent 30ab372cf7
commit a9235ea92c
+14 -6
View File
@@ -3470,15 +3470,19 @@ PocketingNT::CalcLeadInOutGlide( const PathInfoPO& PathInfo, const StepInfoPO& S
if ( ! IsNull( pCrvGlideOut) && pCrvGlideOut->IsValid()) {
// controllo che la lunghezza del percorso sia compatibile
double dLen = 0. ;
if ( pCrvGlideOut->GetLength( dLen) && dLen > m_Params.m_dLiTang + 10 * EPS_SMALL) {
if ( pCrvGlideOut->GetLength( dLen) && dLen > m_Params.m_dLoTang + 10 * EPS_SMALL) {
// recupero il tratto di curva alla fine
double dU = 0. ;
if ( ! pCrvGlideOut->GetParamAtLength( m_Params.m_dLiTang, dU))
if ( ! pCrvGlideOut->GetParamAtLength( m_Params.m_dLoTang, dU))
return false ;
pCrvGlide->AddCurve( pCrvGlideOut->CopyParamRange( 0., dU)) ;
if ( ! pCrvGlide->IsValid())
return false ;
}
// se non sufficientemente lunga, la guida diventa la curva stessa
else
pCrvGlide->AddCurve( Release( pCrvGlideOut)) ;
if ( ! pCrvGlide->IsValid())
return false ;
}
// se curva non valida, provo con estensione lineare ( TODO : arco ?)
else {
@@ -3599,8 +3603,10 @@ PocketingNT::CalcPaths( STEPINFOPOVECTOR& vStepInfo)
if ( GetLeadInType() == POCKET_LI_GLIDE) {
PtrOwner<ICurveComposite> pCrvGlideIn( CreateCurveComposite()) ;
if ( IsNull( pCrvGlideIn) ||
! CalcLeadInOutGlide( vStepInfo[i].vPaths[j], vStepInfo[i], vCrvPaths[j], true, pCrvGlideIn))
! CalcLeadInOutGlide( vStepInfo[i].vPaths[j], vStepInfo[i], vCrvPaths[j], true, pCrvGlideIn)) {
m_pMchMgr->SetLastError( 2415, "Error in PocketingNT : LeadIn not computable") ;
return false ;
}
if ( ! IsNull( pCrvGlideIn) && pCrvGlideIn->IsValid())
if ( ! vStepInfo[i].vPaths[j].pCrvGlideIn.Set( Release( pCrvGlideIn)))
return false ;
@@ -3609,8 +3615,10 @@ PocketingNT::CalcPaths( STEPINFOPOVECTOR& vStepInfo)
if ( GetLeadOutType() == POCKET_LO_GLIDE) {
PtrOwner<ICurveComposite> pCrvGlideOut( CreateCurveComposite()) ;
if ( IsNull( pCrvGlideOut) ||
! CalcLeadInOutGlide( vStepInfo[i].vPaths[j], vStepInfo[i], vCrvPaths[j], false, pCrvGlideOut))
! CalcLeadInOutGlide( vStepInfo[i].vPaths[j], vStepInfo[i], vCrvPaths[j], false, pCrvGlideOut)) {
m_pMchMgr->SetLastError( 2416, "Error in PocketingNT : LeadOut not computable") ;
return false ;
}
if ( ! IsNull( pCrvGlideOut) && pCrvGlideOut->IsValid())
if ( ! vStepInfo[i].vPaths[j].pCrvGlideOut.Set( Release( pCrvGlideOut)))
return false ;