Salome HOME
Fix regressions caused by improvements
[modules/smesh.git] / idl / SMESH_Gen.idl
index 7cc93177b00784f00da161877c512d8c8a46051a..ec43ae7146def2c40e68c18b07bde5386984ce71 100644 (file)
@@ -1,23 +1,23 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  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
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
 //
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// 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
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SMESH_Gen.idl
 //  Author : Paul RASCLE, EDF
 
 module SMESH
 {
+  typedef sequence<SALOMEDS::SObject> sobject_list;
   typedef sequence<GEOM::GEOM_Object> object_array;
   typedef sequence<SMESH_Mesh>        mesh_array;
 
   interface FilterManager;
   interface SMESH_Pattern;
+  interface Measurements;
 
   /*!
    * Tags definition
@@ -69,12 +71,14 @@ module SMESH
   const long Tag_EdgeGroups             = 12;
   const long Tag_FaceGroups             = 13;
   const long Tag_VolumeGroups           = 14;
-  const long Tag_LastGroup              = 14;
+  const long Tag_0DElementsGroups       = 15;
+  const long Tag_BallElementsGroups     = 16;
+  const long Tag_LastGroup              = 16;
 
   /*!
    * Hypothesis definintion error
    */
-  struct AlgoStateError 
+  struct AlgoStateError
   {
     Hypothesis_Status  state;
     string             algoName;
@@ -96,20 +100,24 @@ module SMESH
     COMPERR_EXCEPTION     ,  // other exception raised
     COMPERR_MEMORY_PB     ,  // memory allocation problem
     COMPERR_ALGO_FAILED   ,  // computation failed
-    COMPERR_BAD_SHAPE        // bad geometry
+    COMPERR_BAD_SHAPE     ,  // bad geometry
+    COMPERR_WARNING       ,  // algo reports error but sub-mesh is computed anyway
+    COMPERR_CANCELED      ,  // compute canceled
+    COMPERR_NO_MESH_ON_SHAPE,// no mesh elements assigned to sub-mesh
+    COMPERR_BAD_PARMETERS    // incorrect hypotheses parameters
   };
   struct ComputeError
   {
     short   code;       // ComputeErrorName or, if negative, algo specific code
     string  comment;    // textual problem description
     string  algoName;
-    short   subShapeID; // id of subshape of a shape to mesh
+    short   subShapeID; // id of sub-shape of a shape to mesh
     boolean hasBadMesh; // there are elements preventing computation available for visualization
   };
   typedef sequence<ComputeError> compute_error_array;
 
 
-  interface SMESH_Gen : Engines::Component, SALOMEDS::Driver
+  interface SMESH_Gen : Engines::EngineComponent, SALOMEDS::Driver
   {
     //GEOM::GEOM_Gen SetGeomEngine( in string containerLoc );
     void SetGeomEngine( in GEOM::GEOM_Gen geomcompo );
@@ -118,6 +126,8 @@ module SMESH
 
     SMESH_Pattern GetPattern();
 
+    Measurements  CreateMeasurements();
+
     /*!
       Set the current mode
      */
@@ -146,7 +156,7 @@ module SMESH
      * Algorithms are 1D, 2D or 3D.
      */
     SMESH_Hypothesis CreateHypothesis( in string theHypName,
-                                      in string theLibName )
+                                       in string theLibName )
       raises ( SALOME::SALOME_Exception );
 
     /*!
@@ -163,6 +173,17 @@ module SMESH
                                                    in boolean           byMesh)
       raises ( SALOME::SALOME_Exception );
 
+    /*!
+     * Returns \c True if a hypothesis is assigned to a sole sub-mesh in a current Study
+     *  \param [in] theHyp - the hypothesis of interest
+     *  \param [out] theMesh - the sole mesh using \a theHyp
+     *  \param [out] theShape - the sole geometry \a theHyp is assigned to
+     *  \return boolean - \c True if \a theMesh and \a theShape are sole using \a theHyp
+     */
+    boolean GetSoleSubMeshUsingHyp( in SMESH_Hypothesis   theHyp,
+                                    out SMESH_Mesh        theMesh,
+                                    out GEOM::GEOM_Object theShape);
+
     /*!
      * Sets number of segments per diagonal of boundary box of geometry by which
      * default segment length of appropriate 1D hypotheses is defined
@@ -177,7 +198,7 @@ module SMESH
      * Set the object name
      */
     void SetName( in string theObjectIOR,
-                 in string theObjectName )
+                  in string theObjectName )
       raises ( SALOME::SALOME_Exception );
 
     /*!
@@ -189,13 +210,13 @@ module SMESH
      */
     SMESH_Mesh CreateMesh( in GEOM::GEOM_Object theObject )
       raises ( SALOME::SALOME_Exception );
