Salome HOME
0022746: [EDF] Improvement of Glue Faces and Glue Edges operations
[modules/geom.git] / idl / GEOM_Gen.idl
index 01187280ddd80a8cf55c5acb17ab381b349431d6..b9cfadd17d25b93591e4778dae5e2785c4aa9a4a 100644 (file)
@@ -164,7 +164,8 @@ module GEOM
   /*!
    * \brief Kind of the curves.
    *
-   * Used in the functions GEOM_ICurvesOperations.MakeCurveParametric(), GEOM_ICurvesOperations.MakeCurveParametricNew()
+   * Used in the functions GEOM_ICurvesOperations.MakeCurveParametric(), GEOM_ICurvesOperations.MakeCurveParametricNew(),
+   * GEOM_ICurvesOperations.MakePolyline2D, GEOM_ICurvesOperations.MakePolyline2DOnPlane.
    */
   enum curve_type {
     /*! Polyline curve */
@@ -177,19 +178,6 @@ module GEOM
     Interpolation
   };
 
- /*!
-   * \brief Pattern for block division of the disk
-   *
-   * Used in the functions GEOM_IAdvancedOperations.MakeDividedDisk(), GEOM_ICurvesOperations.MakeDividedDiskPntVecR()
-   */
-  enum pattern {
-    /*! Square */
-    SQUARE,
-    
-    /*! Hexagon */
-    HEXAGON
-  };
-
  /*!
    * \brief Type of field data
    */
@@ -221,11 +209,12 @@ module GEOM
   };
 
 
-  typedef sequence<string>      string_array;
-  typedef sequence<short>       short_array;
-  typedef sequence<boolean>     ListOfBool;
-  typedef sequence<long>        ListOfLong;
-  typedef sequence<double>      ListOfDouble;
+  typedef sequence<string>       string_array;
+  typedef sequence<short>        short_array;
+  typedef sequence<boolean>      ListOfBool;
+  typedef sequence<long>         ListOfLong;
+  typedef sequence<double>       ListOfDouble;
+  typedef sequence<ListOfDouble> ListOfListOfDouble;
 
   interface GEOM_Object;
   interface GEOM_BaseObject;
@@ -1481,6 +1470,18 @@ module GEOM
      */
     GEOM_Object MakeCylinderRH (in double theR, in double theH);
 
+    /*!
+     *  \brief Create a portion of cylinder with given radius, height and angle at
+     *  the origin of coordinate system.
+     *
+     *  Axis of the cylinder will be collinear to the OZ axis of the coordinate system.
+     *  \param theR Cylinder radius.
+     *  \param theH Cylinder height.
+     *  \param theA Cylinder angle.
+     *  \return New GEOM_Object, containing the created cylinder.
+     */
+    GEOM_Object MakeCylinderRHA (in double theR, in double theH, in double theA);
+
     /*!
      *  \brief Create a cylinder with given base point, axis, radius and height.
      *  \param thePnt Central point of cylinder base.
@@ -1493,6 +1494,20 @@ module GEOM
                                       in GEOM_Object theAxis,
                                       in double      theR,
                                       in double      theH);
+    /*!
+     *  \brief Create a portion of cylinder with given base point, axis, radius, height and angle.
+     *  \param thePnt Central point of cylinder base.
+     *  \param theAxis Cylinder axis.
+     *  \param theR Cylinder radius.
+     *  \param theH Cylinder height.
+     *  \param theA Cylinder angle.
+     *  \return New GEOM_Object, containing the created cylinder.
+     */
+    GEOM_Object MakeCylinderPntVecRHA (in GEOM_Object thePnt,
+                                      in GEOM_Object theAxis,
+                                      in double      theR,
+                                      in double      theH,
+                                      in double      theA);
 
     /*!
      *  \brief Create a cone with given height and radiuses at
@@ -1926,64 +1941,64 @@ module GEOM
     GEOM_Object MakeCompound (in ListOfGO theShapes);
 
     /*!
-     *  \brief Replace coincident faces in theShape by one face.
-     *  \param theShape Initial shape.
+     *  \brief Replace coincident faces in \a theShapes by one face.
+     *  \param theShapes Initial shapes.
      *  \param theTolerance Maximum distance between faces, which can be considered as coincident.
      *  \param doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes.
-     *  \return New GEOM_Object, containing a copy of theShape without coincident faces.
+     *  \return New GEOM_Object containing copies of theShapes without coincident faces.
      */
