diff --git a/idl/SMESH_Gen.idl b/idl/SMESH_Gen.idl
index 4bec6e9d8..76805579b 100644
--- a/idl/SMESH_Gen.idl
+++ b/idl/SMESH_Gen.idl
@@ -96,7 +96,8 @@ module SMESH
COMPERR_EXCEPTION , // other exception raised
COMPERR_MEMORY_PB , // memory allocation problem
COMPERR_ALGO_FAILED , // computation failed
- COMPERR_BAD_SHAPE // bad geometry
+ COMPERR_BAD_SHAPE , // bad geometry
+ COMPERR_BAD_FACE // bad geometry
};
struct ComputeError
{
diff --git a/src/SMESH/SMESH_ComputeError.hxx b/src/SMESH/SMESH_ComputeError.hxx
index a764f0a3b..07f45d085 100644
--- a/src/SMESH/SMESH_ComputeError.hxx
+++ b/src/SMESH/SMESH_ComputeError.hxx
@@ -52,7 +52,8 @@ enum SMESH_ComputeErrorName
COMPERR_EXCEPTION = -6, //!< other exception raised
COMPERR_MEMORY_PB = -7, //!< std::bad_alloc exception
COMPERR_ALGO_FAILED = -8, //!< algo failed for some reason
- COMPERR_BAD_SHAPE = -9 //!< bad geometry
+ COMPERR_BAD_SHAPE = -9, //!< bad geometry
+ COMPERR_BAD_FACE = -10 //!< incorrect face type (Radial Algorithms)
};
// =============================================================
@@ -98,6 +99,8 @@ std::string SMESH_ComputeError::CommonName() const
_case2char(COMPERR_EXCEPTION );
_case2char(COMPERR_MEMORY_PB );
_case2char(COMPERR_ALGO_FAILED );
+ _case2char(COMPERR_BAD_SHAPE );
+ _case2char(COMPERR_BAD_FACE );
default:;
}
return "";
diff --git a/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx b/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx
index 004b18496..f5a901582 100644
--- a/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx
+++ b/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx
@@ -343,6 +343,7 @@ namespace SMESH
CASE2TEXT( COMPERR_EXCEPTION );
CASE2TEXT( COMPERR_MEMORY_PB );
CASE2TEXT( COMPERR_BAD_SHAPE );
+ CASE2TEXT( COMPERR_BAD_FACE );
case SMESH::COMPERR_ALGO_FAILED:
if ( strlen(comment) == 0 )
text = QObject::tr("COMPERR_ALGO_FAILED");
diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts
index 6a864d0f5..e64478cbe 100644
--- a/src/SMESHGUI/SMESH_msg_en.ts
+++ b/src/SMESHGUI/SMESH_msg_en.ts
@@ -61,6 +61,11 @@
Unexpected geometry
+
+
+ The face must be a full circle or a part of circle
+(i.e. the number of edges is less or equal to 3 and one of them is a circle curve)
+
Unknown exception
diff --git a/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx b/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx
index 8d21195db..5310f3672 100644
--- a/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx
+++ b/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx
@@ -316,7 +316,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh,
TopoDS_Edge CircEdge, LinEdge1, LinEdge2;
int nbe = analyseFace( aShape, CircEdge, LinEdge1, LinEdge2 );
if( nbe>3 || nbe < 1 || CircEdge.IsNull() )
- return error(COMPERR_BAD_SHAPE);
+ return error(COMPERR_BAD_FACE);
gp_Pnt P0,P1;
// points for rotation