diff --git a/CalcPocketing.cpp b/CalcPocketing.cpp index 238df29..68e0ad6 100644 --- a/CalcPocketing.cpp +++ b/CalcPocketing.cpp @@ -58,6 +58,7 @@ struct PocketParams { bool bAboveHead = true ; // flag per testa da sopra ( Z+) bool bSmooth = false ; // curve smussate bool bInvert = false ; // inversione dei percorsi + bool bAvoidOpt = false ; // flag per evitare casi ottimizzati Point3d ptStart = P_INVALID ; // punto d'inizio Point3d ptEnd = P_INVALID ; // punto di fine SurfFlatRegion SfrLimit ; // superficie limite per estensione lati aperti @@ -6107,9 +6108,9 @@ CalcSpiral( const ISurfFlatRegion* pSrfPock, const PocketParams& PockParams, int // CONTROLLO PER CASI OTTIMIZZATI bool bHasIsland = ( pSrfPock->GetLoopCount( 0) > 1) ; - // se non ho isole e curva valida allora controllo casi ottimizzati - if ( ! bHasIsland && ( ! vCrvOrigChunkLoops.empty()) && ! IsNull( vCrvOrigChunkLoops[0])) { + if ( ! PockParams.bAvoidOpt && ! bHasIsland && + ( ! vCrvOrigChunkLoops.empty()) && ! IsNull( vCrvOrigChunkLoops[0])) { // --------------------------- caso spirale --------------------------------------- PtrOwner pCrvBorder( ConvertCurveToComposite( pSrfPock->GetLoop( 0, 0))) ; @@ -7242,7 +7243,7 @@ AddOneWay( const ISurfFlatRegion* pSrfPock, const ISurfFlatRegion* pSfrOrig, con //---------------------------------------------------------------------------- bool CalcPocketing( const ISurfFlatRegion* pSfr, double dRad, double dRadOffs, double dStep, double dAngle, - int nType, bool bSmooth, bool bInvert, ISurfFlatRegion* pSfrLimit, ICRVCOMPOPOVECTOR& vCrvCompoRes) + int nType, bool bSmooth, bool bInvert, bool bAvoidOpt, ISurfFlatRegion* pSfrLimit, ICRVCOMPOPOVECTOR& vCrvCompoRes) { // controllo dei parametri if ( pSfr == nullptr || ! pSfr->IsValid() || @@ -7262,6 +7263,7 @@ CalcPocketing( const ISurfFlatRegion* pSfr, double dRad, double dRadOffs, double myParams.dAngle = dAngle ; myParams.dSideStep = dStep ; myParams.bInvert = bInvert ; + myParams.bAvoidOpt = bAvoidOpt ; if ( pSfrLimit != nullptr && pSfrLimit->IsValid()) myParams.SfrLimit.CopyFrom( pSfrLimit) ;