From e1c960b46a013496c9142593a9baae56b257e91c Mon Sep 17 00:00:00 2001
From: jfa <jfa@opencascade.com>
Date: Fri, 19 Feb 2010 12:16:11 +0000
Subject: [PATCH] Mantis issue 0020685: GetShapesOnShape: correct argument
 theCheckShape description.

---
 doc/salome/gui/GEOM/input/shapesonshape.doc |  8 ++++++--
 idl/GEOM_Gen.idl                            |  6 +++---
 src/GEOMGUI/GEOM_msg_en.ts                  |  2 +-
 src/GEOMImpl/GEOMImpl_IShapesOperations.cxx | 17 +++++++++++++----
 src/GEOM_SWIG/geompyDC.py                   |  2 +-
 5 files changed, 24 insertions(+), 11 deletions(-)

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 <b>Explode</b> 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 <b>Explode</b> 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 <b>Operations -> Get Shapes on Shape.</b> The following dialog box will appear. 
 
@@ -11,7 +14,8 @@ To use this operation, select in the Main Menu <b>Operations -> Get Shapes on Sh
 <ul>
 <li> <b>Name</b> is the name of the resulting group of shapes; </li>
 <li> <b>Shape for exploding</b> is the shape that will be exploded; </li>
-<li> <b>Shape for checking</b> is the reference shape; </li>
+<li> <b>Solid for checking</b> is the reference shape, which should be
+a solid; </li>
 <li> <b>Reconstruction Limit</b> is the type of created sub-shapes:
 		       solid, shell, face, wire, edge, vertex; </li>
 <li> <b>State</b> 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</translation>
         </message>
         <message>
             <source>GEOM_SHAPES_ON_SHAPE_CSHAPE</source>
-            <translation>Shape for checking</translation>
+            <translation>Solid for checking</translation>
         </message>
         <message>
             <source>GEOM_SHAPES_ON_SHAPE_STATE</source>
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