From b96daf4925995f3f78c2252996d6f1d347ffeccc Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Thu, 23 Nov 2023 12:42:47 +0100 Subject: [PATCH] EgtGeomKernel : - piccoli aggiustamenti alla gestione delle surf di Bezier - correzione ai trim interni a una cella di un Tree di Bezier. --- SurfBezier.cpp | 24 ++++++++++++++++-------- Tree.cpp | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/SurfBezier.cpp b/SurfBezier.cpp index c8ae0a3..e43e74c 100644 --- a/SurfBezier.cpp +++ b/SurfBezier.cpp @@ -232,8 +232,9 @@ SurfBezier::GetArea( double& dArea) const // inizio con area nulla dArea = 0 ; // calcolo l'area - if ( ! GetAuxSurf()) - return false ; + if ( m_pSTM == nullptr) + if ( ! GetAuxSurf()) + return false ; return m_pSTM->GetArea( dArea) ; } @@ -247,8 +248,9 @@ SurfBezier::GetCentroid( Point3d& ptCen) const // inizio con centro nell'origine ptCen = ORIG ; // calcolo il baricentro - if ( ! GetAuxSurf()) - return false ; + if ( m_pSTM == nullptr) + if ( ! GetAuxSurf()) + return false ; return m_pSTM->GetCentroid( ptCen) ; } @@ -581,6 +583,10 @@ SurfBezier::CopyFrom( const SurfBezier& sbSrc) m_vPtCtrl = sbSrc.m_vPtCtrl ; if ( sbSrc.m_bRat) m_vWeCtrl = sbSrc.m_vWeCtrl ; + if ( sbSrc.m_bTrimmed) { + m_bTrimmed = true ; + m_pTrimReg = sbSrc.m_pTrimReg ; + } m_nTempProp[0] = sbSrc.m_nTempProp[0] ; m_nTempProp[1] = sbSrc.m_nTempProp[1] ; return true ; @@ -780,8 +786,9 @@ SurfBezier::GetLocalBBox( BBox3d& b3Loc, int nFlag) const // deve essere preciso else { // verifico esistenza trimesh associata - if ( ! GetAuxSurf()) - return false ; + if ( m_pSTM == nullptr) + if ( ! GetAuxSurf()) + return false ; // calcolo il box della trimesh return m_pSTM->GetLocalBBox( b3Loc, nFlag) ; } @@ -803,8 +810,9 @@ SurfBezier::GetBBox( const Frame3d& frRef, BBox3d& b3Ref, int nFlag) const // deve essere preciso else { // verifico esistenza trimesh associata - if ( ! GetAuxSurf()) - return false ; + if ( m_pSTM == nullptr) + if ( ! GetAuxSurf()) + return false ; // calcolo il box della trimesh return m_pSTM->GetBBox( frRef, b3Ref, nFlag) ; } diff --git a/Tree.cpp b/Tree.cpp index dcb91f3..a6ffae9 100644 --- a/Tree.cpp +++ b/Tree.cpp @@ -2821,7 +2821,7 @@ Tree::CreateIslandAndHoles( const int& nLeafId, std::vector& vPo plInLoop.Clear() ; } else - break ; + continue ; } } return true ;