From: eap Date: Thu, 26 Jan 2012 11:24:22 +0000 (+0000) Subject: Fix removal of free nodes X-Git-Tag: V6_5_0a1~173 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=61915a66ed38e9452e0e4a911ec79261b862c29d;p=modules%2Fsmesh.git Fix removal of free nodes --- diff --git a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx index a1f94b36d..9ec55d129 100644 --- a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx +++ b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx @@ -1645,17 +1645,11 @@ bool StdMeshers_Cartesian_3D::Compute(SMESH_Mesh & theMesh, } // make other sub-shapes computed setSubmeshesComputed( theMesh, theShape ); - return true; } // remove free nodes if ( SMESHDS_SubMesh * smDS = meshDS->MeshElements( helper.GetSubShapeID() )) { - // grid nodes - for ( size_t i = 0; i < grid._nodes.size(); ++i ) - if ( grid._nodes[i] && grid._nodes[i]->NbInverseElements() == 0 ) - meshDS->RemoveFreeNode( grid._nodes[i], smDS, /*fromGroups=*/false ); - // intersection nodes for ( int iDir = 0; iDir < 3; ++iDir ) { @@ -1665,11 +1659,19 @@ bool StdMeshers_Cartesian_3D::Compute(SMESH_Mesh & theMesh, multiset< IntersectionPoint >::iterator ip = lines[i]._intPoints.begin(); for ( ; ip != lines[i]._intPoints.end(); ++ip ) if ( ip->_node && ip->_node->NbInverseElements() == 0 ) - meshDS->RemoveFreeNode( grid._nodes[i], smDS, /*fromGroups=*/false ); + meshDS->RemoveFreeNode( ip->_node, smDS, /*fromGroups=*/false ); } } + + // grid nodes + for ( size_t i = 0; i < grid._nodes.size(); ++i ) + if ( !grid._isBndNode[i] ) // nodes on boundary are already removed + if ( grid._nodes[i] && grid._nodes[i]->NbInverseElements() == 0 ) + meshDS->RemoveFreeNode( grid._nodes[i], smDS, /*fromGroups=*/false ); } + return nbAdded; + // TODO: evalute time }