From 3544ff54f5713a6b0e64c766627cab13d58d7e55 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 19 Nov 2019 10:37:56 +0000 Subject: [PATCH] EgtGeomKernel : - correzioni a operazioni booleane su TriMesh. --- SurfTriMeshBooleans.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/SurfTriMeshBooleans.cpp b/SurfTriMeshBooleans.cpp index aadfb28..2825094 100644 --- a/SurfTriMeshBooleans.cpp +++ b/SurfTriMeshBooleans.cpp @@ -2368,9 +2368,14 @@ SurfTriMesh::RemoveTJunction( void) if ( it == vvIndexesSet[nP][nPP].end()) continue ; Point3d ptP0, ptP1, ptP2 ; - GetVertex( m_vTria[it->nTriaId].nIdVert[0], ptP0) ; - GetVertex( m_vTria[it->nTriaId].nIdVert[1], ptP1) ; - GetVertex( m_vTria[it->nTriaId].nIdVert[2], ptP2) ; + while ( it != vvIndexesSet[nP][nPP].end() && + ( ! ( GetVertex(m_vTria[it->nTriaId].nIdVert[0], ptP0) && + GetVertex(m_vTria[it->nTriaId].nIdVert[1], ptP1) && + GetVertex(m_vTria[it->nTriaId].nIdVert[2], ptP2)))) { + ++ it ; + } + if ( it == vvIndexesSet[nP][nPP].end()) + continue ; CurveLine cvLine0 ; cvLine0.Set( ptP0, ptP1) ; CurveLine cvLine1 ; @@ -2405,8 +2410,8 @@ SurfTriMesh::RemoveTJunction( void) cvAddLoop.AddCurve( cvAddLine2) ; SurfFlatRegion AddFacet ; AddFacet.AddExtLoop( cvAddLoop) ; - Facet.Add( AddFacet) ; - RemoveTriangle( it->nTriaId) ; + if ( Facet.Add( AddFacet)) + RemoveTriangle( it->nTriaId) ; ++it ; } int nChunkNum = Facet.GetChunkCount() ;