diff --git a/doc/salome/gui/GEOM/input/shapesonshape.doc b/doc/salome/gui/GEOM/input/shapesonshape.doc
index b0caaa396..114553c69 100755
--- a/doc/salome/gui/GEOM/input/shapesonshape.doc
+++ b/doc/salome/gui/GEOM/input/shapesonshape.doc
@@ -2,7 +2,10 @@
\page shapesonshape_page Get Shapes on Shape
-This operation is a special case of Explode operation. It produces a group of sub-shapes of the exploded shape, which are located in a definite way relatively another reference shape.
+This operation is a special case of Explode operation. It
+produces a group of sub-shapes of the exploded shape, which are
+located in a definite way relatively another reference shape. The
+reference shape should be a solid.
To use this operation, select in the Main Menu Operations -> Get Shapes on Shape. The following dialog box will appear.
@@ -11,7 +14,8 @@ To use this operation, select in the Main Menu Operations -> Get Shapes on Sh
Name is the name of the resulting group of shapes;
Shape for exploding is the shape that will be exploded;
-
Shape for checking is the reference shape;
+
Solid for checking is the reference shape, which should be
+a solid;
Reconstruction Limit is the type of created sub-shapes:
solid, shell, face, wire, edge, vertex;
State is the position of the created sub-shapes relatively the reference shapes:
diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl
index 62a229e4a..158aa220e 100644
--- a/idl/GEOM_Gen.idl
+++ b/idl/GEOM_Gen.idl
@@ -1719,7 +1719,7 @@ module GEOM
/*!
* \brief Find subshapes complying with given status
- * \param theCheckShape - the shape to check state of subshapes against
+ * \param theCheckShape - the shape to check state of subshapes against. It must be a solid.
* \param theShape - the shape to explore
* \param theShapeType - type of subshape of theShape
* \param theState - required state
@@ -1732,7 +1732,7 @@ module GEOM
/*!
* \brief Find subshapes complying with given status
- * \param theCheckShape - the shape to check state of subshapes against
+ * \param theCheckShape - the shape to check state of subshapes against. It must be a solid.
* \param theShape - the shape to explore
* \param theShapeType - type of subshape of theShape
* \param theState - required state
@@ -1745,7 +1745,7 @@ module GEOM
/*!
* \brief Find subshapes complying with given status
- * \param theCheckShape - the shape to check state of subshapes against
+ * \param theCheckShape - the shape to check state of subshapes against. It must be a solid.
* \param theShape - the shape to explore
* \param theShapeType - type of subshape of theShape
* \param theState - required state
diff --git a/src/GEOMGUI/GEOM_msg_en.ts b/src/GEOMGUI/GEOM_msg_en.ts
index 91ead8895..e1d1debce 100644
--- a/src/GEOMGUI/GEOM_msg_en.ts
+++ b/src/GEOMGUI/GEOM_msg_en.ts
@@ -3745,7 +3745,7 @@ Please, select face, shell or solid and try again
GEOM_SHAPES_ON_SHAPE_CSHAPE
- Shape for checking
+ Solid for checkingGEOM_SHAPES_ON_SHAPE_STATE
diff --git a/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx b/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx
index 7e247e126..d180b5e94 100644
--- a/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx
+++ b/src/GEOMImpl/GEOMImpl_IShapesOperations.cxx
@@ -1738,10 +1738,15 @@ Handle(TColStd_HSequenceOfInteger)
Standard_Integer iErr = aFinder.ErrorStatus();
// the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx
if (iErr) {
- MESSAGE(" iErr : " << iErr);
- TCollection_AsciiString aMsg (" iErr : ");
- aMsg += TCollection_AsciiString(iErr);
- SetErrorCode(aMsg);
+ if (iErr == 41) {
+ SetErrorCode("theCheckShape must be a solid");
+ }
+ else {
+ MESSAGE(" iErr : " << iErr);
+ TCollection_AsciiString aMsg (" iErr : ");
+ aMsg += TCollection_AsciiString(iErr);
+ SetErrorCode(aMsg);
+ }
return aSeqOfIDs;
}
Standard_Integer iWrn = aFinder.WarningStatus();
@@ -3177,6 +3182,10 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::GetInPlace (Handle(GEOM_Object)
if (Tol_2D < Precision::Confusion()) Tol_2D = Precision::Confusion();
if (Tol_3D < Precision::Confusion()) Tol_3D = Precision::Confusion();
+ //if (Tol_1D > 1.0) Tol_1D = 1.0;
+ //if (Tol_2D > 1.0) Tol_2D = 1.0;
+ //if (Tol_3D > 1.0) Tol_3D = 1.0;
+
Tol_Mass = Tol_3D;
if ( iType == TopAbs_EDGE ) Tol_Mass = Tol_1D;
else if ( iType == TopAbs_FACE ) Tol_Mass = Tol_2D;
diff --git a/src/GEOM_SWIG/geompyDC.py b/src/GEOM_SWIG/geompyDC.py
index d118084b9..2375d54c3 100644
--- a/src/GEOM_SWIG/geompyDC.py
+++ b/src/GEOM_SWIG/geompyDC.py
@@ -1891,7 +1891,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
## Find in \a theShape all sub-shapes of type \a theShapeType,
# situated relatively the specified \a theCheckShape by the
# certain way, defined through \a theState parameter.
- # @param theCheckShape Shape for relative comparing.
+ # @param theCheckShape Shape for relative comparing. It must be a solid.
# @param theShape Shape to find sub-shapes of.
# @param theShapeType Type of sub-shapes to be retrieved.
# @param theState The state of the subshapes to find. It can be one of