-    GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance, in boolean doKeepNonSolids);
+    GEOM_Object MakeGlueFaces (in ListOfGO theShapes, in double theTolerance, in boolean doKeepNonSolids);
 
     /*!
-     *  Find coincident faces in theShape for possible gluing.
-     *  \param theShape Initial shape.
+     *  Find coincident faces in theShapes for possible gluing.
+     *  \param theShapes Initial shapes.
      *  \param theTolerance Maximum distance between faces, which can be considered as coincident.
      *  \return ListOfGO
      */
-    ListOfGO GetGlueFaces (in GEOM_Object theShape, in double theTolerance);
+    ListOfGO GetGlueFaces (in ListOfGO theShapes, in double theTolerance);
 
     /*!
-     *  \brief Replace coincident faces in theShape by one face
-     *  in compliance with given list of faces
-     *  \param theShape Initial shape.
+     *  \brief Replace coincident faces in \a theShapes by one face
+     *         in compliance with given list of faces
+     *  \param theShapes Initial shapes.
      *  \param theTolerance Maximum distance between faces, which can be considered as coincident.
      *  \param theFaces List of faces for gluing.
      *  \param doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes.
      *  \param doGlueAllEdges If TRUE, all coincident edges of <VAR>theShape</VAR>
      *                        will be glued, otherwise only the edges,
      *                        belonging to <VAR>theFaces</VAR>.
-     *  \return New GEOM_Object, containing a copy of theShape without some faces.
+     *  \return New GEOM_Object containing copies of theShapes without coincident faces.
      */
-    GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance,
-                                     in ListOfGO theFaces, in boolean doKeepNonSolids,
+    GEOM_Object MakeGlueFacesByList (in ListOfGO theShapes, in double theTolerance,
+                                     in ListOfGO theFaces,  in boolean doKeepNonSolids,
                                      in boolean doGlueAllEdges);
 
     /*!
-     *  \brief Replace coincident edges in theShape by one edge.
-     *  \param theShape Initial shape.
+     *  \brief Replace coincident edges in \a theShapes by one edge.
+     *  \param theShapes Initial shapes.
      *  \param theTolerance Maximum distance between edges, which can be considered as coincident.
-     *  \return New GEOM_Object, containing a copy of theShape without coincident edges.
+     *  \return New GEOM_Object containing copies of theShapes without coincident edges.
      */
-    GEOM_Object MakeGlueEdges (in GEOM_Object theShape, in double theTolerance);
+    GEOM_Object MakeGlueEdges (in ListOfGO theShapes, in double theTolerance);
 
     /*!
-     *  Find coincident edges in theShape for possible gluing.
-     *  \param theShape Initial shape.
+     *  Find coincident edges in \a theShapes for possible gluing.
+     *  \param theShapes Initial shapes.
      *  \param theTolerance Maximum distance between edges, which can be considered as coincident.
      *  \return ListOfGO
      */
-    ListOfGO GetGlueEdges (in GEOM_Object theShape, in double theTolerance);
+    ListOfGO GetGlueEdges (in ListOfGO theShapes, in double theTolerance);
 
     /*!
-     *  \brief Replace coincident edges in theShape by one edge
-     *  in compliance with given list of edges
-     *  \param theShape Initial shape.
+     *  \brief Replace coincident edges in \a theShapes by one edge
+     *         in compliance with given list of edges
+     *  \param theShapes Initial shapes.
      *  \param theTolerance Maximum distance between edges, which can be considered as coincident.
      *  \param theEdges List of edges for gluing.
-     *  \return New GEOM_Object, containing a copy of theShape without some edges.
+     *  \return New GEOM_Object containing copies of theShapes without some edges.
      */
