From: eap Date: Thu, 27 Feb 2014 07:53:03 +0000 (+0400) Subject: 22360]: EDF SMESH: Body Fitting algorithm: incorporate edges X-Git-Tag: V7_4_0a1~51 X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=commitdiff_plain;h=afed1e3409150ddc451606581cfb5d6e571891a4 22360]: EDF SMESH: Body Fitting algorithm: incorporate edges Fix a case with vertex falling on a facet and not used at facet construction --- diff --git a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx index 38f1c24f9..e880bb1a7 100644 --- a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx +++ b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx @@ -1934,6 +1934,22 @@ namespace } } // while ( nbSplits > 0 ) + if ( quad._edgeNodes.size() > nbUsedEdgeNodes ) + { + // make _vertexNodes from not used _edgeNodes + const double tol = 0.05 * Min( Min( _sideLength[0], _sideLength[1] ), _sideLength[0] ); + for ( size_t iP = 0; iP < quad._edgeNodes.size(); ++iP ) + { + if ( quad._edgeNodes[ iP ]._isUsedInFace ) continue; + _Node* equalNode = + FindEqualNode( _vertexNodes, quad._edgeNodes[ iP ].EdgeIntPnt(), tol*tol ); + if ( equalNode ) + equalNode->Add( quad._edgeNodes[ iP ].EdgeIntPnt() ); + else + _vertexNodes.push_back( quad._edgeNodes[ iP ]); + } + } + if ( polygon->_links.size() < 3 ) _polygons.pop_back();