diff --git a/CalcPocketing.cpp b/CalcPocketing.cpp index 7f35749..4af806b 100644 --- a/CalcPocketing.cpp +++ b/CalcPocketing.cpp @@ -3798,6 +3798,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 ; @@ -3808,9 +3812,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 ; @@ -4198,9 +4200,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 ;