Salome HOME
PAL12874: Object Vector. Provide a possibility to display a vector with arrow on...
[modules/geom.git] / idl / GEOM_Gen.idl
index 2c40235b5f26efe8445d79d5f78094c6dd4b1126..92c21c70943db7ce0fd3089ca7903dc5273fa3dd 100644 (file)
@@ -1,3 +1,22 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 //  File   : GEOM_Gen.idl
 //  Author : Sergey RUIN
 
@@ -18,6 +37,44 @@ module GEOM
   enum shape_type { COMPOUND, COMPSOLID, SOLID, SHELL,
                    FACE, WIRE, EDGE, VERTEX, SHAPE };
 
+
+  /*!
+   *  State of shape relatively geometrical surface like plane, sphere or cylinder.
+   *  Is used in functions GEOM_IShapesOperations.GetShapesOn<xxx>()
+   */
+  enum shape_state
+  {
+    /*! Shape is on surface */
+    ST_ON,
+
+    /*!
+     *  Shape is in the direction defined by the normal and not on surface.
+     *  For plane it means above the plane,
+     *  For sphere and cylinder it means outside of volume, bounded by the surface.
+     */
+    ST_OUT,
+
+    /*!
+     *  Shape is in the direction defined by the normal and on surface.
+     *  ONOUT = ON || OUT
+     */
+    ST_ONOUT,
+
+    /*!
+     *  Complementary to ONOUT.
+     *  For plane it means below the plane,
+     *  For sphere and cylinder it means inside the volume, bounded by the surface
+     *  (beyond axis and surface for cylinder and beyond cented and surface for sphere).
+     */
+    ST_IN,
+
+    /*!
+     *  Complementary to OUT.
+     *  ONIN = ON || IN
+     */
+    ST_ONIN
+  };
+
   typedef sequence<string>      string_array;
   typedef sequence<short>       short_array;
   typedef sequence<long>        ListOfLong;
@@ -90,7 +147,7 @@ module GEOM
     /*!
      *  Get the TopoDS_Shape, for colocated case only.
      */
-    long getShape();
+    long long getShape();
 
     /*!
      ######################################################################
@@ -207,6 +264,18 @@ module GEOM
     GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve,
                                  in double theParameter);
 
+    
+     /*!
+     *  Create a vector, corresponding to tangent to the given parameter on the given curve.
+     *  \param theRefCurve The referenced curve.
+     *  \param theParameter Value of parameter on the referenced curve.This value should be have value
+     *  \between 0. and 1.. Value of 0. corresponds first parameter of curve value 1. corresponds
+     *  \last parameter of curve. 
+     *  \return New GEOM_Object, containing the created point.
+     */
+     GEOM_Object MakeTangentOnCurve (in GEOM_Object theRefCurve,
+                                    in double theParameter);
+
     /*!
      *  Create a vector with the given components.
      *  \param theDX X component of the vector.
@@ -270,7 +339,7 @@ module GEOM
 
     /*!
      *  Create a plane, similar to the existing one, but with another size of representing face.
-     *  \param theFace Referenced plane.
+     *  \param theFace Referenced plane or LCS(Marker).
      *  \param theTrimSize New half size of a side of quadrangle face, representing the plane.
      *  \return New GEOM_Object, containing the created plane.
      */
@@ -287,6 +356,20 @@ module GEOM
     GEOM_Object MakeMarker (in double theOX , in double theOY , in double theOZ,
                            in double theXDX, in double theXDY, in double theXDZ,
                            in double theYDX, in double theYDY, in double theYDZ);
+     
+    /*!
+     *  Create a tangent plane to specified face in the point with specified parameters.
+     *  Values of parameters should be between 0. and 1.0
+     *  \param theFace - face for which tangent plane shuold be built. 
+     *  \param theParameterU - value of parameter by U
+     *  \param theParameterV - value of parameter Vthe
+     *  \param theTrimSize - defines sizes of created face
+     *  \return New GEOM_Object, containing the face built on tangent plane.
+     */
+    GEOM_Object MakeTangentPlaneOnFace(in GEOM_Object theFace,
+                                      in double theParameterU,
+                                      in double theParameterV,
+                                      in double theTrimSize);
   };
 
   interface GEOM_ITransformOperations : GEOM_IOperations
