Salome HOME
Mantis issues 0020939(GetSharedShapes) and 0020842(AllSorted meaning).
[modules/geom.git] / idl / GEOM_Gen.idl
index 439e6f438a9a098547ed75f42f16be18dfd417cb..304b16a861880d0a674f075b0d20cb0c1464ade6 100644 (file)
@@ -1,4 +1,4 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 //  File   : GEOM_Gen.idl
 //  Author : Sergey RUIN
-
+//
 #ifndef __GEOM_GEN__
 #define __GEOM_GEN__
 
@@ -40,6 +41,17 @@ module GEOM
   enum shape_type { COMPOUND, COMPSOLID, SOLID, SHELL,
                     FACE, WIRE, EDGE, VERTEX, SHAPE };
 
+  /*!
+   * Marker type
+   */
+  enum marker_type { MT_NONE, MT_POINT, MT_PLUS, MT_STAR, MT_O, MT_X, MT_O_POINT, MT_O_PLUS,
+                    MT_O_STAR, MT_O_X, MT_BALL, MT_RING1, MT_RING2, MT_RING3, MT_USER };
+
+  /*!
+   * Marker size
+   */
+  enum marker_size { MS_NONE, MS_10, MS_15, MS_20, MS_25, MS_30, MS_35,
+                    MS_40, MS_45, MS_50, MS_55, MS_60, MS_65, MS_70 };
 
   /*!
    *  State of shape relatively geometrical surface like plane, sphere or cylinder.
@@ -103,6 +115,22 @@ module GEOM
     FSM_GetInPlaceByHistory
   };
 
+  /*!
+   *  Kind of method to perform filling operation
+   *  Is used in functions GEOM_Gen.MakeFilling<xxx>()
+   */
+  enum filling_oper_method
+  {
+    /*! Default (standard behaviour) */
+    FOM_Default,
+
+    /*! Use edges orientation */
+    FOM_UseOri,
+
+    /*! Auto-correct edges orientation */
+    FOM_AutoCorrect
+  };
+
 
   typedef sequence<string>      string_array;
   typedef sequence<short>       short_array;
@@ -172,6 +200,38 @@ module GEOM
      */
     boolean GetAutoColor();
 
+    /*!
+     * Set standard point marker for the object
+     * \param theType standard marker type
+     * \param theSize marker relative size
+     */
+    void SetMarkerStd(in marker_type theType, in marker_size theSize );
+
+    /*!
+     * Set custom point marker for the object. The texture can be added
+     * by LoadTexture() or AddTexture() functions.
+     * \param theTextureId texture ID
+     */
+    void SetMarkerTexture(in long theTextureId);
+
+    /*!
+     * Get type of the point marker assigned to the object
+     * \return current marker type (MT_NONE if no marker is set)
+     */
+    marker_type GetMarkerType();
+
+    /*!
+     * Get size of the point marker assigned to the object
+     * \return current marker relative size (MS_NONE if no marker is set)
+     */
+    marker_size GetMarkerSize();
+
+    /*!
+     * Get texture idenifier of the point marker assigned to the object
+     * \return marker texture ID (0 if no marker set)
+     */
+    long GetMarkerTexture();
+
     /*!
      *  Set a Study entry where this object was published.
      */
@@ -240,7 +300,7 @@ module GEOM
      *         used for object creation
      */
     void SetParameters (in string theParameters);
-                           
+
     /*!
      *  Return list of notebook variables used for object creation separated by ":" symbol
      */
@@ -327,6 +387,19 @@ module GEOM
     GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve,
                                  in double theParameter);
 
