From 28140bb1c82c79dce2df65c7cc92fbddfc5f09ee Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 11 Mar 2014 17:33:49 +0400 Subject: [PATCH 1/1] 22507: EDF 2845 SMESH : regression with 3D extrusion algo Fix a case of a triangular base FACE with a sole triangular element --- src/StdMeshers/StdMeshers_Prism_3D.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/StdMeshers/StdMeshers_Prism_3D.cxx b/src/StdMeshers/StdMeshers_Prism_3D.cxx index 71412270d..c43a126c3 100644 --- a/src/StdMeshers/StdMeshers_Prism_3D.cxx +++ b/src/StdMeshers/StdMeshers_Prism_3D.cxx @@ -3927,6 +3927,8 @@ TPCurveOnHorFaceAdaptor::TPCurveOnHorFaceAdaptor( const TSideFace* sideFace, const int Z = isTop ? sideFace->ColumnHeight() - 1 : 0; map u2nodes; sideFace->GetNodesAtZ( Z, u2nodes ); + if ( u2nodes.empty() ) + return; SMESH_MesherHelper helper( *sideFace->GetMesh() ); helper.SetSubShape( horFace ); @@ -3991,7 +3993,7 @@ gp_Pnt2d StdMeshers_PrismAsBlock::TPCurveOnHorFaceAdaptor::Value(const Standard_ map< double, gp_XY >::const_iterator i1 = myUVmap.upper_bound( U ); if ( i1 == myUVmap.end() ) - return myUVmap.rbegin()->second; + return myUVmap.empty() ? gp_XY(0,0) : myUVmap.rbegin()->second; if ( i1 == myUVmap.begin() ) return (*i1).second; -- 2.30.2