From 23d3375b50708f384dbb404dee933bd72d54f9b0 Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 3 Mar 2009 09:01:11 +0000 Subject: [PATCH] 0020184: EDF SMESH 952: Projection 2D does not work project only if there are nodes on face --- src/StdMeshers/StdMeshers_Projection_2D.cxx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/StdMeshers/StdMeshers_Projection_2D.cxx b/src/StdMeshers/StdMeshers_Projection_2D.cxx index ed6027268..af75b6a4f 100644 --- a/src/StdMeshers/StdMeshers_Projection_2D.cxx +++ b/src/StdMeshers/StdMeshers_Projection_2D.cxx @@ -415,18 +415,20 @@ bool StdMeshers_Projection_2D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& // Check if node projection to a face is needed Bnd_B2d uvBox; SMDS_ElemIteratorPtr faceIt = srcSubMesh->GetSubMeshDS()->GetElements(); - for ( int nbN = 0; nbN < 3 && faceIt->more(); ) { + int nbFaceNodes = 0; + for ( ; nbFaceNodes < 3 && faceIt->more(); ) { const SMDS_MeshElement* face = faceIt->next(); SMDS_ElemIteratorPtr nodeIt = face->nodesIterator(); while ( nodeIt->more() ) { const SMDS_MeshNode* node = static_cast( nodeIt->next() ); if ( node->GetPosition()->GetTypeOfPosition() == SMDS_TOP_FACE ) { - nbN++; + nbFaceNodes++; uvBox.Add( helper.GetNodeUV( srcFace, node )); } } } - const bool toProjectNodes = ( uvBox.IsVoid() || uvBox.SquareExtent() < DBL_MIN ); + const bool toProjectNodes = + ( nbFaceNodes > 0 && ( uvBox.IsVoid() || uvBox.SquareExtent() < DBL_MIN )); // Load pattern from the source face SMESH_Pattern mapper; -- 2.39.2