+    /*!
+     *  Create a point on the given curve, projecting given point
+     *  \param theRefCurve The referenced curve.
+     *  \param theXParameter X co-ordinate of point to project on curve
+     *  \param theYParameter Y co-ordinate of point to project on curve
+     *  \param theZParameter Z co-ordinate of point to project on curve
+     *  \return New GEOM_Object, containing the created point.
+     */
+    GEOM_Object MakePointOnCurveByCoord (in GEOM_Object theRefCurve,
+                                         in double theXParameter,
+                                         in double theYarameter,
+                                         in double theZPameter);
+
     /*!
      *  Create a point, corresponding to the given parameters on the
      *    given surface.
@@ -339,6 +412,20 @@ module GEOM
                                    in double theUParameter,
                                    in double theVParameter);
 
+    /*!
+     *  Create a point on the given surface, projecting given point
+     *  \param theRefSurf The referenced surface.
+     *  \param theXParameter X co-ordinate of point to project on curve
+     *  \param theYParameter Y co-ordinate of point to project on curve
+     *  \param theZParameter Z co-ordinate of point to project on curve
+     *  \return New GEOM_Object, containing the created point.
+     */
+    GEOM_Object MakePointOnSurfaceByCoord (in GEOM_Object theRefSurf,
+                                           in double theXParameter,
+                                           in double theYarameter,
+                                           in double theZPameter);
+
+
     /*!
      *  Create a point, on two lines intersection.
      *  \param theRefLine1, theRefLine2 The referenced lines.
@@ -435,7 +522,7 @@ module GEOM
      */
     GEOM_Object MakePlaneFace (in GEOM_Object theFace,
                               in double theTrimSize);
-                              
+
     /*!
      *  Create a plane, by two vectors.
      *  \param theVec1 Vector1, the plane has to pass through first point of this vector.
@@ -446,7 +533,7 @@ module GEOM
     GEOM_Object MakePlane2Vec (in GEOM_Object theVec1,
                               in GEOM_Object theVec2,
                               in double theTrimSize);
-                              
+
     /*!
      *  Create a plane, defined by local coordinate system.
      *  \param theLCS Referenced LCS(Marker).
@@ -469,6 +556,22 @@ module GEOM
                            in double theXDX, in double theXDY, in double theXDZ,
                            in double theYDX, in double theYDY, in double theYDZ);
 
+    /*!
+     *  Create a local coordinate system from shape.
+     *  \param theShape The initial shape to detect the coordinate system.
+     *  \return New GEOM_Object, containing the created coordinate system.
+     */
+    GEOM_Object MakeMarkerFromShape (in GEOM_Object theShape);
+   
+    /*!
+     *  Create a local coordinate system from point and two vectors (DX, DY).
+     *  \param theOrigin Point of coordinate system origin.
+     *  \param theXVec Vector of X direction.
+     *  \param theYVec Vector of Y direction.
+     *  \return New GEOM_Object, containing the created coordinate system.
+     */
+    GEOM_Object MakeMarkerPntTwoVec (in GEOM_Object theOrigin, in GEOM_Object theXVec, in GEOM_Object theYVec);
+       
     /*!
      *  Create a tangent plane to specified face in the point with specified parameters.
      *  Values of parameters should be between 0. and 1.0
@@ -895,7 +998,7 @@ module GEOM
      *  vertical (H) and horisontal (W).
      *  \param theVec defines plane.
      *  \param theH vertical size (height).
-     *  \param theW horisontal size (width). 
+     *  \param theW horisontal size (width).
      *  \return New GEOM_Object, containing the created face.
      */
     GEOM_Object MakeFaceObjHW (in GEOM_Object theObj, in double theH, in double theW);
@@ -917,7 +1020,7 @@ module GEOM
     GEOM_Object MakeDiskThreePnt (in GEOM_Object thePnt1,
                                  in GEOM_Object thePnt2,
                                  in GEOM_Object thePnt3);
-                                 
+
     /*!
      *  Create a disk specified dimensions along OX-OY coordinate axes,
      *  Center of the disk at point (0, 0, 0).
@@ -926,7 +1029,7 @@ module GEOM
      *  \return New GEOM_Object, containing the created disk.
      */
     GEOM_Object MakeDiskR (in double theR, in short theOrientation);
