Salome HOME
0014047: EDF PAL 334 : Problem to select merged face with Create group window
[modules/geom.git] / idl / GEOM_Gen.idl
index de4600e277da9ea6ae230fbd74fa6e7802544ebc..0cf8d8573a0862716e03f6b9ecebe6105a2657bd 100644 (file)
@@ -11,8 +11,8 @@
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
 // Lesser General Public License for more details.
 //
-// You should have received a copy of the GNU Lesser General Public  
-// License along with this library; if not, write to the Free Software 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
@@ -36,7 +36,7 @@ module GEOM
    *  Topological types of shapes (like Open Cascade types)
    */
   enum shape_type { COMPOUND, COMPSOLID, SOLID, SHELL,
-                   FACE, WIRE, EDGE, VERTEX, SHAPE };
+                    FACE, WIRE, EDGE, VERTEX, SHAPE };
 
 
   /*!
@@ -76,6 +76,32 @@ module GEOM
     ST_ONIN
   };
 
+  /*!
+   *  Kind of method to find inside one main shape some subshapes,
+   *  corresponding to other given shape (its argument)
+   *  Is used in functions GEOM_Gen.RestoreSubShapes<xxx>()
+   */
+  enum find_shape_method
+  {
+    /*! Use GetInPlace functionality. Suits all cases, except transformations */
+    FSM_GetInPlace,
+
+    /*! To be used only for transformation result, to find subshapes of argument.
+     *  Only this method can be used after transformation.
+     */
+    FSM_Transformed,
+
+    /*! To find only shared subshapes, not modified by the operation */
+    FSM_GetSame,
+
+    /*! Use GetShapesOnShape method (can work only on solids) */
+    FSM_GetShapesOnShape,
+
+    /*! Use GetInPlaceByHistory method (can work only after Partition) */
+    FSM_GetInPlaceByHistory
+  };
+
+
   typedef sequence<string>      string_array;
   typedef sequence<short>       short_array;
   typedef sequence<long>        ListOfLong;
@@ -287,6 +313,18 @@ module GEOM
     GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve,
                                  in double theParameter);
 
+    /*!
+     *  Create a point, corresponding to the given parameters on the
+     *    given surface.
+     *  \param theRefSurf The referenced surface.
+     *  \param theUParameter Value of U-parameter on the referenced surface.
+     *  \param theVParameter Value of V-parameter on the referenced surface.
+     *  \return New GEOM_Object, containing the created point.
+     */
+    GEOM_Object MakePointOnSurface (in GEOM_Object theRefSurf,
+                                   in double theUParameter,
+                                   in double theVParameter);
+
     /*!
      *  Create a point, on two lines intersection.
      *  \param theRefLine1, theRefLine2 The referenced lines.
@@ -294,13 +332,13 @@ module GEOM
      */
     GEOM_Object MakePointOnLinesIntersection (in GEOM_Object theRefLine1,
                                              in GEOM_Object theRefLine2);
