From 0417c43bcf167315054f08bf9913f840dfa19af0 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 19 May 2025 17:39:26 +0200 Subject: [PATCH] EgtGeomKernel : - correzione a Pocketing per calcolo punto di inizio con lati aperti. --- CalcPocketing.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/CalcPocketing.cpp b/CalcPocketing.cpp index 5213465..340b238 100644 --- a/CalcPocketing.cpp +++ b/CalcPocketing.cpp @@ -3791,6 +3791,10 @@ GetPtStartOnOpenEdgeByOrigCurve( const ICurveComposite* pCrvOrig, const PocketPa Vector3d vtMidOutTmp ; // ricavo il punto medio e il vettore tangente ad esso associato if ( pCrvOpen->GetPointD1D2( 0.5, ICurve::FROM_MINUS, ptSTmp, &vtMidOutTmp)) { + // versore d'uscita + vtMidOutTmp.Normalize() ; + vtMidOutTmp.Rotate( Z_AX, 0, -1) ; + ptSTmp += vtMidOutTmp * max( PockParams.dRad - PockParams.dSideStep, 0.) ; // cerco la sottocurva più vicina a ptSTmp int nFlag ; double dMyPar ; @@ -3801,9 +3805,7 @@ GetPtStartOnOpenEdgeByOrigCurve( const ICurveComposite* pCrvOrig, const PocketPa if ( pMyCrv != nullptr && pMyCrv->IsValid() && pMyCrv->GetTempProp( 0) == TEMP_PROP_OPEN_EDGE) { // recupero ptStart pMyCrv->GetMidPoint( ptStart) ; - // versore d'uscita - vtMidOutTmp.Normalize() ; - vtMidOutTmp.Rotate( Z_AX, - ANG_RIGHT) ; + // assegno direzione fuori vtMidOut = vtMidOutTmp ; // flag per possibile entrata da fuori bMidOut = true ; @@ -4191,9 +4193,10 @@ SetAdvancedPtStartForPath( ICRVCOMPOPOVECTOR& vCrvOffsAct, const PocketParams& P bool& bMidOut, int& nIndex, ICRVCOMPOPOVECTOR& vCrvOrigChunkLoops) { // controllo dei parametri - for ( int i = 0 ; i < int( vCrvOffsAct.size()) ; ++ i) + for ( int i = 0 ; i < int( vCrvOffsAct.size()) ; ++ i) { if ( IsNull( vCrvOffsAct[i]) || ! vCrvOffsAct[i]->IsValid() || vCrvOffsAct[i]->GetCurveCount() == 0) return false ; + } if ( pSrfToWork == nullptr || ! pSrfToWork->IsValid() || pSrfToWork->GetChunkCount() != 1) return false ; nIndex = 0 ;