From a9235ea92c6ed787f038262f20aff6cdde92cd67 Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Mon, 26 May 2025 12:28:41 +0200 Subject: [PATCH] EgtMachKernel : - in PocketingNT piccola miglioria su Entrate/Uscite a scivolo. --- PocketingNT.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/PocketingNT.cpp b/PocketingNT.cpp index b002795..7c20dd0 100644 --- a/PocketingNT.cpp +++ b/PocketingNT.cpp @@ -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 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 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 ;