X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSMESH%2FSMESH_MeshEditor.cxx;h=146e8c12a2eccbbaa4df2033f7a1ea46c680b1b9;hb=8682ebb1ebbf9c8392c8fa4adcce76d37e171859;hp=89e85dc2e7f3a3a02651f71155b8b78faf96e2ca;hpb=fd96feab4b58b9ebe8706e44b35006e0122d682e;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index 89e85dc2e..146e8c12a 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -7912,7 +7912,8 @@ void SMESH_MeshEditor::MergeNodes (TListOfListOfNodes & theGroupsOfNodes) if ( isOk ) // the non-poly elem remains valid after sticking nodes { - if ( nbNodes != nbUniqueNodes ) + if ( nbNodes != nbUniqueNodes || + !aMesh->ChangeElementNodes( elem, & curNodes[0], nbNodes )) { elemType.Init( elem ).SetID( elem->GetID() ); @@ -7926,10 +7927,6 @@ void SMESH_MeshEditor::MergeNodes (TListOfListOfNodes & theGroupsOfNodes) if ( elem != newElem ) ReplaceElemInGroups( elem, newElem, aMesh ); } - else - { - aMesh->ChangeElementNodes( elem, & curNodes[0], nbNodes ); - } } else { // Remove invalid regular element or invalid polygon @@ -8754,6 +8751,16 @@ SMESH_MeshEditor::SewFreeBorder (const SMDS_MeshNode* theBordFirstNode, else newFaces.Append( myLastCreatedElems(i) ); } + // get segments adjacent to merged nodes + TListOfListOfNodes::iterator groupIt = nodeGroupsToMerge.begin(); + for ( ; groupIt != nodeGroupsToMerge.end(); groupIt++ ) + { + const list& nodes = *groupIt; + SMDS_ElemIteratorPtr segIt = nodes.front()->GetInverseElementIterator( SMDSAbs_Edge ); + while ( segIt->more() ) + segments.insert( segIt->next() ); + } + // find coincident TListOfListOfElementsID equalGroups; if ( !segments.empty() )