@@ -387,6 +470,34 @@ module GEOM
                                  in double theStep2,
                                  in long theNbTimes2);
 
+    /*!
+     *  Rotate given object around vector perpendicular to plane containing three points.
+     *  \param theObject The object to be rotated.
+     *  \param theCentPoint central point - the axis is the vector perpendicular to the plane
+     *  containing the three points.
+     *  \param thePoint1 and thePoint2 - in a perpendicular plan of the axis.
+     *  \return theObject.
+     */
+    GEOM_Object RotateThreePoints (in GEOM_Object theObject,
+                                  in GEOM_Object theCentPoint,
+                                  in GEOM_Object thePoint1,
+                                  in GEOM_Object thePoint2);
+
+
+    /*!
+     *  Rotate given object around vector perpendicular to plane containing three points.
+     *  Creating its copy before the rotatation.
+     *  \param theObject The object to be rotated.
+     *  \param theCentPoint central point - the axis is the vector perpendicular to the plane
+     *  containing the three points.
+     *  \param thePoint1 and thePoint2 - in a perpendicular plan of the axis.
+     *  \return New GEOM_Object, containing the rotated object.
+     */
+    GEOM_Object RotateThreePointsCopy (in GEOM_Object theObject,
+                                      in GEOM_Object theCentPoint,
+                                      in GEOM_Object thePoint1,
+                                      in GEOM_Object thePoint2);
+
     /*!
      *  Rotate the given object around the given axis on the given angle.
      *  \param theObject The object to be rotated.
@@ -398,6 +509,7 @@ module GEOM
                        in GEOM_Object theAxis,
                        in double theAngle);
 
+
     /*!
      *  Rotate the given object around the given axis
      *  on the given angle, creating its copy before the rotatation.
@@ -410,6 +522,7 @@ module GEOM
                            in GEOM_Object theAxis,
                            in double theAngle);
 
+
     /*!
      *  Rotate the given object around the given axis a given number times.
      *  Rotation angle will be 2*PI/theNbTimes.
@@ -533,15 +646,31 @@ module GEOM
                                in double theFactor);
 
     /*!
-     *  Modify the Location of the given object by LCS
+     *  Modify the Location of the given object by LCS.
+     *  \param theObject The object to be displaced.
+     *  \param theStartLCS Coordinate system to perform displacement from it.
+     *                     If \a theStartLCS is NULL, displacement
+     *                     will be performed from global CS.
+     *                     If \a theObject itself is used as \a theStartLCS,
+     *                     its location will be changed to \a theEndLCS.
+     *  \param theEndLCS Coordinate system to perform displacement to it.
+     *  \return theObject.
      */
     GEOM_Object PositionShape (in GEOM_Object theObject,
                               in GEOM_Object theStartLCS,
                               in GEOM_Object theEndLCS);
 
     /*!
-     *  Modify the Location of the given object by LCS
-     *  creating its copy before the setting
+     *  Modify the Location of the given object by LCS,
+     *  creating its copy before the setting.
+     *  \param theObject The object to be displaced.
+     *  \param theStartLCS Coordinate system to perform displacement from it.
+     *                     If \a theStartLCS is NULL, displacement
+     *                     will be performed from global CS.
+     *                     If \a theObject itself is used as \a theStartLCS,
+     *                     its location will be changed to \a theEndLCS.
+     *  \param theEndLCS Coordinate system to perform displacement to it.
+     *  \return New GEOM_Object, containing the displaced shape.
      */
     GEOM_Object PositionShapeCopy (in GEOM_Object theObject,
                                   in GEOM_Object theStartLCS,
@@ -724,6 +853,41 @@ module GEOM
                             in long theMinDeg, in long theMaxDeg,
                             in double theTol2D, in double theTol3D,
                             in long theNbIter);