-    GEOM_Object MakeGlueEdgesByList (in GEOM_Object theShape,
-                                     in double theTolerance,
+    GEOM_Object MakeGlueEdgesByList (in ListOfGO theShape,
+                                     in double   theTolerance,
                                      in ListOfGO theEdges);
 
     /*!
@@ -3319,6 +3334,72 @@ module GEOM
      *  \return New GEOM_Object, containing the created wire.
      */
     GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
+
+    /*!
+     *  \brief Create a 2D polyline (wire or a compound of wires).
+     *
+     *  The polyline can have several sections. Each section represents a set
+     *  of points in the form of list of coordinates of the following order:
+     *  x1, y1, x2, y2, ..., xN, yN
+     *  Each section has its own name, type of curve (can be either
+     *  GEOM::Polyline or GEOM::Interpolation) and Closed flag.
+     *  For each section a wire is created. It represents either a polyline or
+     *  interpolation BSpline either closed or not depending on the Closed flag.
+     *  The result represents a wire if there is only one section is defined.
+     *  Otherwise a compound of wires is returned.
+     *
+     *  \param theCoordsList the list of coordinates list. theCoordsList[0]
+     *         is the coordinates list of the first section. theCoordsList[1]
+     *         is for the second section etc.
+     *  \param theNamesList the list of names. The order corresponds to
+     *         theCoordsList.
+     *  \param theTypesList the list of curve types. The order corresponds to
+     *         theCoordsList.
+     *  \param theClosedList the list of Closed flags. The order corresponds to
+     *         theCoordsList.
+     *  \param theWorkingPlane 9 double values, defining origin,
+     *         OZ and OX directions of the working plane.
+     *  \return New GEOM_Object, containing the created wire or a compound
+     *          of wires.
+     */
+    GEOM_Object MakePolyline2D (in ListOfListOfDouble theCoordsList,
+                                in string_array       theNamesList,
+                                in short_array        theTypesList,
+                                in ListOfBool         theClosedList,
+                                in ListOfDouble       theWorkingPlane);
+
+    /*!
+     *  \brief Create a 2D polyline (wire or a compound of wires).
+     *
+     *  The polyline can have several sections. Each section represents a set
+     *  of points in the form of list of coordinates of the following order:
+     *  x1, y1, x2, y2, ..., xN, yN
+     *  Each section has its own name, type of curve (can be either
+     *  GEOM::Polyline or GEOM::Interpolation) and Closed flag.
+     *  For each section a wire is created. It represents either a polyline or
+     *  interpolation BSpline either closed or not depending on the Closed flag.
+     *  The result represents a wire if there is only one section is defined.
+     *  Otherwise a compound of wires is returned.
+     *
+     *  \param theCoordsList the list of coordinates list. theCoordsList[0]
+     *         is the coordinates list of the first section. theCoordsList[1]
+     *         is for the second section etc.
+     *  \param theNamesList the list of names. The order corresponds to
+     *         theCoordsList.
+     *  \param theTypesList the list of curve types. The order corresponds to
+     *         theCoordsList.
+     *  \param theClosedList the list of Closed flags. The order corresponds to
+     *         theCoordsList.
+     *  \param theWorkingPlane planar Face or LCS(Marker) of the working plane.
+     *  \return New GEOM_Object, containing the created wire or a compound
+     *          of wires.
+     */
+    GEOM_Object MakePolyline2DOnPlane (in ListOfListOfDouble theCoordsList,
+                                       in string_array       theNamesList,
+                                       in short_array        theTypesList,
+                                       in ListOfBool         theClosedList,
+                                       in GEOM_Object        theWorkingPlane);
+
   };
 
  // # GEOM_ILocalOperations:
@@ -3599,7 +3680,7 @@ module GEOM
      *  \param theTolerance Required tolerance value.
      *  \return New GEOM_Object, containing processed shape.
      */
-    GEOM_Object Sew (in GEOM_Object theObject, in double theTolerance);
+    GEOM_Object Sew (in ListOfGO theObjects, in double theTolerance);
 
     /*!
      *  Sewing of the given object. Allows non-manifold sewing.
@@ -3607,7 +3688,7 @@ module GEOM
      *  \param theTolerance Required tolerance value.
      *  \return New GEOM_Object, containing processed shape.
      */
-    GEOM_Object SewAllowNonManifold(in GEOM_Object theObject, in double theTolerance);
+    GEOM_Object SewAllowNonManifold(in ListOfGO theObjects, in double theTolerance);
 
     /*!
      *  Rebuild the topology of theCompound of solids by removing
@@ -3644,12 +3725,12 @@ module GEOM
     /*!
      *  \brief Get a list of wires (wrapped in GEOM_Object-s),
      *  that constitute a free boundary of the given shape.
-     *  \param theObject Shape to get free boundary of.
+     *  \param theObject Shapes to get free boundary of.
      *  \param theClosedWires Output. Closed wires on the free boundary of the given shape.
      *  \param theOpenWires Output. Open wires on the free boundary of the given shape.
      *  \return FALSE, if an error(s) occured during the method execution.
      */
