From 41f8b0d103bcb6a0ce3bef553b0817e48ab50580 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 4 Nov 2015 11:25:41 +0000 Subject: [PATCH] EgtGeomKernel : - piccola miglioria a costruzione Regioni su piani generici. --- RemoveCurveOverlaps.cpp | 5 ++++- SurfFlatRegion.cpp | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) 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 ;