+
+    /*!
+     *  Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
+     *  \param theSeqSections - set of specified sections.
+     *  \param theModeSolid - mode defining building solid or shell
+     *  \param thePreci - precision 3D used for smoothing by default 1.e-6
+     *  \param theRuled - mode defining type of the result surfaces (ruled or smoothed).
+     *  \return New GEOM_Object, containing the created shell or solid.
+     */
+    GEOM_Object MakeThruSections(in ListOfGO theSeqSections,
+                                in boolean theModeSolid,
+                                in double thePreci,
+                                 in boolean theRuled);
+
+      /*!
+     *  Create a shape by extrusion of the profile shape along
+     *  the path shape. The path shape can be a wire or an edge.
+     *  the several profiles can be specified in the several locations of path.        
+     *  \param theSeqBases - list of  Bases shape to be extruded.
+     *  \param theLocations - list of locations on the path corresponding
+     *                        specified list of the Bases shapes. Number of locations
+     *                        should be equal to number of bases or list of locations can be empty.
+     *  \param thePath - Path shape to extrude the base shape along it.
+     *  \param theWithContact - the mode defining that the section is translated to be in
+     *                          contact with the spine.
+     *  \param - WithCorrection - defining that the section is rotated to be
+     *                          orthogonal to the spine tangent in the correspondent point
+     *  \return New GEOM_Object, containing the created pipe.
+     */
+    GEOM_Object MakePipeWithDifferentSections (in ListOfGO theSeqBases,
+                                              in ListOfGO theLocations,
+                                              in GEOM_Object thePath,
+                                              in boolean theWithContact ,
+                                              in boolean theWithCorrection );
+    
   };
 
   /*!
@@ -750,7 +914,7 @@ module GEOM
 
     /*!
      *  Create a face on the given wire.
-     *  \param theWire Wire to build the face on.
+     *  \param theWire closed Wire or Edge to build the face on.
      *  \param isPlanarWanted If TRUE, only planar face will be built.
      *                        If impossible, NULL object will be returned.
      *  \return New GEOM_Object, containing the created face.
@@ -759,7 +923,7 @@ module GEOM
 
     /*!
      *  Create a face on the given wires set.
-     *  \param theWires List of wires to build the face on.
+     *  \param theWires List of closed wires or edges to build the face on.
      *  \param isPlanarWanted If TRUE, only planar face will be built.
      *                        If impossible, NULL object will be returned.
      *  \return New GEOM_Object, containing the created face.
@@ -836,6 +1000,35 @@ module GEOM
     GEOM_Object GetSubShape (in GEOM_Object theMainShape,
                             in long        theID);
 
+    /*!
+     *  Get global index of \a theSubShape in \a theMainShape.
+     *  \param theMainShape Main shape.
+     *  \param theSubShape Sub-shape of the main shape.
+     *  \return global index of \a theSubShape in \a theMainShape.
+     */
+    long GetSubShapeIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
+
+    /*!
+     *  Get index of \a theSubShape in \a theMainShape, unique among sub-shapes of the same type.
+     *  Together with method <VAR>GetShapeTypeString()</VAR> it can be used
+     *  to generate automatic names for sub-shapes, when publishing them in a study.
+     *  \param theMainShape Main shape.
+     *  \param theSubShape Sub-shape of the main shape.
+     *  \return index of \a theSubShape in a list of all sub-shapes of \a theMainShape of the same type.
+     */
+    long GetTopologyIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
+
+    /*!
+     *  \brief Get name of type of \a theShape.
+     *
+     *  Use wide type notation, taking into consideration both topology and geometry of the shape.
+     *  Together with method <VAR>GetTopologyIndex()</VAR> it can be used
+     *  to generate automatic names for sub-shapes, when publishing them in a study.
+     *  \param theShape The shape to get a type of.
+     *  \return String, containing a type name of \a theShape.
+     */
+    string GetShapeTypeString (in GEOM_Object theShape);
+
     /*!
      *  Count number of faces in the given shape.
      *  \param theShape Shape to count faces in.
@@ -877,45 +1070,201 @@ module GEOM
                              in long        theShapeType);
 
     /*!
-     *  Get sub-shapes of theShape of the given type,
-     *  laying on the specified plane.
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified plane by the certain way, defined through \a theState parameter.
+     *  \param theShape Shape to find sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \param theAx1 Vector (or line, or linear edge), specifying normal
+     *                direction and location of the plane to find shapes on.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of all found sub-shapes.
+     */
+    ListOfGO GetShapesOnPlane (in GEOM_Object theShape,
+                              in long        theShapeType,
+                              in GEOM_Object theAx1,
+                              in shape_state theState);
+    /*!
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified plane by the certain way, defined through \a theState parameter.
      *  \param theShape Shape to find sub-shapes of.
      *  \param theShapeType Type of sub-shapes to be retrieved.
-     *  \param thePlane Face, specifying the plane to find shapes on.
-     *  \return Group of all found sub-shapes.
+     *  \param theAx1 Vector (or line, or linear edge), specifying normal
+     *                direction of the plane to find shapes on.
+     *  \param thePnt Point specifying location of the plane to find shapes on.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of all found sub-shapes.
      */