-    
+
      /*!
      *  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. 
+     *  \last parameter of curve.
      *  \return New GEOM_Object, containing the created point.
      */
      GEOM_Object MakeTangentOnCurve (in GEOM_Object theRefCurve,
@@ -394,11 +432,11 @@ module GEOM
     GEOM_Object MakeMarker (in double theOX , in double theOY , in double theOZ,
                            in double theXDX, in double theXDY, in double theXDZ,
                            in double theYDX, in double theYDY, in double theYDZ);
-     
+
     /*!
      *  Create a tangent plane to specified face in the point with specified parameters.
      *  Values of parameters should be between 0. and 1.0
-     *  \param theFace - face for which tangent plane shuold be built. 
+     *  \param theFace - face for which tangent plane shuold be built.
      *  \param theParameterU - value of parameter by U
      *  \param theParameterV - value of parameter Vthe
      *  \param theTrimSize - defines sizes of created face
@@ -474,6 +512,20 @@ module GEOM
     GEOM_Object TranslateVectorCopy (in GEOM_Object theObject,
                                     in GEOM_Object theVector);
 
+    /*!
+     *  Translate the given object along the given vector on given distance,
+     *  creating its copy before the translation.
+     *  \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.
+     *  \return New GEOM_Object, containing the translated object.
+     */
+    GEOM_Object TranslateVectorDistance (in GEOM_Object theObject,
+                                        in GEOM_Object theVector,
+                                        in double      theDistance,
+                                        in boolean     theCopy);
+
     /*!
      *  Translate the given object along the given vector a given number times
      *  \param theObject The object to be translated.
@@ -683,6 +735,33 @@ module GEOM
     GEOM_Object ScaleShapeCopy (in GEOM_Object theObject, in GEOM_Object thePoint,
                                in double theFactor);
 
+    /*!
+     *  Scale the given object by different factors along coordinate axes.
+     *  \param theObject The object to be scaled.
+     *  \param thePoint Center point for scaling.
+     *  \param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
+     *  \return theObject.
+     */
+    GEOM_Object ScaleShapeAlongAxes (in GEOM_Object theObject,
+                                     in GEOM_Object thePoint,
+                                     in double theFactorX,
+                                     in double theFactorY,
+                                     in double theFactorZ);
+
+    /*!
+     *  Scale the given object by different factors along coordinate axes,
+     *  creating its copy before the scaling.
+     *  \param theObject The object to be scaled.
+     *  \param thePoint Center point for scaling.
+     *  \param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
+     *  \return New GEOM_Object, containing the scaled shape.
+     */
+    GEOM_Object ScaleShapeAlongAxesCopy (in GEOM_Object theObject,
+                                         in GEOM_Object thePoint,
+                                         in double theFactorX,
+                                         in double theFactorY,
+                                         in double theFactorZ);
+
     /*!
      *  Modify the Location of the given object by LCS.
      *  \param theObject The object to be displaced.
@@ -742,6 +821,53 @@ module GEOM
      */
     GEOM_Object MakeBoxTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
 
+    /*!
+     *  Create a face specified dimensions along OX-OY coordinate axes,
+     *  with edges parallel to the coordinate axes.
+     *  Center of the face will be at point (0, 0, 0).
+     *  \param theH Height of the Face.
+     *  \param theW Width of the Face.
+     *  \param theOrientation Orientation belong axis OXY OYZ OZX
+     *  \return New GEOM_Object, containing the created face.
+     */
+    GEOM_Object MakeFaceHW (in double theH, in double theW, in short theOrientation);
+    /*!
+     *  Create a face by normale vector or edge and two specified sizes,
+     *  vertical (H) and horisontal (W).
+     *  \param theVec defines plane.
+     *  \param theH vertical size (height).
+     *  \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);
+    /*!
+     *  Create a Disk (circular face) 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.
+     *  \return New GEOM_Object, containing the created disk.
+     */
+    GEOM_Object MakeDiskPntVecR (in GEOM_Object thePnt,
+                                in GEOM_Object theVec,
+                                in double theR);
+    /*!
+     *  Create a disk (circular face), passing through three given points
+     *  \param thePnt1, thePnt2, thePnt3 Points, defining the disk.
+     *  \return New GEOM_Object, containing the created disk.
+     */
+    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).
+     *  \param theR of the Disk.
+     *  \param theOrientation Orientation belong axis OXY OYZ OZX
+     *  \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
@@ -863,6 +989,18 @@ 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.
+     *  \param DX, DY, DZ end of extrusion vector.
+     *  \return New GEOM_Object, containing the created prism.
+     */
+    GEOM_Object MakePrismDXDYDZ (in GEOM_Object theBase,
+                                in double theDX, in double theDY, in double theDZ);
+    /*  The same prism but in two directions forward&backward */
+    GEOM_Object MakePrismDXDYDZ2Ways (in GEOM_Object theBase,
+                                      in double theDX, in double theDY, in double theDZ);
 
     /*!
      *  Create a shape by extrusion of the base shape along
@@ -892,11 +1030,11 @@ module GEOM
 
     /*!
      *  Create a filling from the given compound of contours.
-     *  \param theMinDeg a minimal degree
-     *  \param theMaxDeg a maximal degree
-     *  \param theTol2D a 2d tolerance
-     *  \param theTol3D a 3d tolerance
-     *  \param theNbIter a number of iteration
+     *  \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
      *  \return New GEOM_Object, containing the created filling surface.
      */
     GEOM_Object MakeFilling (in GEOM_Object theShape,
@@ -937,7 +1075,7 @@ module GEOM
                                               in GEOM_Object thePath,
                                               in boolean theWithContact ,
                                               in boolean theWithCorrection );
