Salome HOME
Implementation of 0021855: EDF 2321 GEOM : Add folders to group objects in the object...
[modules/geom.git] / idl / GEOM_Gen.idl
index b7bcf45e20c1234da2a8a9ffadda47540e92c1a9..23083c1f450e88f4c670b0bf8046cd019bdfaa6b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2013  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
@@ -190,6 +190,25 @@ module GEOM
     HEXAGON
   };
 
+ /*!
+   * \brief Object creation parameters
+   *
+   * Is returned by GEOM_Object::GetCreationInformation()
+   */
+  struct Parameter
+  {
+    string name;
+    //any value;
+    string value;
+  };
+  typedef sequence<Parameter> Parameters;
+
+  struct CreationInformation
+  {
+    string     operationName;
+    Parameters params;
+  };
+
 
   typedef sequence<string>      string_array;
   typedef sequence<short>       short_array;
@@ -200,6 +219,7 @@ module GEOM
   interface GEOM_Object;
 
   typedef sequence<GEOM_Object> ListOfGO;
+  typedef sequence<SALOMEDS::SObject> object_list;
 
   //# GEOM_Object
   /*!
@@ -410,9 +430,14 @@ module GEOM
      *  \brief Return list of notebook variables used for object creation separated by ":" symbol
      */
     string GetParameters();
+
+    /*!
+     * \brief Return name of operation and values of parameters used for object creation
+     */
+    CreationInformation GetCreationInformation();
   };
 
- // # GEOM_IOperations:
 // # GEOM_IOperations:
   /*!
    *  \brief Basic methods of all geometric operations
    */
@@ -1541,6 +1566,20 @@ module GEOM
                                              in GEOM_Object thePath,
                                              in GEOM_Object theVec);
 
+
+     /*!
+     *  \brief Make a thick solid from a surface shape (face or shell)
+     *  \param theObject Surface from which the thick solid is made
+     *  \param theThickness Value of the thickness
+     *  \param isCopy To make a copy of \a theObject ot to modify \a theObject.
+     *  \return New GEOM_Object, containing the created pipe if isCopy = true
+     *          or the modified object if isCopy = false
+     */
+    GEOM_Object MakeThickening (in GEOM_Object theObject,
+                                in double theThickness,
+                                in boolean isCopy);
+
+    
     /*!
      *  \brief Build a middle path of a pipe-like shape.
      *
@@ -2543,6 +2582,15 @@ module GEOM
     GEOM_Object RemoveExtraEdges (in GEOM_Object theShape,
                                   in long        theOptimumNbFaces);
 
+    /*!
+     *  \brief Performs union faces of \a theShape.
+     *
+     *  Unite faces sharing one surface.
+     *  \param theShape The compound or single solid that contains faces to perform union.
+     *  \return Improved shape.
+     */
+    GEOM_Object UnionFaces (in GEOM_Object theShape);
+
     /*!
      *  \brief Check, if the given shape is a blocks compound.
      *
@@ -2662,6 +2710,29 @@ module GEOM
                              in GEOM_Object theShape2,
                              in long theOperation);
 
+    /*!
+     *  \brief Perform fusion boolean operation on list of objects.
+     *  \param theShapes Shapes to be fused.
+     *  \return New GEOM_Object, containing the result shape.
+     */
+    GEOM_Object MakeFuseList (in ListOfGO theShapes);
+
+    /*!
+     *  \brief Perform common boolean operation on list of objects.
+     *  \param theShapes Shapes for common operation.
+     *  \return New GEOM_Object, containing the result shape.
+     */
+    GEOM_Object MakeCommonList (in ListOfGO theShapes);
+
+    /*!
+     *  \brief Perform cutting of list of objects from theMainShape.
+     *  \param theMainShape the object for cut operation.
+     *  \param theShapes Shapes to be cut from theMainShape (tools).
+     *  \return New GEOM_Object, containing the result shape.
+     */
+    GEOM_Object MakeCutList (in GEOM_Object theMainShape,
+                             in ListOfGO theShapes);
+
     /*!
      *  \brief Perform partition operation.
      *
@@ -3278,6 +3349,22 @@ module GEOM
      */
     GEOM_Object Sew (in GEOM_Object theObject, in double theTolerance);
 
