diff --git a/SurfRoughing.cpp b/SurfRoughing.cpp index 91727a2..6a9a214 100644 --- a/SurfRoughing.cpp +++ b/SurfRoughing.cpp @@ -1614,7 +1614,7 @@ SurfRoughing::ProcessPath( int nPathId, int nTempId, int nPvId, int nClId) // Eseguo le svuotature double dElev = dDepth ; - if ( ! AddPocket( vPocket, vtTool, vtExtr, vCrvPocketCompo, dElev, dStep, dSubStep, bSplitArcs)) + if ( ! AddPocket( vPocket, vtTool, vCrvPocketCompo, dElev, dStep, dSubStep, bSplitArcs)) return false ; } @@ -1797,8 +1797,8 @@ SurfRoughing::GetActiveSurfaces( INTVECTOR& vSurfId) const //---------------------------------------------------------------------------- bool -SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, const Vector3d& vtExtr, - const ICRVCOMPOPOVECTOR& vCrvPocketCompo, double dElev, double dStep, double dSubStep, bool bSplitArcs) +SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, const ICRVCOMPOPOVECTOR& vCrvPocketCompo, + double dElev, double dStep, double dSubStep, bool bSplitArcs) { // recupero distanze di sicurezza double dSafeZ = GetSafeZ() ; @@ -1925,14 +1925,14 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co dCoeffFeed = ( dTempParam > EPS_SMALL ? dTempParam : 1) ; // determino inizio attacco Point3d ptP1 ; - if ( ! CalcLeadInStart( ptStart, vtStart, vtExtr, pRCrv, ptP1)) + if ( ! CalcLeadInStart( ptStart, vtStart, vtTool, pRCrv, ptP1)) return false ; // determino elevazione su inizio attacco double dStElev = - dDepth ; - dStElev -= ( ptP1 - ptStart) * vtExtr ; + dStElev -= ( ptP1 - ptStart) * vtTool ; // se attacco a zigzag o a spirale o a scivolo, l'elevazione va nell'attacco if ( GetLeadInType() != POCKET_LI_NONE) { - ptP1 += vtExtr * ( dStElev + LIO_ELEV_TOL) ; + ptP1 += vtTool * ( dStElev + LIO_ELEV_TOL) ; dStElev = - LIO_ELEV_TOL ; } // se inizio, approccio globale al punto iniziale @@ -1969,8 +1969,9 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co } // aggiungo attacco SetFeed( GetStartFeed()) ; - bool bNoneForced = ( bOutStart || bSingleCrv || bIsZigZagOneWayPath) ; - if ( ! AddLeadIn( ptP1, ptStart, vtStart, vtExtr, pSfrPock, + bool bNoneForced = ( bOutStart || bSingleCrv || + ( bIsZigZagOneWayPath && ! vpCrvs[k]->IsClosed())) ; + if ( ! AddLeadIn( ptP1, ptStart, vtStart, vtTool, pSfrPock, ( ( nSubType == SURFROU_SUB_SPIRALIN || nSubType == SURFROU_SUB_SPIRALOUT)) ? Get( pRCrv) : nullptr, ( nSubType == SURFROU_SUB_SPIRALOUT) ? bInvert : ! bInvert, bSplitArcs, bNoneForced, false)) { @@ -2013,7 +2014,7 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co // aggiungo uscita Point3d ptP1 ; SetFeed( GetEndFeed()) ; - if ( ! AddLeadOut( ptEnd, vtEnd, vtExtr, + if ( ! AddLeadOut( ptEnd, vtEnd, vtTool, ( ( nSubType == SURFROU_SUB_SPIRALIN || nSubType == SURFROU_SUB_SPIRALOUT)) ? Get( pRCrv) : nullptr, bSplitArcs, false, ptP1, dEndElev)) { m_pMchMgr->SetLastError( 3014, "Error in SurfRoughing : LeadOut not computable") ; diff --git a/SurfRoughing.h b/SurfRoughing.h index 996ab06..3e66edb 100644 --- a/SurfRoughing.h +++ b/SurfRoughing.h @@ -76,8 +76,8 @@ class SurfRoughing : public Machining bool GetCurves( SelData Id, ICURVEPLIST& lstPC) ; bool Chain( int nGrpDestId) ; bool ProcessPath( int nPathId, int nTempId, int nPvId, int nClId) ; - bool AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, const Vector3d& vtExtr, - const ICRVCOMPOPOVECTOR& vCrvPocketCompo, double dElev, double dStep, double dSubStep, bool bSplitArcs) ; + bool AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, const ICRVCOMPOPOVECTOR& vCrvPocketCompo, + double dElev, double dStep, double dSubStep, bool bSplitArcs) ; bool AddApproach( const Point3d& ptP, const Vector3d& vtTool, double dSafeZ, double dElev, double dAppr) ; bool AddLinkApproach( const Point3d& ptP, const Vector3d& vtTool, double dSafeZ, double dElev, double dAppr, bool bOutMove) ; bool AddLinkRetract( const Point3d& ptP, const Vector3d& vtTool, double dSafeZ, double dElev, double dAppr) ;