diff --git a/CalcPocketing.cpp b/CalcPocketing.cpp index edecc76..7f21973 100644 --- a/CalcPocketing.cpp +++ b/CalcPocketing.cpp @@ -1191,15 +1191,16 @@ CreateSurfFrIncidence( const ICurveComposite* pCrv, const PocketParams& PockPara // per sicurezza... pCrvExtLoopSurfInc->Close() ; - // creo la regione - if ( ! pSfrInc->AddExtLoop( Release( pCrvExtLoopSurfInc))) + // creo la regione ( la curva potrebbe autointersecarsi) + SurfFlatRegionByContours SfrByC ; + if ( ! SfrByC.AddCurve( Release( pCrvExtLoopSurfInc))) return false ; - // guarda Z_AX come normale - if ( pSfrInc->IsValid() && pSfrInc->GetChunkCount() > 0) { - Vector3d vtN = pSfrInc->GetNormVersor() ; - if ( AreOppositeVectorApprox( vtN, Z_AX)) - pSfrInc->Invert() ; + PtrOwner pSfr( SfrByC.GetSurf()) ; + if ( pSfr->IsValid() && pSfr->GetChunkCount() > 0) { + if ( AreOppositeVectorApprox( pSfr->GetNormVersor(), Z_AX)) + pSfr->Invert() ; + pSfrInc->CopyFrom( pSfr) ; return true ; }