+    /*!
+     *  Sewing of the given object. Allows non-manifold sewing.
+     *  \param theObject Shape to be processed.
+     *  \param theTolerance Required tolerance value.
+     *  \return New GEOM_Object, containing processed shape.
+     */
+    GEOM_Object SewAllowNonManifold(in GEOM_Object theObject, in double theTolerance);
+
+    /*!
+     *  Rebuild the topology of theCompound of solids by removing
+     *  of the faces that are shared by several solids.
+     *  \param theCompound Shape to be processed.
+     *  \return New GEOM_Object, containing processed shape.
+     */
+    GEOM_Object RemoveInternalFaces (in GEOM_Object theCompound);
+
     /*!
      *  \brief Addition of a point to a given edge object.
      *  \param theObject Shape to be processed.
@@ -3604,12 +3691,14 @@ module GEOM
     /*!
      *  \brief Get parameters of bounding box of the given shape
      *  \param theShape Shape to obtain bounding box of.
+     *  \param precise TRUE for precise computation; FALSE for fast one.
      *  \param Xmin,Xmax Output. Limits of shape along OX axis.
      *  \param Ymin,Ymax Output. Limits of shape along OY axis.
      *  \param Zmin,Zmax Output. Limits of shape along OZ axis.
      *  \return Returns parameters of bounding box through the last six arguments.
      */
     void GetBoundingBox (in GEOM_Object theShape,
+                         in boolean precise,
                          out double Xmin, out double Xmax,
                          out double Ymin, out double Ymax,
                          out double Zmin, out double Zmax);
@@ -3617,9 +3706,11 @@ module GEOM
     /*!
      *  \brief Get bounding box of the given shape
      *  \param theShape Shape to obtain bounding box of.
+     *  \param precise TRUE for precise computation; FALSE for fast one.
      *  \return New GEOM_Object, containing the created bounding box.
      */
-    GEOM_Object MakeBoundingBox (in GEOM_Object theShape);
+    GEOM_Object MakeBoundingBox (in GEOM_Object theShape,
+                                 in boolean precise);
 
     /*!
      *  \brief Get min and max tolerances of sub-shapes of theShape
@@ -3922,6 +4013,8 @@ module GEOM
    */
   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).
@@ -4049,12 +4142,263 @@ 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);
+
+    // 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, 
@@ -4068,6 +4412,7 @@ module GEOM
      *  \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,
@@ -4080,11 +4425,19 @@ module GEOM
      *  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
+     *  \return New GEOM_Object, containing the created shape.
+     */
+    GEOM_Object MakeSmoothingSurface (in ListOfGO thelPoints);
 
     /*@@ insert new functions before this line @@ do not remove this line @@*/
   };
@@ -4286,6 +4639,54 @@ module GEOM
     ListOfGO PublishNamedShapesInStudy(in SALOMEDS::Study theStudy,
                                        //in SObject theSObject,
                                        in Object theObject);
+
+    /*!
+     * \brief Creates a new folder
+     *
+     * Creates a new container (folder) for any GEOM objects.
+     * Folder will have name theName.
+     * If theFather is not NULL, the folder is placed under theFather object.
+     * Otherwise, the folder takes place under root 'Geometry' object.
+     * 
+     * \param theName name of the folder
+     * \param theFather parent object
+     * \return SObject represented the created folder.
+     */
+    SALOMEDS::SObject CreateFolder (in string theName,
+                                   in SALOMEDS::SObject theFather);
+
+    /*!
+     * \brief Moves object to the specified folder
+     *
+     * The moved object should be first published in the study.
+     * \param theObject GEOM object to move
+     * \param theFolder target folder
+     */
+    void MoveToFolder (in GEOM_Object theObject,
+                      in SALOMEDS::SObject theFolder);
+
+    /*!
+     * \brief Moves list of objects to the specified folder
+     *
+     * The moved objects should be first published in the study.
+     * \param theListOfGO list of GEOM objects to move
+     * \param theFolder target folder
+     */
+    void MoveListToFolder (in ListOfGO theListOfGO,
+                          in SALOMEDS::SObject theFolder);
+
+    /*!
+     * \brief Moves objects to the specified position
+     *
+     * This function is used in the drag-n-drop functionality.
+     *
+     * \param what objects being moved
+     * \param where parent object where objects are moved to
+     * \param row position in the parent object's children list at which objects are moved
+     */
+    void Move( in object_list what, 
+              in SALOMEDS::SObject where, 
+              in long row );
   };
 };