diff --git a/RemoveCurveOverlaps.cpp b/RemoveCurveOverlaps.cpp index 2a657a6..ef8c957 100644 --- a/RemoveCurveOverlaps.cpp +++ b/RemoveCurveOverlaps.cpp @@ -148,11 +148,14 @@ RemoveCurveOverlaps( ICurve* pCurve, bool bRemoveSam, bool bRemoveCtr, ICURVEPLI ++ iIter ; } - // riporto la curva nel riferimento originale + // riporto le curve nel riferimento originale if ( bNeedRef) { for ( auto pCrv : CrvLst) pCrv->ToGlob( frExtr) ; } + // assegno il versore estrusione originale + for ( auto pCrv : CrvLst) + pCrv->SetExtrusion( vtExtr) ; return true ; } \ No newline at end of file diff --git a/SurfFlatRegion.cpp b/SurfFlatRegion.cpp index 9d72d98..16d6be9 100644 --- a/SurfFlatRegion.cpp +++ b/SurfFlatRegion.cpp @@ -83,7 +83,13 @@ SurfFlatRegion::AddExtLoop( const ICurve& cCrv) bool SurfFlatRegion::AddExtLoop( ICurve* pCrv) { - // rimuovo eventuali sovrapposizioni + // verifico sia piana e imposto estrusione come normale al piano + double dArea ; + Plane3d plPlane ; + if ( ! pCrv->GetArea( plPlane, dArea)) + return false ; + pCrv->SetExtrusion( plPlane.vtN) ; + // rimuovo eventuali sovrapposizioni (calcolate nel suo piano) ICURVEPLIST CrvLst ; if ( ! RemoveCurveOverlaps( pCrv, true, true, CrvLst)) return false ; @@ -218,7 +224,13 @@ SurfFlatRegion::AddIntLoop( const ICurve& cCrv) bool SurfFlatRegion::AddIntLoop( ICurve* pCrv) { - // rimuovo eventuali sovrapposizioni + // verifico sia piana e imposto estrusione come normale al piano + double dArea ; + Plane3d plPlane ; + if ( ! pCrv->GetArea( plPlane, dArea)) + return false ; + pCrv->SetExtrusion( plPlane.vtN) ; + // rimuovo eventuali sovrapposizioni (calcolate nel suo piano) ICURVEPLIST CrvLst ; if ( ! RemoveCurveOverlaps( pCrv, true, true, CrvLst)) return false ;