-    
+
     /*!
      *  Create a cylinder with given radius and height at
      *  the origin of coordinate system. Axis of the cylinder
@@ -1048,7 +1151,7 @@ module GEOM
     GEOM_Object MakePrismTwoPnt2Ways (in GEOM_Object theBase,
                                      in GEOM_Object thePoint1,
                                      in GEOM_Object thePoint2);
-                                   
+
     /*!
      *  Create a shape by extrusion of the base shape along a vector, defined by DX DY DZ.
      *  \param theBase Base shape to be extruded.
@@ -1094,12 +1197,15 @@ module GEOM
      *  \param theTol2D a 2d tolerance to be reached
      *  \param theTol3D a 3d tolerance to be reached
      *  \param theNbIter a number of iteration of approximation algorithm
+     *  \param theMethod Kind of method to perform filling operation.
      *  \return New GEOM_Object, containing the created filling surface.
      */
     GEOM_Object MakeFilling (in GEOM_Object theShape,
                             in long theMinDeg, in long theMaxDeg,
                             in double theTol2D, in double theTol3D,
-                            in long theNbIter, in boolean theApprox);
+                            in long theNbIter,
+                             in filling_oper_method theMethod,
+                             in boolean theApprox);
 
     /*!
      *  Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
@@ -1117,7 +1223,7 @@ module GEOM
       /*!
      *  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.        
+     *  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
@@ -1138,7 +1244,7 @@ module GEOM
     /*!
      *  Create a shape by extrusion of the profile shape along
      *  the path shape. The path shape can be a shell or a face.
-     *  the several profiles can be specified in the several locations of path.        
+     *  the several profiles can be specified in the several locations of path.
      *  \param theSeqBases - list of  Bases shape to be extruded.
      *  \param theSeqSubBases - list of corresponding subshapes of section shapes.
      *  \param theLocations - list of locations on the path corresponding
@@ -1169,7 +1275,7 @@ module GEOM
 
     /*!
      *  Create a shape by extrusion of the base shape along
-     *  the path shape with constant bi-normal direction along the given vector. 
+     *  the path shape with constant bi-normal direction along the given vector.
      *  The path shape can be a wire or an edge.
      *  \param theBase Base shape to be extruded.
      *  \param thePath Path shape to extrude the base shape along it.
@@ -1178,8 +1284,8 @@ module GEOM
      *                along the sweep surface.
      *  \return New GEOM_Object, containing the created pipe.
      */
-    GEOM_Object MakePipeBiNormalAlongVector (in GEOM_Object theBase, 
-                                            in GEOM_Object thePath, 
+    GEOM_Object MakePipeBiNormalAlongVector (in GEOM_Object theBase,
+                                            in GEOM_Object thePath,
                                             in GEOM_Object theVec);
 
   };
@@ -1284,6 +1390,13 @@ module GEOM
     GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance,
                                     in ListOfGO theFaces, in boolean doKeepNonSolids);
 
+    /*!
+     *  Deprecated method. Use MakeAllSubShapes() instead.
+     */
+    ListOfGO MakeExplode (in GEOM_Object theShape,
+                         in long        theShapeType,
+                         in boolean     isSorted);
+
     /*!
      *  Explode a shape on subshapes of a given type.
      *  \param theShape Shape to be exploded.
@@ -1292,23 +1405,30 @@ module GEOM
      *                  sorted by coordinates of their gravity centers.
      *  \return List of sub-shapes of type theShapeType, contained in theShape.
      */
-    ListOfGO MakeExplode (in GEOM_Object theShape,
-                         in long        theShapeType,
-                         in boolean     isSorted);
+    ListOfGO MakeAllSubShapes (in GEOM_Object theShape,
+                               in long        theShapeType,
+                               in boolean     isSorted);
+
+    /*!
+     *  Deprecated method. Use GetAllSubShapesIDs() instead.
+     */
+    ListOfLong SubShapeAllIDs (in GEOM_Object theShape,
+                              in long        theShapeType,
+                              in boolean     isSorted);
 
     /*!
      *  Explode a shape on subshapes of a given type.
-     *  Does the same, as the above method, but returns IDs of sub-shapes,
-     *  not GEOM_Objects. It works faster.
+     *  Does the same, as MakeAllSubShapes, but returns IDs of
+     *  sub-shapes, not GEOM_Objects. It works faster.
      *  \param theShape Shape to be exploded.
      *  \param theShapeType Type of sub-shapes to be retrieved.
      *  \param isSorted If this parameter is TRUE, sub-shapes will be
      *                  sorted by coordinates of their gravity centers.
      *  \return List of IDs of sub-shapes of type theShapeType, contained in theShape.
      */