-    GEOM_Object GetShapesOnPlane (in GEOM_Object theShape,
+    ListOfGO GetShapesOnPlaneWithLocation (in GEOM_Object theShape,
+                                          in long        theShapeType,
+                                          in GEOM_Object theAx1,
+                                          in GEOM_Object thePnt,
+                                          in shape_state theState);
+
+
+
+    /*!
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified cylinder by the certain way, defined through \a theState parameter.
+     *  \param theShape Shape to find sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \param theAxis Vector (or line, or linear edge), specifying
+     *                 axis of the cylinder to find shapes on.
+     *  \param theRadius Radius of the cylinder to find shapes on.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of all found sub-shapes.
+     */
+    ListOfGO GetShapesOnCylinder (in GEOM_Object theShape,
                                  in long        theShapeType,
-                                 in GEOM_Object thePlane);
+                                 in GEOM_Object theAxis,
+                                 in double      theRadius,
+                                 in shape_state theState);
+
+    /*!
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified sphere by the certain way, defined through \a theState parameter.
+     *  \param theShape Shape to find sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \param theCenter Point, specifying center of the sphere to find shapes on.
+     *  \param theRadius Radius of the sphere to find shapes on.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of all found sub-shapes.
+     */
+    ListOfGO GetShapesOnSphere (in GEOM_Object theShape,
+                               in long        theShapeType,
+                               in GEOM_Object theCenter,
+                               in double      theRadius,
+                               in shape_state theState);
+
+    /*!
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified quadrangle by the certain way, defined through \a theState parameter.
+     *  \param theShape Shape to find sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \param theTopLeftPoint Top left quadrangle corner
+     *  \param theTopRigthPoint Top right quadrangle corner
+     *  \param theBottomLeftPoint Bottom left quadrangle corner
+     *  \param theBottomRigthPoint Bottom right quadrangle corner
+     *  \param theState The state of the subshapes to find.
+     *  \return List of all found sub-shapes.
+     */
+    ListOfGO GetShapesOnQuadrangle (in GEOM_Object theShape,
+                                    in long        theShapeType,
+                                    in GEOM_Object theTopLeftPoint,
+                                    in GEOM_Object theTopRigthPoint,
+                                    in GEOM_Object theBottomLeftPoint,
+                                    in GEOM_Object theBottomRigthPoint,
+                                    in shape_state theState);
+
+    /*!
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified plane by the certain way, defined through \a theState parameter.
+     *  \param theShape Shape to find sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \param theAx1 Vector (or line, or linear edge), specifying normal
+     *                direction and location of the plane to find shapes on.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of IDs of all found sub-shapes.
+     */
+    ListOfLong GetShapesOnPlaneIDs (in GEOM_Object theShape,
+                                   in long        theShapeType,
+                                   in GEOM_Object theAx1,
+                                   in shape_state theState);
+                                   
+    /*!
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified plane by the certain way, defined through \a theState parameter.
+     *  \param theShape Shape to find sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \param theAx1 Vector (or line, or linear edge), specifying normal
+     *                direction of the plane to find shapes on.
+     *  \param thePnt Point specifying location of the plane to find shapes on.     
+     *  \param theState The state of the subshapes to find.
+     *  \return List of IDs of all found sub-shapes.
+     */
+    ListOfLong GetShapesOnPlaneWithLocationIDs (in GEOM_Object theShape,
+                                               in long        theShapeType,
+                                               in GEOM_Object theAx1,
+                                               in GEOM_Object thePnt,
+                                               in shape_state theState);
 
     /*!
-     *  Get sub-shape of theShape of the given type,
-     *  laying on the specified cylinder.
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified cylinder by the certain way, defined through \a theState parameter.
      *  \param theShape Shape to find sub-shapes of.
      *  \param theShapeType Type of sub-shapes to be retrieved.
      *  \param theAxis Vector (or line, or linear edge), specifying
      *                 axis of the cylinder to find shapes on.
      *  \param theRadius Radius of the cylinder to find shapes on.
-     *  \return Group of all found sub-shapes.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of IDs of all found sub-shapes.
      */