-    
+
     /*!
      * Create an empty mesh object
      */
     SMESH_Mesh CreateEmptyMesh()
       raises ( SALOME::SALOME_Exception );
-    
+
     /*!
      * Create Mesh object importing data from given UNV file
      * (UNV supported version is I-DEAS 10)
@@ -207,7 +228,14 @@ module SMESH
      * Create Mesh object(s) importing data from given MED file
      */
      mesh_array CreateMeshesFromMED( in string theFileName,
-                                    out SMESH::DriverMED_ReadStatus theStatus )
+                                     out SMESH::DriverMED_ReadStatus theStatus )
+       raises ( SALOME::SALOME_Exception );
+
+    /*!
+     * Create Mesh object(s) importing data from given MED file
+     */
+     mesh_array CreateMeshesFromSAUV( in string theFileName,
+                                     out SMESH::DriverMED_ReadStatus theStatus )
        raises ( SALOME::SALOME_Exception );
 
     /*!
@@ -217,43 +245,108 @@ module SMESH
       raises ( SALOME::SALOME_Exception );
 
     /*!
-     * Create a Mesh object, without a geometry shape reference
+     * Create Mesh object(s) importing data from given CGNS file
+     */
+    mesh_array CreateMeshesFromCGNS( in string theFileName,
+                                     out SMESH::DriverMED_ReadStatus theStatus )
+      raises ( SALOME::SALOME_Exception );
+
+    /*!
+     * Create Mesh object importing data from given GMF file
+     *  \param theFileName - a name of file to import
+     *  \param theMakeRequiredGroups - if true, groups of required entities will be created
+     */
+    SMESH_Mesh CreateMeshesFromGMF( in string               theFileName,
+                                    in boolean              theMakeRequiredGroups,
+                                    out SMESH::ComputeError theError)
+      raises ( SALOME::SALOME_Exception );
+
+    /*!
+     * Create a mesh by copying a part of another mesh
+     *  \param meshPart - a part of mesh to copy
+     *  \param meshName - a name of the new mesh
+     *  \param toCopyGroups - to create in the new mesh groups
+     *                        the copied elements belongs to
+     *  \param toKeepIDs - to preserve IDs of the copied elements or not
+     */
+    SMESH_Mesh CopyMesh(in SMESH_IDSource meshPart,
+                        in string         meshName,
+                        in boolean        toCopyGroups,
+                        in boolean        toKeepIDs)
+      raises ( SALOME::SALOME_Exception );
+
+    /*!
+     * Concatenate the given meshes or groups into one mesh.
+     * Union groups with the same name and type if
+     * theUniteIdenticalGroups flag is true.
+     * Merge coincident nodes and elements if
+     * theMergeNodesAndElements flag is true.
      */
-//      SMESH_Mesh NewEmpty()
-//        raises ( SALOME::SALOME_Exception );
+    SMESH_Mesh Concatenate(in ListOfIDSources theMeshesArray,
+                           in boolean         theUniteIdenticalGroups,
+                           in boolean         theMergeNodesAndElements,
+                           in double          theMergeTolerance)
+      raises ( SALOME::SALOME_Exception );
 
     /*!
-     * Mesh a subShape. 
-     * First, verify list of hypothesis associated with the subShape,
+     * Concatenate the given meshes into one mesh.
+     * Union groups with the same name and type if
+     * theUniteIdenticalGroups flag is true.
+     * Merge coincident nodes and elements if
+     * theMergeNodesAndElements flag is true.
+     * Create the groups of all elements from initial meshes.
+     */
+    SMESH_Mesh ConcatenateWithGroups(in ListOfIDSources theMeshesArray,
+                                     in boolean         theUniteIdenticalGroups,
+                                     in boolean         theMergeNodesAndElements,
+                                     in double          theMergeTolerance)
+      raises ( SALOME::SALOME_Exception );
+
+    /*!
+     * Mesh a subShape.
+     * First, verify list of hypothesis associated with the Sub-shape,
      * return NOK if hypothesis are not sufficient
      */
-    boolean Compute( in SMESH_Mesh        theMesh, 
-                    in GEOM::GEOM_Object theSubObject )
+    boolean Compute( in SMESH_Mesh        theMesh,
+                     in GEOM::GEOM_Object theSubObject )
       raises ( SALOME::SALOME_Exception );
 
+    /*!
+     * Cancel a computation.
+     */
+    void CancelCompute( in SMESH_Mesh        theMesh,
+                       in GEOM::GEOM_Object theSubObject );
+
     /*!
      * Return true if hypotheses are defined well
      */