-    ListOfLong SubShapeAllIDs (in GEOM_Object theShape,
-                              in long        theShapeType,
-                              in boolean     isSorted);
+    ListOfLong GetAllSubShapesIDs (in GEOM_Object theShape,
+                                   in long        theShapeType,
+                                   in boolean     isSorted);
 
     /*!
      *  Get a sub shape defined by its unique ID inside \a theMainShape
@@ -1396,6 +1516,15 @@ module GEOM
                              in GEOM_Object theShape2,
                              in long        theShapeType);
 
+    /*!
+     *  Get all sub-shapes, shared by all shapes in the list \a theShapes.
+     *  \param theShapes Shapes to find common sub-shapes of.
+     *  \param theShapeType Type of sub-shapes to be retrieved.
+     *  \return List of objects, that are sub-shapes of all given shapes.
+     */
+    ListOfGO GetSharedShapesMulti (in ListOfGO theShapes,
+                                   in long     theShapeType);
+
     /*!
      *  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.
@@ -1446,6 +1575,25 @@ module GEOM
                                  in double      theRadius,
                                  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 thePnt Point specifying location of the bottom of the cylinder.
+     *  \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 GetShapesOnCylinderWithLocation (in GEOM_Object theShape,
+                                              in long        theShapeType,
+                                              in GEOM_Object theAxis,
+                                              in GEOM_Object thePnt,
+                                              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.
@@ -1531,6 +1679,25 @@ module GEOM
                                       in double      theRadius,
                                       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 thePnt Point specifying location of the bottom of the cylinder.
+     *  \param theRadius Radius of the cylinder to find shapes on.
+     *  \param theState The state of the subshapes to find.
+     *  \return List of IDs all found sub-shapes.
+     */
+    ListOfLong GetShapesOnCylinderWithLocationIDs (in GEOM_Object theShape,
+                                                   in long        theShapeType,
+                                                   in GEOM_Object theAxis,
+                                                   in GEOM_Object thePnt,
+                                                   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.
@@ -1595,7 +1762,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
@@ -1608,7 +1775,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
@@ -1621,7 +1788,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
@@ -2036,10 +2203,10 @@ module GEOM
      *  \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).
-     #  \param KeepNonlimitShapes: if this parameter == 0 - only shapes with
-     #                             type <= Limit are kept in the result,
-     #                             else - shapes with type > Limit are kept
-     #                             also (if they exist)
+     *  \param KeepNonlimitShapes: if this parameter == 0, then only shapes of
+     *                             target type (equal to Limit) are kept in the result,
+     *                             else standalone shapes of lower dimension
+     *                             are kept also (if they exist).
      *
      *  After implementation new version of PartitionAlgo (October 2006)
      *  other parameters are ignored by current functionality. They are kept
@@ -2179,7 +2346,7 @@ module GEOM
                                in GEOM_Object thePnt1,
                                in GEOM_Object thePnt2,
                                in boolean theSense);
-                              
+
     /*!
      *  Create an arc of ellipse of center C and two points P1 P2.
      *  \param theCenter Center point of the arc.
@@ -2209,9 +2376,11 @@ module GEOM
     /*!
      *  Create B-Spline curve on the set of points.
      *  \param thePoints Sequence of points for the B-Spline curve.
+     *  \param theIsClosed If TRUE, build a closed curve.
      *  \return New GEOM_Object, containing the created B-Spline curve.
      */
