diff --git a/SurfRoughing.cpp b/SurfRoughing.cpp index f40125d..4fb4751 100644 --- a/SurfRoughing.cpp +++ b/SurfRoughing.cpp @@ -1632,6 +1632,8 @@ SurfRoughing::AddPocket( const INTVECTOR& vPocket, const Vector3d& vtTool, const double dSafeZ = GetSafeZ() ; // lunghezza di approccio/retrazione double dAppr = m_Params.m_dStartPos ; + // recupero il tipo di svuotatura + int nSubType = m_Params.m_nSubType ; // ciclo sulle regioni bool bStart = true ; @@ -1639,10 +1641,16 @@ SurfRoughing::AddPocket( const INTVECTOR& vPocket, const Vector3d& vtTool, const // recupero la superficie da lavorare const ISurfFlatRegion* pSfr = GetSurfFlatRegion( m_pGeomDB->GetGeoObj( nPockId)) ; + // controllo se la regione è relativa ad uno step base o ad uno step intermedio + bool bIsSubStep = ( pSfr->GetTempProp( 0) == 1) ; + // se il tipo è SPIRAL_OUT e sto gestendo uno step intermedio, lo lavoro come SPIRAL_IN + if ( nSubType == SURFROU_SUB_SPIRALOUT && bIsSubStep) + nSubType = SURFROU_SUB_SPIRALIN ; + ICRVCOMPOPOVECTOR vpCrvs ; // percorso di svuotatura // se si tratta di uno step base, allora lavoro l'intera superficie if ( ! CalcPocketing( pSfr, m_TParams.m_dDiam / 2, 0., m_Params.m_dSideStep, m_Params.m_dSideAngle, - m_Params.m_nSubType, true, vpCrvs)) { + nSubType, true, vpCrvs)) { m_pMchMgr->SetLastError( 3028, "Error in SurfRoughing : Error in CalcPocketing") ; return false ; } @@ -1686,7 +1694,7 @@ SurfRoughing::AddPocket( const INTVECTOR& vPocket, const Vector3d& vtTool, const Point3d ptUp = ptStart ; if ( bOutStart) pCurve->GetEndPoint( ptUp) ; - else if ( m_Params.m_nSubType == SURFROU_SUB_SPIRALIN) + else if ( nSubType == SURFROU_SUB_SPIRALIN) if ( ! CalcRetCrv( vpCrvs[k], ptUp, bOutStart, pRCrv)) return false ; // determino inizio attacco @@ -1734,8 +1742,8 @@ SurfRoughing::AddPocket( const INTVECTOR& vPocket, const Vector3d& vtTool, const if ( IsNull( pCompo)) return false ; if ( ! AddLeadIn( ptP1, ptStart, vtStart, vtExtr, pCompo, - ( ( m_Params.m_nSubType == SURFROU_SUB_SPIRALIN || m_Params.m_nSubType == SURFROU_SUB_SPIRALOUT)) ? Get( pRCrv) : nullptr, - ( m_Params.m_nSubType == SURFROU_SUB_SPIRALOUT) ? m_Params.m_bInvert : ! m_Params.m_bInvert, + ( ( nSubType == SURFROU_SUB_SPIRALIN || nSubType == SURFROU_SUB_SPIRALOUT)) ? Get( pRCrv) : nullptr, + ( nSubType == SURFROU_SUB_SPIRALOUT) ? m_Params.m_bInvert : ! m_Params.m_bInvert, bSplitArcs, bOutStart, false)) { m_pMchMgr->SetLastError( 3013, "Error in SurfRoughing : LeadIn not computable") ; return false ; @@ -1774,7 +1782,7 @@ SurfRoughing::AddPocket( const INTVECTOR& vPocket, const Vector3d& vtTool, const Point3d ptP1 ; SetFeed( GetEndFeed()) ; if ( ! AddLeadOut( ptEnd, vtEnd, vtExtr, - ( ( m_Params.m_nSubType == SURFROU_SUB_SPIRALIN || m_Params.m_nSubType == SURFROU_SUB_SPIRALOUT)) ? Get( pRCrv) : nullptr, + ( ( 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") ; return false ;