-    boolean IsReadyToCompute( in SMESH_Mesh        theMesh, 
-                             in GEOM::GEOM_Object theSubObject )
+    boolean IsReadyToCompute( in SMESH_Mesh        theMesh,
+                              in GEOM::GEOM_Object theSubObject )
+      raises ( SALOME::SALOME_Exception );
+
+    /*!
+     * Evaluates size of prospective mesh on a shape
+     */
+    long_array  Evaluate(in SMESH_Mesh        theMesh,
+                         in GEOM::GEOM_Object theSubObject)
       raises ( SALOME::SALOME_Exception );
 
     /*!
      * Calculate Mesh as preview till indicated dimension
-     * First, verify list of hypothesis associated with the subShape.
+     * First, verify list of hypothesis associated with the Sub-shape.
      * Return mesh preview structure
      */
-    MeshPreviewStruct Precompute( in SMESH_Mesh        theMesh, 
-                                 in GEOM::GEOM_Object theSubObject,
-                                 in Dimension         theDimension,
-                                 inout long_array    theShapesId )
+    MeshPreviewStruct Precompute( in SMESH_Mesh        theMesh,
+                                  in GEOM::GEOM_Object theSubObject,
+                                  in Dimension         theDimension,
+                                  inout long_array    theShapesId )
       raises ( SALOME::SALOME_Exception );
 
     /*!
      * Return errors of hypotheses definintion
      * algo_error_array is empty if everything is OK
      */
