From ff5e5d0e734f0c263b91eb6e711d980a1e8d9e49 Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 2 Sep 2008 08:46:36 +0000 Subject: [PATCH] [SALOME platform 0019943]: Pb with projection 2d In SMESH_Pattern::Load(mesh,face), fix treating seam vertices of not seam edges --- src/SMESH/SMESH_Pattern.cxx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/SMESH/SMESH_Pattern.cxx b/src/SMESH/SMESH_Pattern.cxx index 342c4fe59..b8dd698a1 100644 --- a/src/SMESH/SMESH_Pattern.cxx +++ b/src/SMESH/SMESH_Pattern.cxx @@ -631,12 +631,13 @@ bool SMESH_Pattern::Load (SMESH_Mesh* theMesh, // vertices for ( elIt = eList.begin(); elIt != eList.end(); elIt++ ) { + int nbV = myShapeIDMap.Extent(); myShapeIDMap.Add( TopExp::FirstVertex( *elIt, true )); - if ( helper.IsSeamShape( *elIt ) ) { - // vertices present twice in the wire have two corresponding key points - const TopoDS_Vertex& lastV = TopExp::LastVertex( *elIt, true ); - if ( helper.IsRealSeam( lastV )) - myShapeIDMap.Add( lastV );// vertex orienation is REVERSED + bool added = ( nbV < myShapeIDMap.Extent() ); + if ( !added ) { // vertex encountered twice + // a seam vertex have two corresponding key points + myShapeIDMap.Add( TopExp::FirstVertex( *elIt, true ).Reversed()); + ++nbNodes; } if ( SMESHDS_SubMesh * eSubMesh = aMeshDS->MeshElements( *elIt )) nbNodes += eSubMesh->NbNodes() + 1; @@ -677,7 +678,7 @@ bool SMESH_Pattern::Load (SMESH_Mesh* theMesh, else { // on CLOSED edge (i.e. having one vertex with different orienations) for ( int is2 = 0; is2 < 2; ++is2 ) { TopoDS_Shape & v = is2 ? v2 : v1; - if ( helper.IsSeamShape( v ) ) { + if ( helper.IsRealSeam( v ) ) { // reverse or not depending on orientation of adjacent seam TopoDS_Edge seam; list::iterator eIt2 = elIt; -- 2.39.2