-    boolean GetFreeBoundary (in GEOM_Object theObject,
+    boolean GetFreeBoundary (in ListOfGO theObjects,
                              out ListOfGO theClosedWires,
                              out ListOfGO theOpenWires);
 
@@ -3684,56 +3765,43 @@ module GEOM
     GEOM_Object MakeCopy (in GEOM_Object theOriginal);
 
     /*!
+     *  \brief Deprecated method. Use Export<FormatName> (from the
+     *  corresponding plugin) instead; here <FormatName> is a name of format.
+     *
      *  \brief Export the given shape into a file with given name.
      *  \param theObject Shape to be stored in the file.
      *  \param theFileName Name of the file to store the given shape in.
      *  \param theFormatName Specify format for the shape storage.
-     *         Available formats can be obtained with <VAR>ImportTranslators()</VAR> method.
      */
     void Export (in GEOM_Object theObject, in string theFileName, in string theFormatName);
 
     /*!
-     *  \brief Import a shape from the BRep or IGES or STEP file
+     *  \brief Deprecated method. Use Import<FormatName> (from the
+     *  corresponding plugin) instead; here <FormatName> is a name of format.
+     *
+     *  \brief Import a shape from the STL, BREP, IGES or STEP file
      *  (depends on given format) with given name.
      *  \param theFileName The file, containing the shape.
      *  \param theFormatName Specify format for the file reading.
-     *         Available formats can be obtained with <VAR>ImportTranslators()</VAR> method.
      *         If format 'IGES_SCALE' is used instead of 'IGES' or
      *            format 'STEP_SCALE' is used instead of 'STEP',
      *            file length unit will be ignored (set to 'meter') and result model will be scaled.
      *  \return List of GEOM_Object, containing the created shape and groups of materials.
      */
-    ListOfGO ImportFile (in string theFileName, in string theFormatName);
+    ListOfGBO ImportFile (in string theFileName, in string theFormatName);
 
     /*!
+     *  \brief Deprecated method. Use ReadValue (from the corresponding plugin) instead.
+     *
      *  \brief Read a value of parameter from a file, containing a shape.
      *  \param theFileName The file, containing the shape.
      *  \param theFormatName Specify format for the file reading.
-     *         Available formats can be obtained with <VAR>ImportTranslators()</VAR> method.
      *  \param theParameterName Specify the parameter. For example, pass "LEN_UNITS"
      *                          to obtain length units, in which the file is written.
      *  \return Value of requested parameter in form of text string.
      */
     string ReadValue (in string theFileName, in string theFormatName, in string theParameterName);
 
-    /*!
-     *  \brief Get the supported import formats and corresponding patterns for File dialog.
-     *  \param theFormats Output. List of formats, available for import.
-     *  \param thePatterns Output. List of file patterns, corresponding to available formats.
-     *  \return Returns available formats and patterns through the arguments.
-     */
-    void ImportTranslators (out string_array theFormats,
-                            out string_array thePatterns);
-
-    /*!
-     *  \brief Get the supported export formats and corresponding patterns for File dialog.
-     *  \param theFormats Output. List of formats, available for export.
-     *  \param thePatterns Output. List of file patterns, corresponding to available formats.
-     *  \return Returns available formats and patterns through the arguments.
-     */
-    void ExportTranslators (out string_array theFormats,
-                            out string_array thePatterns);
-
     /*!
      *  \brief Read a shape from the binary stream, containing its bounding representation (BRep).
      *  \note GEOM_Object::GetShapeStream() method can be used to obtain the shape's BRep stream.
@@ -3772,31 +3840,7 @@ module GEOM
      * \return list of all texture IDs avaiable for the current study
      */
     ListOfLong GetAllTextures();
-
-    /*!
-     *  Export a shape to XAO format
-     *  \param shape The shape to export
-     *  \param groups The list of groups to export
-     *  \param fields The list of fields to export
-     *  \param author The author of the export
-     *  \param fileName The name of the file to export
-     *  \return boolean indicating if export was successful.
-     */
-    boolean ExportXAO(in GEOM_Object shape,
-                     in ListOfGO groups, in ListOfFields fields,
-                     in string author, in string fileName);
     
-    /*!
-     *  Import a shape from XAO format
-     *  \param fileName The name of the file to import
-     *  \param shape The imported shape
-     *  \param subShapes The list of imported subShapes
-     *  \param groups The list of imported groups
-     *  \param fields The list of imported fields
-     *  \return boolean indicating if import was successful.
-     */
-    boolean ImportXAO(in string fileName, out GEOM_Object shape,
-                     out ListOfGO subShapes, out ListOfGO groups, out ListOfFields fields);
   };
 
  // # GEOM_IKindOfShape:
@@ -4365,448 +4409,7 @@ module GEOM
     ListOfLong GetObjects (in GEOM_Object theGroup);
   };
 
- // # GEOM_IAdvancedOperations:
-  /*!
-   *  \brief Interface for advanced modeling functions.
-   */
-  interface GEOM_IAdvancedOperations : GEOM_IOperations
-  {
-    // T-Shape WITHOUT Thickness reduction
-
-    /*!
-     *  \brief 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_Object, 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);
-    /*!
-     *  \brief 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_Object, 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);
-    /*!
-     *  \brief 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_Object, 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);
-    /*!
-     *  \brief 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_Object, 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);
-    /*!
-     *  \brief 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_Object, 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);
-    /*!
-     *  \brief 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_Object, 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);
-
-    // T-Shape WITH Thickness reduction
-
-    /*!
-     *  \brief 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 theRL Internal radius of left thickness reduction
-     *  \param theWL Width of left thickness reduction
-     *  \param theLtransL Length of left transition part
-     *  \param theLthinL Length of left thin part
-     *
-     *  \param theRR Internal radius of right thickness reduction
-     *  \param theWR Width of right thickness reduction
-     *  \param theLtransR Length of right transition part
-     *  \param theLthinR Length of right thin part
-     *
-     *  \param theRI Internal radius of incident thickness reduction
-     *  \param theWI Width of incident thickness reduction
-     *  \param theLtransI Length of incident transition part
-     *  \param theLthinI Length of incident thin part
-     *
-     *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
-     *  \return List of GEOM_Object, containing the created shape and propagation groups.
-     */
-    ListOfGO MakePipeTShapeTR (in double theR1, in double theW1, in double theL1,
-                               in double theR2, in double theW2, in double theL2,
-                               in double theRL, in double theWL, in double theLtransL, in double theLthinL,
-                               in double theRR, in double theWR, in double theLtransR, in double theLthinR,
-                               in double theRI, in double theWI, in double theLtransI, in double theLthinI,
-                               in boolean theHexMesh);
-    /*!
-     *  \brief 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 theRL Internal radius of left thickness reduction
-     *  \param theWL Width of left thickness reduction
-     *  \param theLtransL Length of left transition part
-     *  \param theLthinL Length of left thin part
-     *
-     *  \param theRR Internal radius of right thickness reduction
-     *  \param theWR Width of right thickness reduction
-     *  \param theLtransR Length of right transition part
-     *  \param theLthinR Length of right thin part
-     *
-     *  \param theRI Internal radius of incident thickness reduction
-     *  \param theWI Width of incident thickness reduction
-     *  \param theLtransI Length of incident transition part
-     *  \param theLthinI Length of incident thin part
-     *
-     *  \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_Object, containing the created shape and propagation groups.
-     */
-    ListOfGO MakePipeTShapeTRWithPosition
-                 (in double theR1, in double theW1, in double theL1,
-                  in double theR2, in double theW2, in double theL2,
-                  in double theRL, in double theWL, in double theLtransL, in double theLthinL,
-                  in double theRR, in double theWR, in double theLtransR, in double theLthinR,
-                  in double theRI, in double theWI, in double theLtransI, in double theLthinI,
-                  in boolean theHexMesh,
-                  in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
-    /*!
-     *  \brief 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 theRL Internal radius of left thickness reduction
-     *  \param theWL Width of left thickness reduction
-     *  \param theLtransL Length of left transition part
-     *  \param theLthinL Length of left thin part
-     *
-     *  \param theRR Internal radius of right thickness reduction
-     *  \param theWR Width of right thickness reduction
-     *  \param theLtransR Length of right transition part
-     *  \param theLthinR Length of right thin part
-     *
-     *  \param theRI Internal radius of incident thickness reduction
-     *  \param theWI Width of incident thickness reduction
-     *  \param theLtransI Length of incident transition part
-     *  \param theLthinI Length of incident thin part
-     *
-     *  \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_Object, containing the created shape and propagation groups.
-     */
-    ListOfGO MakePipeTShapeTRChamfer
-                 (in double theR1, in double theW1, in double theL1,
-                  in double theR2, in double theW2, in double theL2,
-                  in double theRL, in double theWL, in double theLtransL, in double theLthinL,
-                  in double theRR, in double theWR, in double theLtransR, in double theLthinR,
-                  in double theRI, in double theWI, in double theLtransI, in double theLthinI,
-                  in double theH, in double theW, in boolean theHexMesh);
-    /*!
-     *  \brief 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 theRL Internal radius of left thickness reduction
-     *  \param theWL Width of left thickness reduction
-     *  \param theLtransL Length of left transition part
-     *  \param theLthinL Length of left thin part
-     *
-     *  \param theRR Internal radius of right thickness reduction
-     *  \param theWR Width of right thickness reduction
-     *  \param theLtransR Length of right transition part
-     *  \param theLthinR Length of right thin part
-     *
-     *  \param theRI Internal radius of incident thickness reduction
-     *  \param theWI Width of incident thickness reduction
-     *  \param theLtransI Length of incident transition part
-     *  \param theLthinI Length of incident thin part
-     *
-     *  \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_Object, containing the created shape and propagation groups.
-     */
-    ListOfGO MakePipeTShapeTRChamferWithPosition
-                 (in double theR1, in double theW1, in double theL1,
-                  in double theR2, in double theW2, in double theL2,
-                  in double theRL, in double theWL, in double theLtransL, in double theLthinL,
-                  in double theRR, in double theWR, in double theLtransR, in double theLthinR,
-                  in double theRI, in double theWI, in double theLtransI, in double theLthinI,
-                  in double theH, in double theW, in boolean theHexMesh,
-                  in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
-    /*!
-     *  \brief 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 theRL Internal radius of left thickness reduction
-     *  \param theWL Width of left thickness reduction
-     *  \param theLtransL Length of left transition part
-     *  \param theLthinL Length of left thin part
-     *
-     *  \param theRR Internal radius of right thickness reduction
-     *  \param theWR Width of right thickness reduction
-     *  \param theLtransR Length of right transition part
-     *  \param theLthinR Length of right thin part
-     *
-     *  \param theRI Internal radius of incident thickness reduction
-     *  \param theWI Width of incident thickness reduction
-     *  \param theLtransI Length of incident transition part
-     *  \param theLthinI Length of incident thin part
-     *
-     *  \param theRF Radius of curvature of fillet.
-     *  \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
-     *  \return List of GEOM_Object, containing the created shape and propagation groups.
-     */
-    ListOfGO MakePipeTShapeTRFillet
-                 (in double theR1, in double theW1, in double theL1,
-                  in double theR2, in double theW2, in double theL2,
-                  in double theRL, in double theWL, in double theLtransL, in double theLthinL,
-                  in double theRR, in double theWR, in double theLtransR, in double theLthinR,
-                  in double theRI, in double theWI, in double theLtransI, in double theLthinI,
-                  in double theRF, in boolean theHexMesh);
-    /*!
-     *  \brief 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 theRL Internal radius of left thickness reduction
-     *  \param theWL Width of left thickness reduction
-     *  \param theLtransL Length of left transition part
-     *  \param theLthinL Length of left thin part
-     *
-     *  \param theRR Internal radius of right thickness reduction
-     *  \param theWR Width of right thickness reduction
-     *  \param theLtransR Length of right transition part
-     *  \param theLthinR Length of right thin part
-     *
-     *  \param theRI Internal radius of incident thickness reduction
-     *  \param theWI Width of incident thickness reduction
-     *  \param theLtransI Length of incident transition part
-     *  \param theLthinI Length of incident thin part
-     *
-     *  \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_Object, containing the created shape and propagation groups.
-     */
-    ListOfGO MakePipeTShapeTRFilletWithPosition
-                 (in double theR1, in double theW1, in double theL1,
-                  in double theR2, in double theW2, in double theL2,
-                  in double theRL, in double theWL, in double theLtransL, in double theLthinL,
-                  in double theRR, in double theWR, in double theLtransR, in double theLthinR,
-                  in double theRI, in double theWI, in double theLtransI, in double theLthinI,
-                  in double theRF, in boolean theHexMesh,
-                  in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
-
-    /*!
-     *  This function allows to create a disk already divided into blocks. It
-     *  can be use to create divided pipes for later meshing in hexaedra.
-     *  \param theR Radius of the disk
-     *  \param theRatio Relative size of the central square diagonal against the disk diameter
-     *  \param theOrientation Plane on which the disk will be built
-     *  \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON
-     *  \return New GEOM_Object, containing the created shape.
-     */
-    GEOM_Object MakeDividedDisk (in double theR, 
-                                 in double theRatio, 
-                                 in short theOrientation,
-                                 in pattern thePattern);
-
-    /*!
-     *  \brief Create a Disk prepared for hexa meshing with given center, normal vector and radius.
-     *  \param thePnt disk center.
-     *  \param theVec Vector, normal to the plane of the disk.
-     *  \param theR Disk radius.
-     *  \param theRatio Relative size of the central square diagonal against the disk diameter
-     *  \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON
-     *  \return New GEOM_Object, containing the created disk.
-     */
-    GEOM_Object MakeDividedDiskPntVecR ( in GEOM_Object thePnt,
-                                         in GEOM_Object theVec,
-                                         in double theR, 
-                                         in double theRatio,
-                                         in pattern thePattern);
-
-    /*!
-     *  Builds a cylinder prepared for hexa meshes
-     *  \param theR Radius of the cylinder
-     *  \param theH Height of the cylinder
-     *  \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON
-     *  \return New GEOM_Object, containing the created shape.
-     */
-    GEOM_Object MakeDividedCylinder (in double theR, 
-                                     in double theH,
-                                     in pattern thePattern );
-    /*!
-     *  
-     *  Create a smoothing surface from a set of points
-     *  \param thelPoints list of points. Compounds of points are accepted as well.
-     *  \param theNbMax maximum number of Bezier pieces in the resulting surface.
-     *  \param theDegMax maximum degree of the resulting BSpline surface
-     *  \param theDMax specifies maximum value of the GeomPlate_PlateG0Criterion criterion.
-     *  \return New GEOM_Object, containing the created shape.
-     */
-    GEOM_Object MakeSmoothingSurface (in ListOfGO thelPoints,
-                                      in long     theNbMax,
-                                      in long     theDegMax,
-                                      in double   theDMax);
-
-    /*@@ insert new functions before this line @@ do not remove this line @@*/
-  };
-
- // # GEOM_IFieldOperations:
+  // # GEOM_IFieldOperations:
   /*!
    *  \brief Interface for field operation.
    */
@@ -5091,17 +4694,32 @@ module GEOM
               in long row );
 
     /*!
-     * \brief Get dependencies of the given object from other objects in study
-     * \param list of IORs
-     * \return texture byte array
-     * Example of using: 
-     *   SALOMEDS::TMPFile_var SeqFile = 
-     *     myGeometryGUI->GetGeomGen()->GetDependencyTree( aStudy, aListOfIORs );
-     *   char* buf;
-     *   buf = (char*) &SeqFile[0];
+     * \brief Collects dependencies of the given objects from other ones
+     * \param theStudy The study in which the object is published
+     * \param theListOfEntries List of GEOM object entries in OCAF tree (not in study)
+     * \return Struct of dependent entries and its links as a byte array
+     * \note This method is supposed to be used by GUI only.
      */
     SALOMEDS::TMPFile GetDependencyTree(in SALOMEDS::Study theStudy,
-                                       in string_array strValues);
+                                       in string_array theListOfEntries);
+
+    /*!
+     * \brief Fills 3 lists that is used to reduce study of redundant objects:
+     *  - dependencies of the given objects from other ones;
+     *  - children of the given objects;
+     *  - all other objects in study.
+     * \param theStudy The study in which the object was published
+     * \param theSelectedEntries List of GEOM object entries in OCAF tree
+     * \param theParentEntries List of GEOM object entries on which the given objects depend
+     * \param theSubEntries Children entries list of the given objects
+     * \param theOtherEntries List of GEOM object entries which are in the study, but not in parents and children lists
+     * \note This method is supposed to be used by GUI only.
+     */
+    void GetEntriesToReduceStudy(in SALOMEDS::Study theStudy,
+                                inout string_array theSelectedEntries,
+                                inout string_array theParentEntries,
+                                inout string_array theSubEntries,
+                                inout string_array theOtherEntries);
 
   };
 };