-    GEOM_Object GetShapesOnCylinder (in GEOM_Object theShape,
-                                    in long        theShapeType,
-                                    in GEOM_Object theAxis,
-                                    in double      theRadius);
+    ListOfLong GetShapesOnCylinderIDs (in GEOM_Object theShape,
+                                      in long        theShapeType,
+                                      in GEOM_Object theAxis,
+                                      in double      theRadius,
+                                      in shape_state theState);
 
     /*!
-     *  Get sub-shape of theShape of the given type,
-     *  laying on the specified sphere.
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified sphere by the certain way, defined through \a theState parameter.
      *  \param theShape Shape to find sub-shapes of.
      *  \param theShapeType Type of sub-shapes to be retrieved.
      *  \param theCenter Point, specifying center of the sphere to find shapes on.
      *  \param theRadius Radius of the sphere to find shapes on.
-     *  \return Group of all found sub-shapes.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of IDs of all found sub-shapes.
      */
-    GEOM_Object GetShapesOnSphere (in GEOM_Object theShape,
-                                  in long        theShapeType,
-                                  in GEOM_Object theCenter,
-                                  in double      theRadius);
+    ListOfLong GetShapesOnSphereIDs (in GEOM_Object theShape,
+                                    in long        theShapeType,
+                                    in GEOM_Object theCenter,
+                                    in double      theRadius,
+                                    in shape_state theState);
+
+    /*!
+     *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  the specified quadrangle by the certain way, defined through \a theState parameter.
+     *  \param theShape Shape to find sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \param theTopLeftPoint Top left quadrangle corner
+     *  \param theTopRigthPoint Top right quadrangle corner
+     *  \param theBottomLeftPoint Bottom left quadrangle corner
+     *  \param theBottomRigthPoint Bottom right quadrangle corner
+     *  \param theState The state of the subshapes to find.
+     *  \return List of IDs of all found sub-shapes.
+     */
+    ListOfLong GetShapesOnQuadrangleIDs (in GEOM_Object theShape,
+                                         in long        theShapeType,
+                                         in GEOM_Object theTopLeftPoint,
+                                         in GEOM_Object theTopRigthPoint,
+                                         in GEOM_Object theBottomLeftPoint,
+                                         in GEOM_Object theBottomRigthPoint,
+                                         in shape_state theState);
+
+    /*!
+     * \brief Find subshapes complying with given status
+     * \param theBox - the box to check state of subshapes against
+     * \param theShape - the shape to explore
+     * \param theShapeType - type of subshape of theShape
+     * \param theState - required state
+     * \return List of IDs of all found sub-shapes.
+     */
+    ListOfLong GetShapesOnBoxIDs (in GEOM_Object theBox,
+                                 in GEOM_Object theShape,
+                                 in long        theShapeType,
+                                 in shape_state theState);
+
+    /*!
+     * \brief Find subshapes complying with given status
+     * \param theBox - the box to check state of subshapes against
+     * \param theShape - the shape to explore
+     * \param theShapeType - type of subshape of theShape
+     * \param theState - required state
+     * \return List of all found sub-shapes.
+     */
+    ListOfGO GetShapesOnBox (in GEOM_Object theBox,
+                            in GEOM_Object theShape,
+                            in long        theShapeType,
+                            in shape_state theState);
 
     /*!
      *  Get sub-shape(s) of theShapeWhere, which are
@@ -926,6 +1275,16 @@ module GEOM
      */
     GEOM_Object GetInPlace (in GEOM_Object theShapeWhere,
                            in GEOM_Object theShapeWhat);