-    
+
     /*!
      *  Create a shape by extrusion of the profile shape along
      *  the path shape. The path shape can be a shell or a face.
@@ -969,6 +1107,22 @@ module GEOM
      */
     GEOM_Object MakePipeShellsWithoutPath (in ListOfGO theSeqBases,
                                           in ListOfGO theLocations);
+
+    /*!
+     *  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 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.
+     *  \param theVec Vector defines a constant binormal direction to keep the
+     *                same angle beetween the Direction and the sections
+     *                along the sweep surface.
+     *  \return New GEOM_Object, containing the created pipe.
+     */
+    GEOM_Object MakePipeBiNormalAlongVector (in GEOM_Object theBase, 
+                                            in GEOM_Object thePath, 
+                                            in GEOM_Object theVec);
+
   };
 
   /*!
@@ -1271,7 +1425,7 @@ module GEOM
                                    in long        theShapeType,
                                    in GEOM_Object theAx1,
                                    in shape_state theState);
-                                   
+
     /*!
      *  Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
      *  the specified plane by the certain way, defined through \a theState parameter.
@@ -1279,7 +1433,7 @@ module GEOM
      *  \param theShapeType Type of sub-shapes to be retrieved.
      *  \param theAx1 Vector (or line, or linear edge), specifying normal
      *                direction of the plane to find shapes on.
-     *  \param thePnt Point specifying location of the plane to find shapes on.     
+     *  \param thePnt Point specifying location of the plane to find shapes on.
      *  \param theState The state of the subshapes to find.
      *  \return List of IDs of all found sub-shapes.
      */
@@ -1368,6 +1522,45 @@ module GEOM
                             in long        theShapeType,
                             in shape_state theState);
 
+    /*!
+     * \brief Find subshapes complying with given status
+     * \param theCheckShape - the shape to check state of subshapes against
+     * \param theShape - the shape to explore
+     * \param theShapeType - type of subshape of theShape
+     * \param theState - required state
+     * \return List of IDs of all found sub-shapes.
+     */
+    ListOfLong GetShapesOnShapeIDs (in GEOM_Object theCheckShape,
+                                   in GEOM_Object theShape,
+                                   in short       theShapeType,
+                                   in shape_state theState);
+
+    /*!
+     * \brief Find subshapes complying with given status
+     * \param theCheckShape - the shape to check state of subshapes against
+     * \param theShape - the shape to explore
+     * \param theShapeType - type of subshape of theShape
+     * \param theState - required state
+     * \return List of all found sub-shapes.
+     */
+    ListOfGO GetShapesOnShape (in GEOM_Object theCheckShape,
+                              in GEOM_Object theShape,
+                              in short       theShapeType,
+                              in shape_state theState);
+
+    /*!
+     * \brief Find subshapes complying with given status
+     * \param theCheckShape - the shape to check state of subshapes against
+     * \param theShape - the shape to explore
+     * \param theShapeType - type of subshape of theShape
+     * \param theState - required state
+     * \return compound includes all found sub-shapes.
+     */
+    GEOM_Object GetShapesOnShapeAsCompound (in GEOM_Object theCheckShape,
+                                           in GEOM_Object theShape,
+                                           in short       theShapeType,
+                                           in shape_state theState);
+
     /*!
      *  Get sub-shape(s) of \a theShapeWhere, which are
      *  coincident with \a theShapeWhat or could be a part of it.
@@ -2037,7 +2230,7 @@ module GEOM
     GEOM_Object MakeChamferEdge (in GEOM_Object theShape,
                                 in double theD1, in double theD2,
                                 in long theFace1, in long theFace2);
-    /*! 
+    /*!
      *  The Same but with params theD = Chamfer Lenght
      *  and theAngle = Chamfer Angle (Angle in radians)
      */
@@ -2061,7 +2254,7 @@ module GEOM
     GEOM_Object MakeChamferFaces (in GEOM_Object theShape,
                                  in double theD1, in double theD2,
                                  in ListOfLong theFaces);
-    /*! 
+    /*!
      *  The Same but with params theD = Chamfer Lenght
      *  and theAngle = Chamfer Angle (Angle in radians)
      */
@@ -2080,7 +2273,7 @@ module GEOM
     GEOM_Object MakeChamferEdges (in GEOM_Object theShape,
                                  in double theD1, in double theD2,
                                  in ListOfLong theEdges);