-    GEOM_Object MakeSplineInterpolation (in ListOfGO thePoints);
+    GEOM_Object MakeSplineInterpolation (in ListOfGO thePoints,
+                                         in boolean  theIsClosed);
 
     /*!
      *  Create a sketcher (wire or face), following the textual description,
@@ -2248,7 +2417,7 @@ module GEOM
      *  \return New GEOM_Object, containing the created wire.
      */
     GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane);
-    
+
     /*!
      *  Create a 3D sketcher, following the numerical description,
      *  passed through points created by \a theCoordinates argument. \n
@@ -2256,7 +2425,7 @@ module GEOM
      *
      *  "Make3DSketcher[x1, y1, z1, x2, y2, z2, ..., xN, yN, zN]"
      */
-    
+
     GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
 
       /*!
@@ -2314,12 +2483,12 @@ module GEOM
     GEOM_Object MakeFilletFaces (in GEOM_Object theShape,
                                 in double      theR,
                                 in ListOfLong  theFaces);
-                                
+
     GEOM_Object MakeFilletFacesR1R2 (in GEOM_Object theShape,
                                     in double      theR1,
                                     in double      theR2,
                                     in ListOfLong  theFaces);
-                                    
+
     /*!
      *  Perform a fillet on face of the specified vertexes of the given shape.
      *  \param theShape Shape, to perform fillet on.
@@ -2333,6 +2502,21 @@ module GEOM
                              in double      theR,
                              in ListOfLong  theVertexes);
 
+    /*!
+     *  Perform a fillet on edges of the specified vertexes of the given wire.
+     *  \param theShape Shape, to perform fillet on.
+     *  \param theR Fillet radius.
+     *  \param theVertexes Global indices of vertexes to perform fillet on.
+     *    \note Global index of sub-shape can be obtained, using method
+     *          <VAR>GEOM_IShapesOperations.GetSubShapeIndex()</VAR>.
+     *    \note The list of vertices coudl be empty, in this case fillet fill be done
+     *          at all vertices in given wire
+     *  \return New GEOM_Object, containing the result shape.
+     */
+    GEOM_Object MakeFillet1D (in GEOM_Object theShape,
+                             in double      theR,
+                             in ListOfLong  theVertexes);
+
     /*!
      *  Perform a symmetric chamfer on all edges of the given shape.
      *  \param theShape Shape, to perform chamfer on.
@@ -2607,6 +2791,37 @@ module GEOM
      */
     void ExportTranslators (out string_array theFormats,
                            out string_array thePatterns);
+
+    /*!
+     * Load texture from file
+     * \param theTextureFile texture file name
+     * \return unique texture identifier
+     */
+    long LoadTexture(in string theTextureFile);
+
+    /*!
+     * Add texture to the study
+     * \param theWidth texture width in pixels
+     * \param theHeight texture height in pixels
+     * \param theTexture texture byte array
+     * \return unique texture identifier
+     */
+    long AddTexture(in long theWidth, in long theHeight, in SALOMEDS::TMPFile theTexture);
+
+    /*!
+     * Get previously loaded texture data
+     * \param theID texture identifier
+     * \param theWidth texture width in pixels
+     * \param theHeight texture height in pixels
+     * \return texture byte array
+     */
+    SALOMEDS::TMPFile GetTexture(in long theID, out long theWidth, out long theHeight);
+
+    /*!
+     * Get list of all avaiable texture IDs
+     * \return list of all texture IDs avaiable for the current study
+     */
+    ListOfLong GetAllTextures();
   };
 
   /*!
@@ -2650,7 +2865,9 @@ module GEOM
       SEGMENT,      // segment
       EDGE,         // other edge
       // VERTEX
-      VERTEX
+      VERTEX,
+      // ADVANCED shapes
+      ADVANCED      // all advanced shapes (temporary implementation)
     };
   };
 
@@ -2713,6 +2930,15 @@ module GEOM
      *  \return New GEOM_Object, containing the created point.
      */
     GEOM_Object GetCentreOfMass (in GEOM_Object theShape);