+
+    /*!
+     *  Get sub-shape of theShapeWhere, which are
+     *  coincident with \a theShapeWhat that can either SOLID, FACE, EDGE or VERTEX.
+     *  \param theShapeWhere Shape to find sub-shapes of.
+     *  \param theShapeWhat Shape, specifying what to find.
+     *  \return found sub-shape.
+     */
+    GEOM_Object GetSame (in GEOM_Object theShapeWhere,
+                        in GEOM_Object theShapeWhat);
   };
 
   /*!
@@ -1226,7 +1585,7 @@ module GEOM
      *  \param theDirFace2 Second direction face global index.
      *  \param theNbTimes Quantity of transformations to be done.
      *    \note Global index of sub-shape can be obtained, using method
-     *          <VAR>GEOM_ILocalOperations.GetSubShapeIndex()</VAR>.
+     *          <VAR>GEOM_IShapesOperations.GetSubShapeIndex()</VAR>.
      *  \return New GEOM_Object, containing the result shape.
      */
     GEOM_Object MakeMultiTransformation1D (in GEOM_Object theBlock,
@@ -1286,13 +1645,21 @@ module GEOM
      *  Perform partition operation.
      *  \param theShapes Shapes to be intersected.
      *  \param theTools Shapes to intersect theShapes.
+     *  \note  Each compound from ListShapes and ListTools will be exploded in order
+     *         to avoid possible intersection between shapes from this compound.
+     *  \param theLimit Type of resulting shapes (corresponding to TopAbs_ShapeEnum).
+     *
+     *  After implementation new version of PartitionAlgo (October 2006)
+     *  other parameters are ignored by current functionality. They are kept
+     *  in this function only for supporting old versions.
+     *  Ignored parameters:
      *  \param theKeepInside Shapes, outside which the results will be deleted.
      *         Each shape from theKeepInside must belong to theShapes also.
      *  \param theRemoveInside Shapes, inside which the results will be deleted.
      *         Each shape from theRemoveInside must belong to theShapes also.
-     *  \param theLimit Type of resulting shapes (corresponding to TopAbs_ShapeEnum).
      *  \param theRemoveWebs If TRUE, perform Glue 3D algorithm.
      *  \param theMaterials Material indices for each shape. Make sence, only if theRemoveWebs is TRUE.
+     *
      *  \return New GEOM_Object, containing the result shapes.
      */
     GEOM_Object MakePartition (in ListOfGO   theShapes,
@@ -1303,6 +1670,27 @@ module GEOM
                               in boolean    theRemoveWebs,
                               in ListOfLong theMaterials);
 
+    /*!
+     *  Perform partition operation.
+     *  This method may be usefull if it is needed to make a partition for
+     *  a compound containing nonintersected shapes. Performance will be better
+     *  since intersection between shapes from compound is not performed.
+     *
+     *  Description of all parameters as in previous method MakePartition()
+     *
+     *  \note Passed compounds (via ListShapes or via ListTools)
+     *        have to consist of nonintersecting shapes.
+     *
+     *  \return New GEOM_Object, containing the result shapes.
+     */
+    GEOM_Object MakePartitionNonSelfIntersectedShape (in ListOfGO   theShapes,
+                                                     in ListOfGO   theTools,
+                                                     in ListOfGO   theKeepInside,
+                                                     in ListOfGO   theRemoveInside,
+                                                     in short      theLimit,
+                                                     in boolean    theRemoveWebs,
+                                                     in ListOfLong theMaterials);
+
     /*!
      *  Perform partition of the Shape with the Plane
      *  \param theShape Shape to be intersected.
@@ -1418,6 +1806,17 @@ module GEOM
      *  \return New GEOM_Object, containing the created wire.
      */
     GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane);
