Salome HOME
EDF 2281 : Add 2 primitives for hexa mesh
[modules/geom.git] / idl / GEOM_Gen.idl
index 919daa260564660e33dbb911572afab10427a992..f35c7935e7ed0be5b96fdcaa788e906f96734643 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012  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
@@ -177,6 +177,19 @@ 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
+  };
+
 
   typedef sequence<string>      string_array;
   typedef sequence<short>       short_array;
@@ -196,7 +209,10 @@ module GEOM
   {
 
     /*!
-     *  \brief Get an entry of the object in GEOM component.
+     *  \brief Get internal (unique) entry of the object in the GEOM component's data tree.
+     *  \note This is not an entry of the data object in SALOME study. 
+     *  This is internal function of GEOM component, though it can be used outside it for 
+        appropriate reason (e.g. for unique identification of geometry object).
      */
     string GetEntry();
 
@@ -273,7 +289,7 @@ module GEOM
 
     /*!
      *  Toggle auto color mode on the object.
-     *  \param theAtoColor is a flag which toggles auto color mode.
+     *  \param theAutoColor is a flag which toggles auto color mode.
      */
     void SetAutoColor(in boolean theAutoColor);
 
@@ -347,7 +363,8 @@ module GEOM
  //   # Internal methods (For sub-shape identification)
  //   ######################################################################
     /*!
-     *  \brief Get geometric shape of the object as a byte stream
+     *  \brief Get geometric shape of the object as a byte stream in BRep format
+     *  \note GEOM_IInsertOperations::RestoreShape() method can be used to restore shape from a BRep stream.
      */
     SALOMEDS::TMPFile GetShapeStream();
 
@@ -499,8 +516,8 @@ module GEOM
      */
     GEOM_Object MakePointOnCurveByCoord (in GEOM_Object theRefCurve,
                                          in double theXParameter,
-                                         in double theYarameter,
-                                         in double theZPameter);
+                                         in double theYParameter,
+                                         in double theZParameter);
 
     /*!
      *  \brief Create a point, corresponding to the given parameters on the
@@ -524,9 +541,19 @@ module GEOM
      */
     GEOM_Object MakePointOnSurfaceByCoord (in GEOM_Object theRefSurf,
                                            in double theXParameter,
-                                           in double theYarameter,
-                                           in double theZPameter);
+                                           in double theYParameter,
+                                           in double theZParameter);
 
+    /*!
+     *  \brief Create a point, which lays on the given face.
+     *         The point will lay in arbitrary place of the face.
+     *         The only condition on it is a non-zero distance to the face boundary.
+     *         Such point can be used to uniquely identify the face inside any
+     *         shape in case, when the shape does not contain overlapped faces.
+     *  \param theFace The referenced face.
+     *  \return New GEOM_Object, containing the created point.
+     */
+    GEOM_Object MakePointOnFace (in GEOM_Object theFace);
 
     /*!
      *  \brief Create a point, on two lines intersection.
@@ -540,8 +567,8 @@ module GEOM
      *  \brief 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.
+     *                      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,
@@ -628,7 +655,7 @@ module GEOM
     /*!
      *  \brief Create a plane, by two vectors.
      *  \param theVec1 Vector1, the plane has to pass through first point of this vector.
-     *  \param theVec Vector2, defining the plane normal direction.
+     *  \param theVec2 Vector2, defining the plane normal direction.
      *  \param theTrimSize Half size of a side of quadrangle face, representing the plane.
      *  \return New GEOM_Object, containing the created plane.
      */
@@ -691,6 +718,11 @@ module GEOM
                                        in double theTrimSize);
   };
 
