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 ;