-    /*! 
+    /*!
      *  The Same but with params theD = Chamfer Lenght
      *  and theAngle = Chamfer Angle (Angle in radians)
      */
@@ -2490,6 +2683,59 @@ module GEOM
      *  Get point coordinates
      */
     void PointCoordinates (in GEOM_Object theShape, out double X, out double Y, out double Z);
+
+    /*!
+     *  Get radius of curvature of curve in the point determinated by param
+     *  \param theShape - curve.
+     *  \param theParam - parameter on curve
+     *  \return Value of curvature.
+     */
+    double CurveCurvatureByParam (in GEOM_Object theShape, in double theParam);
+
+    /*!
+     *  Get radius of curvature of curve in the given point
+     *  \param theShape - curve.
+     *  \param thePoint - point
+     *  \return Value of curvature.
+     */
+    double CurveCurvatureByPoint (in GEOM_Object theShape, in GEOM_Object thePoint);
+
+    /*!
+     *  Get max radius of curvature of surface in the point determinated by params
+     *  \param theShape - surface.
+     *  \param theUParam - U-parameter on surface
+     *  \param theVParam - V-parameter on surface
+     *  \return Value of curvature.
+     */
+    double MaxSurfaceCurvatureByParam (in GEOM_Object theShape, in double theUParam,
+                                      in double theVParam);
+
+    /*!
+     *  Get max radius of curvature of surface in the given point
+     *  \param theShape - surface.
+     *  \param thePoint - point
+     *  \return Value of curvature.
+     */
+    double MaxSurfaceCurvatureByPoint (in GEOM_Object theShape, in GEOM_Object thePoint);
+
+    /*!
+     *  Get min radius of curvature of surface in the point determinated by params
+     *  \param theShape - surface.
+     *  \param theUParam - U-parameter on surface
+     *  \param theVParam - V-parameter on surface
+     *  \return Value of curvature.
+     */
+    double MinSurfaceCurvatureByParam (in GEOM_Object theShape, in double theUParam,
+                                      in double theVParam);
+
+    /*!
+     *  Get min radius of curvature of surface in the given point
+     *  \param theShape - surface.
+     *  \param thePoint - point
+     *  \return Value of curvature.
+     */
+    double MinSurfaceCurvatureByPoint (in GEOM_Object theShape, in GEOM_Object thePoint);
+
   };
 
 
@@ -2586,7 +2832,7 @@ module GEOM
     void Redo (in long theStudyID);
 
     /*!
-     * Publishing manangement
+     * Publishing management
      * Adds in theStudy a object theObject under with a name theName,
      * if theFather is not NULL the object is placed under thFather's SObject.
      * Returns a SObject where theObject is placed
@@ -2596,6 +2842,45 @@ module GEOM
                                  in string theName,
                                  in GEOM_Object theFather);
 
+    /*!
+     *  Publish sub-shapes, standing for arguments and sub-shapes of arguments
+     *  To be used from python scripts out of geompy.addToStudy (non-default usage)
+     *  \param theStudy  the study, in which theObject is published already,
+     *                   and in which the arguments will be published
+     *  \param theObject published 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 subshapes, corresponding to arguments and
+     *                       their subshapes. Value from enumeration GEOM::find_shape_method.
+     *  \param theInheritFirstArg set properties of the first argument for \a theObject.
+     *                            Do not publish subshapes in place of arguments, but only
+     *                            in place of subshapes 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.
+     *  \return True in case of success, False otherwise.
+     */
+    boolean RestoreSubShapesO (in SALOMEDS::Study   theStudy,
+                              in GEOM_Object       theObject,
+                              in ListOfGO          theArgs,
+                              in find_shape_method theFindMethod,
+                              in boolean           theInheritFirstArg);
+
+    /*!
+     *  Publish sub-shapes, standing for arguments and sub-shapes of arguments
+     *  To be used from GUI and from geompy.addToStudy.
+     *  Work like the above method, but accepts study object theSObject instead of GEOM_Object.
+     *  \param theSObject study object, referencing GEOM object, arguments of which will be published
+     */
+    boolean RestoreSubShapesSO (in SALOMEDS::Study   theStudy,
+                               in SALOMEDS::SObject theSObject,
+                               in ListOfGO          theArgs,
+                               in find_shape_method theFindMethod,
+                               in boolean           theInheritFirstArg);
+
     /*!
      *  Methods to access interfaces for objects creation and transformation
      */