+  /*!
+   *  \brief Interface for shapes transforming.
+   *
+   *  Translation, rotation, scaling, mirroring, offset, projection, recomputing.
+   */
   interface GEOM_ITransformOperations : GEOM_IOperations
   {
     /*!
@@ -761,7 +793,7 @@ module GEOM
      *  \param theObject The object to be translated.
      *  \param theVector Translation vector, giving a direction.
      *  \param theDistance Translation distance, giving a distance.
-     *  \param theCope Translation copy, creating its copy if true.
+     *  \param theCopy Translation copy, creating its copy if true.
      *  \return New GEOM_Object, containing the translated object.
      */
     GEOM_Object TranslateVectorDistance (in GEOM_Object theObject,
@@ -807,8 +839,8 @@ module GEOM
      *  \brief 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.
+     *                      containing the three points.
+     *  \param thePoint1,thePoint2 - in a perpendicular plan of the axis.
      *  \return theObject.
      */
     GEOM_Object RotateThreePoints (in GEOM_Object theObject,
@@ -824,7 +856,7 @@ module GEOM
      *  \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.
+     *  \param thePoint1,thePoint2 - in a perpendicular plan of the axis.
      *  \return New GEOM_Object, containing the rotated object.
      */
     GEOM_Object RotateThreePointsCopy (in GEOM_Object theObject,
@@ -1053,7 +1085,8 @@ module GEOM
      *  \param  thePath Wire or Edge along that the object will be translated.
      *  \param  theDistance progress of Path (0 = actual location, 1 = end of path location).
      *  \param  theCopy is a true or false parameter. true is to create a copy, false to move the object.
-     *  \param  theCopy is a true or false parameter. true is to reverse direction, false is to move normal direction.
+     *  \param  theReverse is a true or false parameter. True is to reverse
+     *                     direction, false is to move normal direction.
      *  \return New GEOM_Object, containing the displaced shape.
      */
     GEOM_Object PositionAlongPath (in GEOM_Object theObject,
@@ -1081,7 +1114,6 @@ module GEOM
     GEOM_Object RecomputeObject (in GEOM_Object theObject);
   };
   
- // # GEOM_I3DPrimOperations:
   /*!
    *  \brief Interface for 3D primitives creation
    *
@@ -1125,7 +1157,7 @@ module GEOM
     /*!
      *  \brief Create a face by normale vector or edge and two specified sizes,
      *  vertical (H) and horisontal (W).
-     *  \param theVec defines plane.
+     *  \param theObj defines plane.
      *  \param theH vertical size (height).
      *  \param theW horisontal size (width).
      *  \return New GEOM_Object, containing the created face.
@@ -1298,7 +1330,7 @@ module GEOM
     /*!
      *  \brief Create a shape by extrusion of the base shape along a vector, defined by DX DY DZ.
      *  \param theBase Base shape to be extruded.
-     *  \param DX, DY, DZ end of extrusion vector.
+     *  \param theDX, theDY, theDZ end of extrusion vector.
      *  \return New GEOM_Object, containing the created prism.
      */
     GEOM_Object MakePrismDXDYDZ (in GEOM_Object theBase,
@@ -1311,6 +1343,23 @@ module GEOM
                                             in double theDX, in double theDY, in double theDZ,
                                             in double theScaleFactor);
 
+
+    /*!
+     *  \brief Add / Remove material to / from  a solid by extrusion of the base shape on the given distance.
+     *  \param theInitShape Initial shape on which to perform the feature.It has to be a solid or 
+     *   a compound made of a single solid
+     *  \param theBase Edge or wire defining the base shape to be extruded. 
+     *  \param theHeight Prism dimension along the normal of the face.
+     *  \param theAngle Draft angel in degrees
+     *  \param theFuse If true material is added else material is removed
+     *  \return New GEOM_Object, containing the modified shape
+     */
+    GEOM_Object MakeDraftPrism (in GEOM_Object theInitShape,
+                                in GEOM_Object theBase,
+                                in double theHeight, 
+                                in double theAngle,
+                                in boolean theFuse);
+
     /*!
      *  \brief Create a shape by extrusion of the base shape along
      *  the path shape. The path shape can be a wire or an edge.
@@ -1341,12 +1390,14 @@ module GEOM
 
     /*!
      *  \brief Create a filling from the given compound of contours.
+     *  \param theShape Initial shape on which to perform the feature.
      *  \param theMinDeg a minimal degree of BSpline surface to create
      *  \param theMaxDeg a maximal degree of BSpline surface to create
      *  \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.
+     *  \param theApprox Boolean indicating if result should be approximated
      *  \return New GEOM_Object, containing the created filling surface.
      */
     GEOM_Object MakeFilling (in GEOM_Object theShape,
@@ -1382,7 +1433,7 @@ module GEOM
      *  \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
+     *  \param theWithCorrection - 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.
      */
@@ -1406,7 +1457,7 @@ module GEOM
      *  \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
+     *  \param theWithCorrection - 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.
      */
@@ -1442,9 +1493,49 @@ module GEOM
                                              in GEOM_Object thePath,
                                              in GEOM_Object theVec);
 
+    /*!
+     *  \brief Build a middle path of a pipe-like shape.
+     *
+     *  The path shape can be a wire or an edge.
+     *  \param theShape It can be closed or unclosed pipe-like shell
+     *                  or a pipe-like solid.
+     *  \param theBase1, theBase2 Two bases of the supposed pipe. This
+     *                            should be wires or faces of \a theShape.
+     *  \note It is not assumed that exact or approximate copy of \a theShape
+     *        can be obtained by applying existing Pipe operation on the
+     *        resulting "Path" wire taking \a theBase1 as the base - it is not
+     *        always possible; though in some particular cases it might work
+     *        it is not guaranteed. Thus, RestorePath function should not be
+     *        considered as an exact reverse operation of the Pipe.
+     *  \return New GEOM_Object, containing an edge or wire that represent
+     *                           source pipe's "path".
+     */
+    GEOM_Object RestorePath (in GEOM_Object theShape,
+                             in GEOM_Object theBase1,
+                             in GEOM_Object theBase2);
+
+    /*!
+     *  \brief Build a middle path of a pipe-like shape.
+     *
+     *  The path shape can be a wire or an edge.
+     *  \param theShape It can be closed or unclosed pipe-like shell
+     *                  or a pipe-like solid.
+     *  \param theBase1, theBase2 Two bases of the supposed pipe. This
+     *                            should be lists of edges of \a theShape.
+     *  \note It is not assumed that exact or approximate copy of \a theShape
+     *        can be obtained by applying existing Pipe operation on the
+     *        resulting "Path" wire taking \a theBase1 as the base - it is not
+     *        always possible; though in some particular cases it might work
+     *        it is not guaranteed. Thus, RestorePath function should not be
+     *        considered as an exact reverse operation of the Pipe.
+     *  \return New GEOM_Object, containing an edge or wire that represent
+     *                           source pipe's "path".
+     */
+    GEOM_Object RestorePathEdges (in GEOM_Object theShape,
+                                  in ListOfGO theBase1,
+                                  in ListOfGO theBase2);
   };
 
- // # GEOM_IShapesOperations
   /*!
    *  \brief Interface for Shapes creation:
    *
@@ -1596,7 +1687,7 @@ module GEOM
      *  in compliance with given list of edges
      *  \param theShape Initial shape.
      *  \param theTolerance Maximum distance between edges, which can be considered as coincident.
-     *  \param theFaces List of edges for gluing.
+     *  \param theEdges List of edges for gluing.
      *  \return New GEOM_Object, containing a copy of theShape without some edges.
      */
     GEOM_Object MakeGlueEdgesByList (in GEOM_Object theShape,
@@ -1798,7 +1889,7 @@ module GEOM
                                in GEOM_Object theAx1,
                                in shape_state theState);
     /*!
-     *  \briefFind in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+     *  \brief 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.
@@ -2099,6 +2190,17 @@ module GEOM
      */
     GEOM_Object GetSame (in GEOM_Object theShapeWhere,
                                 in GEOM_Object theShapeWhat);
+
+    /*!
+     *  \brief Get sub-shape Ids 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 Ids.
+     */
+    ListOfLong GetSameIDs (in GEOM_Object theShapeWhere,
+                           in GEOM_Object theShapeWhat);
+
   };
 
  // # GEOM_IBlocksOperations: 
@@ -2150,7 +2252,7 @@ module GEOM
      *  faces is not important. 
      *
      *  It is  not necessary that Faces share the same edge.
-     *  \param theFace1-theFace6 Faces for the hexahedral solid.
+     *  \param theFace1,theFace2,theFace3,theFace4,theFace5,theFace6 Faces for the hexahedral solid.
      *  \return New GEOM_Object, containing the created solid.
      */
     GEOM_Object MakeHexa (in GEOM_Object theFace1,
@@ -2219,7 +2321,7 @@ module GEOM
     /*!
      *  \brief Returns a face, found in the given shape by four given corner vertices.
      *  \param theShape Block or a compound of blocks.
-     *  \param thePoint1-thePoint4 Points, close to the corners of the desired face.
+     *  \param thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
      *  \return New GEOM_Object, containing the found face.
      */
     GEOM_Object GetFaceByPoints (in GEOM_Object theShape,
@@ -2258,7 +2360,7 @@ module GEOM
 
     /*!
      *  \brief Find a face of block, whose outside normale has minimal angle with the given vector.
-     *  \param theShape Block or a compound of blocks.
+     *  \param theBlock Block or a compound of blocks.
      *  \param theVector Vector, close to the normale of the desired face.
      *  \return New GEOM_Object, containing the found face.
      */
@@ -2290,8 +2392,8 @@ module GEOM
      *  \param theMinNbFaces If solid has lower number of faces, it is not a block.
      *  \param theMaxNbFaces If solid has higher number of faces, it is not a block.
      *    \note If theMaxNbFaces = 0, the maximum number of faces is not restricted.
+     *  \param theNbBlocks Number of specified blocks in theCompound.
      *  \return TRUE, if the given compound contains only blocks.
-     *  \return theNbBlocks Number of specified blocks in theCompound.
      */
     boolean IsCompoundOfBlocks (in GEOM_Object theCompound,
                                 in long        theMinNbFaces,
@@ -2344,8 +2446,8 @@ module GEOM
      *  - The glue between two quadrangle faces should be applied.
      *    \note Single block is also accepted as a valid compound of blocks.
      *  \param theCompound The compound to check.
+     *  \param theErrors Structure, containing discovered errors and incriminated sub-shapes.
      *  \return TRUE, if the given shape is a compound of blocks.
-     *  \return theErrors Structure, containing discovered errors and incriminated sub-shapes.
      */
     boolean CheckCompoundOfBlocks (in GEOM_Object theCompound,
                                    out BCErrors   theErrors);
@@ -2360,6 +2462,17 @@ module GEOM
     string PrintBCErrors (in GEOM_Object theCompound,
                           in BCErrors    theErrors);
 
+    /*!
+     *  \brief Retrieve all non blocks solids and faces from a shape.
+     *
+     *  \param theShape The shape to explore.
+     *  \param theNonQuads Output parameter. Group of all non quadrangular faces.
+     *
+     *  \return Group of all non block solids (= not 6 faces, or with 6
+     *          faces, but with the presence of non-quadrangular faces).
+     */
+    GEOM_Object GetNonBlocks (in GEOM_Object theShape, out GEOM_Object theNonQuads);
+
     /*!
      *  \brief Remove all seam and degenerated edges from \a theShape.
      *
@@ -2501,7 +2614,7 @@ 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, then only shapes of
+     *  \param theKeepNonlimitShapes: 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).
@@ -2717,7 +2830,7 @@ module GEOM
      *  \param thezExpr parametric equation of the coordinates Z.
      *  \param theParamMin the minimal value of the parameter.
      *  \param theParamMax the maximum value of the parameter.
-     *  \param theParamStep the number of steps of the parameter discretization.
+     *  \param theParamNbStep the number of steps of the parameter discretization.
      *  \param theCurveType the type of the curve.
      *  \return New GEOM_Object, containing the created curve.
      */    
@@ -2731,10 +2844,10 @@ module GEOM
 
     /*!
      *  \brief Create a sketcher (wire or face), following the textual description,
-     *  passed through \a theCommand argument.
+     *         passed through \a theCommand argument.
      *
      *  Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n
-     *  Format of the description string have to be the following:
+     *  Format of the description string has to be the following:
      *
      *  "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
      *
@@ -2762,32 +2875,60 @@ module GEOM
      *                    coordinates of the working plane.
      *  \param theWorkingPlane Nine double values, defining origin,
      *                         OZ and OX directions of the working plane.
-     *  \return New GEOM_Object, containing the created wire.
+     *  \return New GEOM_Object, containing the created wire or face.
      */
     GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane);
 
     /*!
-     *  \brief Create a 3D sketcher, following the numerical description,
-     *  passed through points created by \a theCoordinates argument. 
+     *  \brief Create a sketcher (wire or face), following the textual description,
+     *         passed through \a theCommand argument. 
      *
-     *  Format of the description string have to be the following:
+     *  For format of the description string see the previous method.\n
      *
-     *  "Make3DSketcher[x1, y1, z1, x2, y2, z2, ..., xN, yN, zN]"
+     *  \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 or face.
      */
+    GEOM_Object MakeSketcherOnPlane (in string theCommand, in GEOM_Object theWorkingPlane);
 
-    GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
-
-      /*!
-     *  \brief Create a sketcher (wire or face), following the textual description,
-     *  passed through \a theCommand argument. 
+    /*!
+     *  \brief Create a 3D sketcher, following the textual description,
+     *         passed through \a theCommand argument. 
+     *
+     *  Format of the description string has to be the following:
+     *
+     *  "3DSketcher:CMD[:CMD[:CMD...]]"
+     *
+     *  Where CMD is one of
+     *     - "TT x y z" : Create segment by point at X & Y or set the first point
+     *     - "T dx dy dz" : Create segment by point with DX & DY
+     *     .
+     *       \n
+     *     - "OXY angleX angle2 length" : Create segment by two angles and length
+     *     - "OYZ angleY angle2 length" : Create segment by two angles and length
+     *     - "OXZ angleX angle2 length" : Create segment by two angles and length
+     *     .
+     *       \n
+     *     - "WW" : Close Wire (to finish)
      *
-     *  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);
+    GEOM_Object Make3DSketcherCommand (in string theCommand);
+
+    /*!
+     *  \brief Create a 3D sketcher, made of a straight segments, joining points
+     *         with coordinates passed through \a theCoordinates argument. 
+     *
+     *  Order of coordinates has to be the following:
+     *  x1, y1, z1, x2, y2, z2, ..., xN, yN, zN
+     *
+     *  \param theCoordinates List of double values.
+     *  \return New GEOM_Object, containing the created wire.
+     */
+    GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
   };
 
  // # GEOM_ILocalOperations:
@@ -2862,11 +3003,18 @@ module GEOM
      *          <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
+     *  \param doIgnoreSecantVertices If FALSE, fillet radius is always limited
+     *         by the length of the edges, nearest to the fillet vertex.
+     *         But sometimes the next edge is C1 continuous with the one, nearest to
+     *         the fillet point, and such two (or more) edges can be united to allow
+     *         bigger radius. Set this flag to TRUE to allow collinear edges union,
+     *         thus ignoring the secant vertex (vertices).
      *  \return New GEOM_Object, containing the result shape.
      */
     GEOM_Object MakeFillet1D (in GEOM_Object theShape,
                               in double      theR,
-                              in ListOfLong  theVertexes);
+                              in ListOfLong  theVertexes,
+                              in boolean     doIgnoreSecantVertices);
 
     /*!
      *  \brief Perform a symmetric chamfer on all edges of the given shape.
@@ -2927,7 +3075,7 @@ module GEOM
     *  \brief Perform a chamfer on edges,
     *  with distance D1 on the first specified face (if several for one edge)
     *  \param theShape Shape, to perform chamfer on.
-    *  \param theD1 theD2 Chamfer size
+    *  \param theD1,theD2 Chamfer size
     *  \param theEdges Sequence of edges of \a theShape.
     *  \return New GEOM_Object, containing the result shape.
     */
@@ -3077,6 +3225,16 @@ module GEOM
     GEOM_Object DivideEdge (in GEOM_Object theObject, in short theEdgeIndex,
                             in double theValue, in boolean isByParameter);
 
+    /*!
+     *  \brief Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
+     *  \param theWire Wire to minimize the number of C1 continuous edges in.
+     *  \param theVertices A list of vertices to suppress. If the list
+     *                     is empty, all vertices in a wire will be assumed.
+     *  \return New GEOM_Object with modified wire.
+     */
+    GEOM_Object FuseCollinearEdgesWithinWire (in GEOM_Object theWire,
+                                              in ListOfGO theVertices);
+
     /*!
      *  \brief Get a list of wires (wrapped in GEOM_Object-s),
      *  that constitute a free boundary of the given shape.
@@ -3134,12 +3292,24 @@ module GEOM
      *  \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 'IGES' length unit will be
-     *         set to 'meter' and result model will be scaled.
+     *         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 New GEOM_Object, containing the imported shape.
      */
     GEOM_Object ImportFile (in string theFileName, in string theFormatName);
 
+    /*!
+     *  \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.
@@ -3158,6 +3328,14 @@ module GEOM
     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.
+     *  \param theStream The BRep binary stream.
+     *  \return New GEOM_Object, containing the shape, read from theStream.
+     */
+    GEOM_Object RestoreShape (in SALOMEDS::TMPFile theStream);
+
     /*!
      * \brief Load texture from file
      * \param theTextureFile texture file name
@@ -3346,7 +3524,7 @@ module GEOM
     /*!
      *  \brief Get inertia matrix and moments of inertia of theShape.
      *  \param theShape Shape to calculate inertia of.
-     *  \param I(1-3)(1-3) Output. Components of the inertia matrix of the given shape.
+     *  \param I11,I12,I13,I21,I22,I23,I31,I32,I33 Output. Components of the inertia matrix of the given shape.
      *  \param Ix,Iy,Iz Output. Moments of inertia of the given shape.
      *  \return Returns inertia through the last twelve arguments.
      */
@@ -3575,6 +3753,65 @@ module GEOM
      */
     void DifferenceIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
 
+    /*!
+     *  \brief Union of two groups.
+     *  New group is created. It will contain all entities
+     *  which are present in groups theGroup1 and theGroup2.
+     *  \param theGroup1, theGroup2 are the initial GEOM groups
+     *                              to create the united group from.
+     *  \return a newly created GEOM group.
+     */
+    GEOM_Object UnionGroups (in GEOM_Object theGroup1, in GEOM_Object theGroup2);
+
+    /*!
+     *  \brief Intersection of two groups.
+     *  New group is created. It will contain only those entities
+     *  which are present in both groups theGroup1 and theGroup2.
+     *  \param theGroup1, theGroup2 are the initial GEOM groups to get common part of.
+     *  \return a newly created GEOM group.
+     */
+    GEOM_Object IntersectGroups (in GEOM_Object theGroup1, in GEOM_Object theGroup2);
+
+    /*!
+     *  \brief Cut of two groups.
+     *  New group is created. It will contain entities which are
+     *  present in group theGroup1 but are not present in group theGroup2.
+     *  \param theGroup1 is a GEOM group to include elements of.
+     *  \param theGroup2 is a GEOM group to exclude elements of.
+     *  \return a newly created GEOM group.
+     */
+    GEOM_Object CutGroups (in GEOM_Object theGroup1, in GEOM_Object theGroup2);
+
+    /*!
+     *  \brief Union of list of groups.
+     *  New group is created. It will contain all entities that are
+     *  present in groups listed in theGList.
+     *  \param theGList is a list of GEOM groups to create the united group from.
+     *  \return a newly created GEOM group.
+     */
+    GEOM_Object UnionListOfGroups (in ListOfGO theGList);
+
+    /*!
+     *  \brief Intersection of list of groups.
+     *  New group is created. It will contain only entities
+     *  which are simultaneously present in the groups listed in theGList.
+     *  \param theGList is a list of GEOM groups to get common part of.
+     *  \return a newly created GEOM group.
+     */
+    GEOM_Object IntersectListOfGroups (in ListOfGO theGList);
+
+    /*!
+     *  \brief Cut of lists of groups.
+     *  New group is created. It will contain only entities
+     *  which are present in groups listed in theGList1 but 
+     *  are not present in groups from theGList2.
+     *  \param theGList1 is a list of GEOM groups to include elements of.
+     *  \param theGList2 is a list of GEOM groups to exclude elements of.
+     *  \return a newly created GEOM group.
+     */
+    GEOM_Object CutListOfGroups (in ListOfGO theGList1,
+                                 in ListOfGO theGList2);
+
     /*!
      *  \brief Returns a type of sub-objects stored in the group
      *  \param theGroup is a GEOM group which type is returned.
@@ -3728,6 +3965,43 @@ module GEOM
                                                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);
+    /*!
+     *  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
+     *  \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
+     *  \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
+     *  \return New GEOM_Object, containing the created shape.
+     */
+    GEOM_Object MakeDividedCylinder (in double theR, 
+                                     in double theH,
+                                     in pattern thePattern );
+
     /*@@ insert new functions before this line @@ do not remove this line @@*/
   };
 
@@ -3826,7 +4100,24 @@ module GEOM
      *
      *  To be used from GUI and from geompy.addToStudy.
      *  Work like the above method, but accepts study object theSObject instead of GEOM_Object.
+     *  \param theStudy  the study, in which theObject is published already,
+     *                   and in which the arguments will be published
      *  \param theSObject study object, referencing GEOM_Object, arguments of which will be published
+     *  \param theArgs   list of GEOM_Object, operation arguments to be published.
+     *                   If this list is empty, all operation arguments will be published
+     *  \param theFindMethod method to search sub-shapes, corresponding to arguments and
+     *                       their sub-shapes. Value from enumeration GEOM::find_shape_method.
+     *  \param theInheritFirstArg set properties of the first argument for \a theObject.
+     *                            Do not publish sub-shapes in place of arguments, but only
+     *                            in place of sub-shapes of the first argument,
+     *                            because the whole shape corresponds to the first argument.
+     *                            Mainly to be used after transformations, but it also can be
+     *                            usefull after partition with one object shape, and some other
+     *                            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.
+     *  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
+     *                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
      */
     ListOfGO RestoreSubShapesSO (in SALOMEDS::Study   theStudy,
                                  in SALOMEDS::SObject theSObject,