From a004160516ecca64687bea560810c414afcfea1f Mon Sep 17 00:00:00 2001 From: eap Date: Mon, 25 Nov 2013 09:14:33 +0000 Subject: [PATCH] 0022414: [CEA 1010] Regressio on tests 01_composite.py Fix for a vertex w/o a node --- src/StdMeshers/StdMeshers_Quadrangle_2D.cxx | 31 ++++++++++----------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx index 2ebc293b2..98b3ddc62 100644 --- a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx +++ b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx @@ -1397,6 +1397,8 @@ bool StdMeshers_Quadrangle_2D::ComputeQuadPref (SMESH_Mesh & aMesh, bool WisF = true; int i,j,geomFaceID = meshDS->ShapeToIndex(F); + UpdateDegenUV( quad ); + int nb = quad->side[0]->NbPoints(); int nr = quad->side[1]->NbPoints(); int nt = quad->side[2]->NbPoints(); @@ -1436,14 +1438,14 @@ bool StdMeshers_Quadrangle_2D::ComputeQuadPref (SMESH_Mesh & aMesh, int addh = 0; int addv = 0; + // Orientation of face and 3 main domain for future faces // ----------- Old version --------------- - // orientation of face and 3 main domain for future faces // 0 top 1 // 1------------1 // | | | | - // | | | | + // | |C | | // | L | | R | - // left | | | | rigth + // left | |__| | rigth // | / \ | // | / C \ | // |/ \| @@ -1451,15 +1453,14 @@ bool StdMeshers_Quadrangle_2D::ComputeQuadPref (SMESH_Mesh & aMesh, // 0 bottom 1 // ----------- New version --------------- - // orientation of face and 3 main domain for future faces // 0 top 1 // 1------------1 - // | |____| | + // | |_C__| | // | / \ | // | / C \ | // left |/________\| rigth // | | - // | | + // | C | // | | // 0------------0 // 0 bottom 1 @@ -1481,8 +1482,6 @@ bool StdMeshers_Quadrangle_2D::ComputeQuadPref (SMESH_Mesh & aMesh, if (uv_eb.size() != nb || uv_er.size() != nr || uv_et.size() != nt || uv_el.size() != nl) return error(COMPERR_BAD_INPUT_MESH); - UpdateDegenUV( quad ); - // arrays for normalized params TColStd_SequenceOfReal npb, npr, npt, npl; for (i=0; i nb_col_by_row; - int delta_all = nb - nt; + int delta_all = nb - nt; int delta_one_col = nrows * 2; - int nb_col = delta_all / delta_one_col; - int remainder = delta_all - nb_col * delta_one_col; + int nb_col = delta_all / delta_one_col; + int remainder = delta_all - nb_col * delta_one_col; if (remainder > 0) { nb_col++; } @@ -2772,13 +2771,13 @@ bool StdMeshers_Quadrangle_2D::ComputeReduced (SMESH_Mesh & aMesh, nb_col = ( nt - 1 ) / col_top_size; nb_col_by_row.resize( nrows, nb_col ); int nbrows_not_full = nrows - 1; - int cur_top_size = nt - 1; + int cur_top_size = nt - 1; remainder = delta_all - nb_col * delta_one_col; while ( remainder > 0 ) { - delta_one_col = nbrows_not_full * 2; - int nb_col_add = remainder / delta_one_col; - cur_top_size += 2 * nb_col_by_row[ nbrows_not_full ]; + delta_one_col = nbrows_not_full * 2; + int nb_col_add = remainder / delta_one_col; + cur_top_size += 2 * nb_col_by_row[ nbrows_not_full ]; int nb_col_free = cur_top_size / col_top_size - nb_col_by_row[ nbrows_not_full-1 ]; if ( nb_col_add > nb_col_free ) nb_col_add = nb_col_free; @@ -3588,7 +3587,7 @@ int StdMeshers_Quadrangle_2D::GetCorners(const TopoDS_Face& theFace, theVertices.push_back( v ); cornerInd.push_back( angles.size() ); } - angles.push_back( angleByVertex( v )); + angles.push_back( angleByVertex.IsBound( v ) ? angleByVertex( v ) : -M_PI ); edgeVec.push_back( *edge ); }