-    algo_error_array GetAlgoState( in SMESH_Mesh        theMesh, 
+    algo_error_array GetAlgoState( in SMESH_Mesh        theMesh,
                                    in GEOM::GEOM_Object theSubObject )
       raises ( SALOME::SALOME_Exception );
 
@@ -261,19 +354,27 @@ module SMESH
      * Return errors of mesh computation
      * compute_error_array is empty if everything is OK
      */
-    compute_error_array GetComputeErrors( in SMESH_Mesh        theMesh, 
+    compute_error_array GetComputeErrors( in SMESH_Mesh        theMesh,
                                           in GEOM::GEOM_Object theSubObject )
       raises ( SALOME::SALOME_Exception );
 
     /*!
-     * Return mesh elements preventing computation of a subshape
+     * Return mesh elements preventing computation of a sub-shape
      */
     MeshPreviewStruct GetBadInputElements( in SMESH_Mesh theMesh,
                                            in short      theSubShapeID )
       raises ( SALOME::SALOME_Exception );
 
     /*!
-     * Return indeces of faces, edges and vertices of given subshapes
+     * Create groups of elements preventing computation of a sub-shape
+     */
+    SMESH::ListOfGroups MakeGroupsOfBadInputElements( in SMESH_Mesh theMesh,
+                                                      in short      theSubShapeID,
+                                                      in string     theGroupName)
+      raises ( SALOME::SALOME_Exception );
+
+    /*!
+     * Return indices of faces, edges and vertices of given sub-shapes
      * within theMainObject
      */
     long_array GetSubShapesId( in GEOM::GEOM_Object theMainObject,
@@ -282,7 +383,7 @@ module SMESH
 
     /*!
      * Return geometrical object the given element is built on.
-     * The returned geometrical object, if not nil, is either found in the 
+     * The returned geometrical object, if not nil, is either found in the
      * study or is published by this method with the given name
      */
     GEOM::GEOM_Object GetGeometryByMeshElement( in SMESH_Mesh  theMesh,
@@ -295,42 +396,122 @@ module SMESH
      * The returned geometrical object not published in study by this method.
      */
     GEOM::GEOM_Object FindGeometryByMeshElement( in SMESH_Mesh  theMesh,
-                                                in long        theElementID)
+                                                 in long        theElementID)
       raises ( SALOME::SALOME_Exception );
 
     /*!
-     * Concatenate the given meshes into one mesh.
-     * Union groups with the same name and type if
-     * theUniteIdenticalGroups flag is true.
-     * Merge coincident nodes and elements if 
-     * theMergeNodesAndElements flag is true.
+     * \brief Return id of object, registered in current study context
+     *
+     * Can be used to check if the object was created in the same container, as this engine.
      */
-    SMESH_Mesh Concatenate(in mesh_array theMeshesArray, 
-                          in boolean    theUniteIdenticalGroups, 
-                          in boolean    theMergeNodesAndElements, 
-                          in double     theMergeTolerance)
-      raises ( SALOME::SALOME_Exception );
+    long GetObjectId(in Object theObject);
 
     /*!
-     * Concatenate the given meshes into one mesh.
-     * Union groups with the same name and type if
-     * theUniteIdenticalGroups flag is true.
-     * Merge coincident nodes and elements if 
-     * theMergeNodesAndElements flag is true.
-     * Create the groups of all elements from initial meshes.
+     * \brief Get MED version of the file by its name.
      */
-    SMESH_Mesh ConcatenateWithGroups(in mesh_array theMeshesArray, 
-                                    in boolean    theUniteIdenticalGroups, 
-                                     in boolean    theMergeNodesAndElements, 
-                                     in double     theMergeTolerance)
-      raises ( SALOME::SALOME_Exception );
+    boolean GetMEDVersion(in string theFileName, out MED_VERSION theVersion);
 
     /*!
-     * \brief Return id of object, registered in current study context
+     * \brief Get names of meshes defined in file with the specified name.
+     */
+    string_array GetMeshNames(in string theFileName);
+
+    /*!
+     * \brief Moves objects to the specified position
+     *  \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
      *
-     * Can be used to check if the object was created in the same container, as this engine.
+     * This function is used in the drag-n-drop functionality.
      */
-    long GetObjectId(in Object theObject);
+    void Move( in sobject_list what,
+              in SALOMEDS::SObject where,
+              in long row );
+    /*!
+     * Returns true if algorithm can be used to mesh a given geometry
+     *  \param theAlgoType - the algorithm type
+     *  \param theLibName - a name of the Plug-in library implementing the algorithm
+     *  \param theShapeObject - the geometry to mesh
+     *  \param toCheckAll - if \c True, returns \c True if all shapes are meshable,
+     *         else, returns \c True if at least one shape is meshable
+     */
+    boolean IsApplicable( in string             theAlgoType,
+                          in string             theLibName,
+                          in GEOM::GEOM_Object  theShapeObject,
+                          in boolean            toCheckAll );
+
+
+    /*!
+     * Return indices of elements, which are located inside the sphere
+     *  \param theSource - mesh, sub-mesh or group
+     *  \param theElemType - mesh element type
+     *  \param theX - x cooridate of the center of the sphere
+     *  \param theY - y cooridate of the center of the sphere
+     *  \param theZ - y cooridate of the center of the sphere
+     *  \param theR - radius of the sphere
+     */
+    long_array GetInsideSphere( in SMESH_IDSource theSource,
+                               in ElementType    theElemType,
+                               in double theX, 
+                               in double theY, 
+                               in double theZ,
+                               in double theR );    
+
+    /*!
+     * Return indices of elements, which are located inside the box
+     *  \param theSource - mesh, sub-mesh or group
+     *  \param theElemType - mesh element type
+     *  \param theX1 - x cooridate of the first opposite point
+     *  \param theY1 - y cooridate of the first opposite point
+     *  \param theZ1 - y cooridate of the first opposite point
+     *  \param theX2 - x cooridate of the second opposite point
+     *  \param theY2 - y cooridate of the second opposite point
+     *  \param theZ2 - y cooridate of the second opposite point
+     */
+    long_array GetInsideBox( in SMESH_IDSource theSource,
+                            in ElementType    theElemType,
+                            in double theX1, 
+                            in double theY1, 
+                            in double theZ1,
+                            in double theX2,
+                            in double theY2,
+                            in double theZ2);    
+    /*!
+     * Return indices of elements, which are located inside the box
+     *  \param theSource - mesh, sub-mesh or group
+     *  \param theElemType - mesh element type
+     *  \param theX - x cooridate of the cented of the bottom face
+     *  \param theY - y cooridate of the cented of the bottom face
+     *  \param theZ - y cooridate of the cented of the bottom face
+     *  \param theDX - x cooridate of the cented of the base vector
+     *  \param theDY - y cooridate of the cented of the base vector
+     *  \param theDZ - z cooridate of the cented of the base vector
+     *  \param theH - height of the cylinder
+     *  \param theR - radius of the cylinder
+     */
+    long_array GetInsideCylinder( in SMESH_IDSource theSource,
+                                 in ElementType    theElemType,
+                                 in double theX, 
+                                 in double theY, 
+                                 in double theZ,
+                                 in double theDX,
+                                 in double theDY,
+                                 in double theDZ,
+                                 in double theH,
+                                 in double theR );    
+    /*!
+     * Return indices of elements, which are located inside the geometry
+     *  \param theSource - mesh, sub-mesh or group
+     *  \param theElemType - mesh element type
+     *  \param theGeom - geometrical object
+     *  \param theTolerance - tolerance for selection.
+     */
+    long_array GetInside( in SMESH_IDSource theSource,
+                         in ElementType    theElemType,
+                         in GEOM::GEOM_Object theGeom,
+                         in double theTolerance );    
+
+
   };
 
 };