+    
+    
+    /*
+     *  Get the vertex by index for 1D objects depends the edge/wire orientation
+     *  \param theShape Shape (wire or edge) to find the vertex on it
+     *  \param theIndex Index of vertex subshape
+     *  \return New GEOM_Object, vertex.
+     */
+    GEOM_Object GetVertexByIndex( in GEOM_Object theShape, in long index );
 
     /*!
      *  Get a vector, representing the normal of theFace.
@@ -2945,6 +3171,135 @@ module GEOM
   };
 
 
+  /*!
+   *  GEOM_IAdvancedOperations: Interface for advanced modeling functions.
+   */
+  interface GEOM_IAdvancedOperations : GEOM_IOperations
+  {
+    /*!
+     *  Create a T-shape object with specified caracteristics for the main and
+     *  the incident pipes (radius, width, half-length).
+     *  Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
+     *  \param theR1 Internal radius of main pipe
+     *  \param theW1 Width of main pipe
+     *  \param theL1 Half-length of main pipe
+     *  \param theR2 Internal radius of incident pipe (R2 < R1)
+     *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
+     *  \param theL2 Half-length of incident pipe
+     *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
+     *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+     */
+    ListOfGO MakePipeTShape (in double theR1, in double theW1, in double theL1, 
+                               in double theR2, in double theW2, in double theL2,
+                               in boolean theHexMesh);
+    /*!
+     *  Create a T-shape object with specified caracteristics for the main and
+     *  the incident pipes (radius, width, half-length).
+     *  The extremities of the main pipe are located on junctions points P1 and P2.
+     *  The extremity of the incident pipe is located on junction point P3.
+     *  \param theR1 Internal radius of main pipe
+     *  \param theW1 Width of main pipe
+     *  \param theL1 Half-length of main pipe
+     *  \param theR2 Internal radius of incident pipe (R2 < R1)
+     *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
+     *  \param theL2 Half-length of incident pipe
+     *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
+     *  \param theP1 1st junction point of main pipe
+     *  \param theP2 2nd junction point of main pipe
+     *  \param theP3 Junction point of incident pipe
+     *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+     */
+    ListOfGO MakePipeTShapeWithPosition (in double theR1, in double theW1, in double theL1, 
+                                           in double theR2, in double theW2, in double theL2,
+                                           in boolean theHexMesh,
+                                           in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
+    /*!
+     *  Create a T-shape object with specified caracteristics for the main and
+     *  the incident pipes (radius, width, half-length). A chamfer is created
+     *  on the junction of the pipes.
+     *  Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
+     *  \param theR1 Internal radius of main pipe
+     *  \param theW1 Width of main pipe
+     *  \param theL1 Half-length of main pipe
+     *  \param theR2 Internal radius of incident pipe (R2 < R1)
+     *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
+     *  \param theL2 Half-length of incident pipe
+     *  \param theH Height of the chamfer.
+     *  \param theW Width of the chamfer.
+     *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
+     *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+     */
+    ListOfGO MakePipeTShapeChamfer (in double theR1, in double theW1, in double theL1,
+                                   in double theR2, in double theW2, in double theL2,
+                                   in double theH, in double theW, in boolean theHexMesh);
+    /*!
+     *  Create a T-shape object with specified caracteristics for the main and
+     *  the incident pipes (radius, width, half-length). A chamfer is created
+     *  on the junction of the pipes.
+     *  The extremities of the main pipe are located on junctions points P1 and P2.
+     *  The extremity of the incident pipe is located on junction point P3.
+     *  \param theR1 Internal radius of main pipe
+     *  \param theW1 Width of main pipe
+     *  \param theL1 Half-length of main pipe
+     *  \param theR2 Internal radius of incident pipe (R2 < R1)
+     *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
+     *  \param theL2 Half-length of incident pipe
+     *  \param theH Height of the chamfer.
+     *  \param theW Width of the chamfer.
+     *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
+     *  \param theP1 1st junction point of main pipe
+     *  \param theP2 2nd junction point of main pipe
+     *  \param theP3 Junction point of incident pipe
+     *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+     */
+    ListOfGO MakePipeTShapeChamferWithPosition (in double theR1, in double theW1, in double theL1, 
+                                                  in double theR2, in double theW2, in double theL2, 
+                                                  in double theH, in double theW, in boolean theHexMesh,
+                                                  in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
+    /*!
+     *  Create a T-shape object with specified caracteristics for the main and
+     *  the incident pipes (radius, width, half-length). A fillet is created
+     *  on the junction of the pipes.
+     *  Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
+     *  \param theR1 Internal radius of main pipe
+     *  \param theW1 Width of main pipe
+     *  \param theL1 Half-length of main pipe
+     *  \param theR2 Internal radius of incident pipe (R2 < R1)
+     *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
+     *  \param theL2 Half-length of incident pipe
+     *  \param theRF Radius of curvature of fillet.
+     *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
+     *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+     */
+    ListOfGO MakePipeTShapeFillet (in double theR1, in double theW1, in double theL1, 
+                                     in double theR2, in double theW2, in double theL2, 
+                                     in double theRF, in boolean theHexMesh);
+    /*!
+     *  Create a T-shape object with specified caracteristics for the main and
+     *  the incident pipes (radius, width, half-length). A fillet is created
+     *  on the junction of the pipes.
+     *  The extremities of the main pipe are located on junctions points P1 and P2.
+     *  The extremity of the incident pipe is located on junction point P3.
+     *  \param theR1 Internal radius of main pipe
+     *  \param theW1 Width of main pipe
+     *  \param theL1 Half-length of main pipe
+     *  \param theR2 Internal radius of incident pipe (R2 < R1)
+     *  \param theW2 Width of incident pipe (R2+W2 < R1+W1)
+     *  \param theL2 Half-length of incident pipe
+     *  \param theRF Radius of curvature of fillet.
+     *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
+     *  \param theP1 1st junction point of main pipe
+     *  \param theP2 2nd junction point of main pipe
+     *  \param theP3 Junction point of incident pipe
+     *  \return List of GEOM_Objects, containing the created shape and propagation groups.
+     */
+    ListOfGO MakePipeTShapeFilletWithPosition (in double theR1, in double theW1, in double theL1, 
+                                                 in double theR2, in double theW2, in double theL2, 
+                                                 in double theRF, in boolean theHexMesh,
+                                                 in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
+    /*@@ insert new functions before this line @@ do not remove this line @@*/
+  };
+    
   /*!
    *  GEOM_Gen: Interface to access other GEOM interfaces.
    *  Also contains some methods to access and manage GEOM objects.
@@ -2989,13 +3344,16 @@ module GEOM
      *                            operations, where only the first argument has to be considered.
      *                            If theObject has only one argument shape, this flag is automatically
      *                            considered as True, not regarding really passed value.
-     *  \return True in case of success, False otherwise.
+     *  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
+     *                      and prefix "from_subshapes_of_" to names of partially restored subshapes.
+     *  \return list of published sub-shapes
      */
     ListOfGO RestoreSubShapesO (in SALOMEDS::Study   theStudy,
                                in GEOM_Object       theObject,
                                in ListOfGO          theArgs,
                                in find_shape_method theFindMethod,
-                               in boolean           theInheritFirstArg);
+                               in boolean           theInheritFirstArg,
+                                in boolean           theAddPrefix);
 
     /*!
      *  Publish sub-shapes, standing for arguments and sub-shapes of arguments
@@ -3007,7 +3365,8 @@ module GEOM
                                 in SALOMEDS::SObject theSObject,
                                 in ListOfGO          theArgs,
                                 in find_shape_method theFindMethod,
-                                in boolean           theInheritFirstArg);
+                                in boolean           theInheritFirstArg,
+                                 in boolean           theAddPrefix);
 
     /*!
      *  Methods to access interfaces for objects creation and transformation
@@ -3024,6 +3383,7 @@ module GEOM
     GEOM_IMeasureOperations   GetIMeasureOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
     GEOM_IBlocksOperations    GetIBlocksOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
     GEOM_IGroupOperations     GetIGroupOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
+    GEOM_IAdvancedOperations  GetIAdvancedOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
 
     /*!
      *  Objects Management