diff --git a/SurfBezier.cpp b/SurfBezier.cpp index f0c2378..c8ae0a3 100644 --- a/SurfBezier.cpp +++ b/SurfBezier.cpp @@ -738,7 +738,8 @@ SurfBezier::Load( NgeReader& ngeIn) } } // se trimmata, lettura della regione - if ( m_bTrimmed) { + if ( bTrimmed) { + m_bTrimmed = true ; // creo l'oggetto ResetTrimRegion() ; m_pTrimReg = CreateBasicSurfFlatRegion() ; @@ -746,7 +747,7 @@ SurfBezier::Load( NgeReader& ngeIn) return false ; // ne leggo i dati IGeoObjRW* pGObjRW = dynamic_cast( m_pTrimReg) ; - if ( pGObjRW == nullptr || pGObjRW->Load( ngeIn)) + if ( pGObjRW == nullptr || ! pGObjRW->Load( ngeIn)) return false ; } @@ -1029,11 +1030,13 @@ SurfBezier::Invert( void) } m_vPtCtrl = vPtCtrl_inv ; - // inverto la flat region di trim - //( la specchio rispetto all'asse verticale) - Point3d pt( m_nSpanU * SBZ_TREG_COEFF/2, 0, 0) ; - Vector3d vt( 1, 0, 0) ; - m_pTrimReg->Mirror( pt, vt) ; + if ( m_bTrimmed) { + // inverto la flat region di trim + //( la specchio rispetto all'asse verticale) + Point3d pt( m_nSpanU * SBZ_TREG_COEFF/2, 0, 0) ; + Vector3d vt( 1, 0, 0) ; + m_pTrimReg->Mirror( pt, vt) ; + } return true ; } @@ -1569,7 +1572,7 @@ SurfBezier::GetLeaves( std::vector>& vLeaves) Tree.SetSurf( this, true, ptMin, ptMax) ; //Tree.BuildTree_test() ; //Tree.BuildTree( 5 * LIN_TOL_FINE, 1) ; - Tree.BuildTree( LIN_TOL_FINE, 0.1) ; + Tree.BuildTree( 5 * LIN_TOL_FINE, 0.1) ; Tree.GetLeaves( vCells) ; for (int k = 0 ; k < (int)vCells.size(); ++ k ) { std::tuple tCell ; diff --git a/Tree.cpp b/Tree.cpp index c78e447..dcb91f3 100644 --- a/Tree.cpp +++ b/Tree.cpp @@ -305,8 +305,8 @@ Tree::SetSurf( const SurfBezier* pSrfBz, const bool bSplitPatches, const Point3d Split( 1) ; } } - // se ho fatto solo 1 split e ho due celle foglie nId = 0 e nId = 1 - else if ( (int) m_mTree.size() > 1 && (int) m_mTree.size() < 4) { // si può mettere anche < 5 + // se ho fatto solo 1 split orizzontale e ho due celle foglie nId = 0 e nId = 1 + else if ( (int) m_mTree.size() > 1 && (int) m_mTree.size() < 4 && ! m_mTree.at(-1).IsSplitVert()) { // si può mettere anche < 5 m_mTree[0].m_nLeft = -1 ; m_mTree[0].m_nRight = -1 ; m_mTree[1].m_nLeft = -1 ;