+
+      /*!
+     *  Create a sketcher (wire or face), following the textual description,
+     *  passed through \a theCommand argument. \n
+     *  For format of the description string see the previous method.\n
+     *  \param theCommand String, defining the sketcher in local
+     *                    coordinates of the working plane.
+     *  \param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
+     *  \return New GEOM_Object, containing the created wire.
+     */
+    GEOM_Object MakeSketcherOnPlane (in string theCommand, in GEOM_Object theWorkingPlane);
   };
 
   /*!
@@ -1439,7 +1838,8 @@ module GEOM
      *  \param theShape Shape, to perform fillet on.
      *  \param theR Fillet radius.
      *  \param theEdges Global indices of edges to perform fillet on.
-     *    \note Global index of sub-shape can be obtained, using method <VAR>GetSubShapeIndex()</VAR>.
+     *    \note Global index of sub-shape can be obtained, using method
+     *          <VAR>GEOM_IShapesOperations.GetSubShapeIndex()</VAR>.
      *  \return New GEOM_Object, containing the result shape.
      */
     GEOM_Object MakeFilletEdges (in GEOM_Object theShape,
@@ -1451,7 +1851,8 @@ module GEOM
      *  \param theShape Shape, to perform fillet on.
      *  \param theR Fillet radius.
      *  \param theFaces Global indices of faces to perform fillet on.
-     *    \note Global index of sub-shape can be obtained, using method <VAR>GetSubShapeIndex()</VAR>.
+     *    \note Global index of sub-shape can be obtained, using method
+     *          <VAR>GEOM_IShapesOperations.GetSubShapeIndex()</VAR>.
      *  \return New GEOM_Object, containing the result shape.
      */
     GEOM_Object MakeFilletFaces (in GEOM_Object theShape,
@@ -1474,7 +1875,8 @@ module GEOM
      *  \param theD1 Chamfer size along \a theFace1.
      *  \param theD2 Chamfer size along \a theFace2.
      *  \param theFace1,theFace2 Global indices of two faces of \a theShape.
-     *    \note Global index of sub-shape can be obtained, using method <VAR>GetSubShapeIndex()</VAR>.
+     *    \note Global index of sub-shape can be obtained, using method
+     *          <VAR>GEOM_IShapesOperations.GetSubShapeIndex()</VAR>.
      *  \return New GEOM_Object, containing the result shape.
      */
     GEOM_Object MakeChamferEdge (in GEOM_Object theShape,
@@ -1490,7 +1892,8 @@ module GEOM
      *               will be get along face, which is nearer to \a theFaces beginning.
      *  \param theD2 Chamfer size along another of two faces, connected to the edge.
      *  \param theFaces Sequence of global indices of faces of \a theShape.
-     *    \note Global index of sub-shape can be obtained, using method <VAR>GetSubShapeIndex()</VAR>.
+     *    \note Global index of sub-shape can be obtained, using method
+     *          <VAR>GEOM_IShapesOperations.GetSubShapeIndex()</VAR>.
      *  \return New GEOM_Object, containing the result shape.
      */
     GEOM_Object MakeChamferFaces (in GEOM_Object theShape,
@@ -1513,10 +1916,8 @@ module GEOM
                               in double theMeshDeflection);
 
     /*!
-     *  Get global index of \a theSubShape in \a theShape.
-     *  \param theShape Main shape.
-     *  \param theSubShape Sub-shape of the main shape.
-     *  \return global index of \a theSubShape in \a theShape.
+     *  Duplicates <VAR>GEOM_IShapesOperations.GetSubShapeIndex()</VAR>.
+     *  Present here only for compatibility.
      */
     long GetSubShapeIndex (in GEOM_Object theShape, in GEOM_Object theSubShape);
   };
@@ -1554,6 +1955,18 @@ module GEOM
     void GetShapeProcessParameters (out string_array theOperators,
                                    out string_array theParameters,
                                    out string_array theValues);
+    /*!
+     *  Get parameters and parameters' values for the given Shape Process operation.
+     *  In the current implementation the defaults are
+     *  read from the file pointed by CSF_ShHealingDefaults environmental variable.
+     *  \param theOperator Input. The operator's name.
+     *  \param theParameters Output. Default list of names of parameters.
+     *  \param theValues Output. List of default values of parameters, in the same order
+     *                           as parameters are listed in \a theParameters list.
+     */
+    void GetOperatorParameters (in string theOperator,
+                               out string_array theParameters,
+                               out string_array theValues);
 
     /*!
      *  Remove faces from the given object (shape).
@@ -1627,6 +2040,15 @@ module GEOM
     boolean GetFreeBoundary (in GEOM_Object theObject,
                             out ListOfGO theClosedWires,
                             out ListOfGO theOpenWires);
+
+    /*!
+     *  Change orientation of the given object.
+     *  \param theObject Shape to be processed.
+     *  \return New GEOM_Object, containing processed shape.
+     */
+    GEOM_Object ChangeOrientation (in GEOM_Object theObject);
+    GEOM_Object ChangeOrientationCopy (in GEOM_Object theObject);
+
   };
 
   /*!
@@ -1685,6 +2107,22 @@ module GEOM
    */
   interface GEOM_IMeasureOperations : GEOM_IOperations
   {
+    /*!
+     *  Get position (LCS) of theShape.
+     *  \param theShape Shape to calculate position of.
+     *  \param Ox,Oy,Oz Output. Coordinates of shape's location origin.
+     *                  Origin of the LCS is situated at the shape's center of mass.
+     *  \param Zx,Zy,Zz Output. Coordinates of shape's location normal(main) direction.
+     *  \param Xx,Xy,Xz Output. Coordinates of shape's location X direction.
+     *                  Axes of the LCS are obtained from shape's location or,
+     *                  if the shape is a planar face, from position of its plane.
+     *  \return Returns position of the shape through the last nine arguments.
+     */
+    void GetPosition (in GEOM_Object theShape,
+                     out double Ox, out double Oy, out double Oz,
+                     out double Zx, out double Zy, out double Zz,
+                     out double Xx, out double Xy, out double Xz);
+
     /*!
      *  Get summarized length of all wires,
      *  area of surface and volume of the given shape.
@@ -1754,6 +2192,15 @@ module GEOM
     boolean CheckShape (in GEOM_Object theShape,
                        out string     theDescription);
 
+    /*!
+     *  Check a topology and a geometry of the given shape.
+     *  \param theShape Shape to check validity of.
+     *  \param theDescription Output. Description of problems in the shape, if they are.
+     *  \return TRUE, if the shape "seems to be valid".
+     */
+    boolean CheckShapeWithGeometry (in GEOM_Object theShape,
+                                   out string     theDescription);
+
     /*!
      *  Obtain description of the given shape
      *  \param theShape Shape to be described.
@@ -1797,18 +2244,46 @@ module GEOM
      *  Adds a sub object with ID theSubShapeId to the group
      *  \param theGroup is a GEOM group to which the new sub shape is added
      *  \param theSubShapeId is a sub shape ID in the main object.
-     *  \note Use method <VAR>ILocalOperations.GetSubShapeIndex()</VAR> to get an ID by the sub shape
+     *  \note Use method <VAR>GEOM_IShapesOperations.GetSubShapeIndex()</VAR> to get an ID by the sub shape
      */
     void AddObject (in GEOM_Object theGroup, in long theSubShapeId);
 
     /*!
      *  Removes a sub object with ID \a theSubShapeId from the group
-     *  \param theGroup is a GEOM group from which the new sub shape is removed
+     *  \param theGroup is a GEOM group from which the sub shape is removed.
      *  \param theSubShapeId is a sub shape ID in the main object.
-     *  \note Use method <VAR>ILocalOperations.GetSubShapeIndex()</VAR> to get an ID by the sub shape
+     *  \note Use method <VAR>GEOM_IShapesOperations.GetSubShapeIndex()</VAR> to get an ID by the sub shape
      */
     void RemoveObject (in GEOM_Object theGroup, in long theSubShapeId);
 
+    /*!
+     *  Adds to the group all the given shapes. No errors, if some shapes are alredy included.
+     *  \param theGroup is a GEOM group to which the new sub shapes are added.
+     *  \param theSubShapes is a list of sub shapes to be added.
+     */
+    void UnionList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
+
+    /*!
+     *  Removes from the group all the given shapes. No errors, if some shapes are not included.
+     *  \param theGroup is a GEOM group from which the sub-shapes are removed.
+     *  \param theSubShapes is a list of sub-shapes to be removed.
+     */
+    void DifferenceList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
+
+    /*!
+     *  Adds to the group all the given shapes. No errors, if some shapes are alredy included.
+     *  \param theGroup is a GEOM group to which the new sub shapes are added.
+     *  \param theSubShapes is a list of IDs of sub shapes to be added.
+     */
+    void UnionIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
+
+    /*!
+     *  Removes from the group all the given shapes. No errors, if some shapes are not included.
+     *  \param theGroup is a GEOM group from which the sub-shapes are removed.
+     *  \param theSubShapes is a list of IDs of sub-shapes to be removed.
+     */
+    void DifferenceIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
+
     /*!
      *  Returns a type of sub objects stored in the group
      *  \param theGroup is a GEOM group which type is returned.
@@ -1913,6 +2388,18 @@ module GEOM
      *  \param theObject is a GEOM object which IOR is requested
      */
     string GetStringFromIOR (in GEOM_Object theObject);
+
+    /*!
+     *  Returns a name with which a GEOM object was dumped into python script
+     *  \param theStudyEntry is an entry of the GEOM object in the study
+     */
+    string GetDumpName (in string theStudyEntry);
+
+    /*!
+     *  Returns all names with which a GEOM objects was dumped
+     *  into python script to avoid the same names in SMESH script
+     */
+    string_array GetAllDumpNames();
   };
 };