Salome HOME
NPAL16716. Compound: To create the groups of initial meshes.
[modules/smesh.git] / idl / SMESH_Gen.idl
index 390813d48a0292d1ec3eb4ef09a7fbcfd6f81ec5..362bea45a493255f74ce43b2814f4def7e9b5168 100644 (file)
@@ -15,7 +15,7 @@
 //  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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #include "SALOMEDS.idl"
 
 #include "GEOM_Gen.idl"
-#include "GEOM_Shape.idl"
 
 #include "SMESH_Mesh.idl"
 #include "SMESH_Hypothesis.idl"
 
 module SMESH
 {
-  typedef sequence<GEOM::GEOM_Shape> shape_array;
-  typedef sequence<SMESH_Mesh> mesh_array;
+  typedef sequence<GEOM::GEOM_Object> object_array;
+  typedef sequence<SMESH_Mesh>        mesh_array;
 
   interface FilterManager;
+  interface SMESH_Pattern;
+
+  /*!
+   * Tags definition
+   */
+  // Top level
+  const long Tag_HypothesisRoot = 1; // hypotheses root
+  const long Tag_AlgorithmsRoot = 2; // algorithms root
+  const long Tag_FirstMeshRoot  = 3; // first mesh root
+  // Mesh/Submesh
+  const long Tag_RefOnShape             = 1; // references to shape
+  const long Tag_RefOnAppliedHypothesis = 2; // applied hypotheses root
+  const long Tag_RefOnAppliedAlgorithms = 3; // applied algorithms root
+  // Mesh only: sub-meshes roots by type
+  const long Tag_FirstSubMesh           =  4;
+  const long Tag_SubMeshOnVertex        =  4;
+  const long Tag_SubMeshOnEdge          =  5;
+  const long Tag_SubMeshOnWire          =  6;
+  const long Tag_SubMeshOnFace          =  7;
+  const long Tag_SubMeshOnShell         =  8;
+  const long Tag_SubMeshOnSolid         =  9;
+  const long Tag_SubMeshOnCompound      = 10;
+  const long Tag_LastSubMesh            = 10;
+  // Mesh only: group roots by type
+  const long Tag_FirstGroup             = 11;
+  const long Tag_NodeGroups             = 11;
+  const long Tag_EdgeGroups             = 12;
+  const long Tag_FaceGroups             = 13;
+  const long Tag_VolumeGroups           = 14;
+  const long Tag_LastGroup              = 14;
+
+  /*!
+   * Hypothesis definintion error
+   */
+  struct AlgoStateError 
+  {
+    Hypothesis_Status  state;
+    string             algoName;
+    long               algoDim;
+    boolean            isGlobalAlgo;
+  };
+  typedef sequence<AlgoStateError> algo_error_array;
+
+  /*!
+   * Mesh computation error
+   */
+  enum ComputeErrorName
+  {
+    COMPERR_OK            ,
+    COMPERR_BAD_INPUT_MESH,  // wrong mesh on lower submesh
+    COMPERR_STD_EXCEPTION ,  // some std exception raised
+    COMPERR_OCC_EXCEPTION ,  // OCC exception raised
+    COMPERR_SLM_EXCEPTION ,  // SALOME exception raised
+    COMPERR_EXCEPTION     ,  // other exception raised
+    COMPERR_MEMORY_PB     ,  // memory allocation problem
+    COMPERR_ALGO_FAILED   ,  // computation failed
+    COMPERR_BAD_SHAPE        // bad geometry
+  };
+  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
+  };
+  typedef sequence<ComputeError> compute_error_array;
+
 
   interface SMESH_Gen : Engines::Component, SALOMEDS::Driver
   {
+    //GEOM::GEOM_Gen SetGeomEngine( in string containerLoc );
+    void SetGeomEngine( in GEOM::GEOM_Gen geomcompo );
 
     FilterManager CreateFilterManager();
 
+    SMESH_Pattern GetPattern();
+
+    /*!
+      Set the current mode
+     */
+    void SetEmbeddedMode( in boolean theMode );
+
+    /*!
+      Get the current mode
+     */
+    boolean IsEmbeddedMode();
+
     /*!
       Set the current study
      */
@@ -69,6 +149,19 @@ module SMESH
                                       in string theLibName )
       raises ( SALOME::SALOME_Exception );
 
+    /*!
+     * Return a hypothesis holding parameter values corresponding to the mesh
+     * existing on the given geometry.
+     * The returned hypothesis may be the one existing in a study and used
+     * to compute the mesh, or a temporary one created just to pass parameter
+     * values
+     */
+    SMESH_Hypothesis GetHypothesisParameterValues( in string            theHypName,
+                                                   in string            theLibName,
+                                                   in SMESH_Mesh        theMesh,
+                                                   in GEOM::GEOM_Object theGeom)
+      raises ( SALOME::SALOME_Exception );
+
     /*!
      * Create a Mesh object, given a geometry shape.
      * Mesh is created empty (no points, no elements).
@@ -76,9 +169,22 @@ module SMESH
      * of TopoDS_Shapes and bind CORBA references of shape & subshapes
      * with TopoDS_Shapes
      */
-    SMESH_Mesh CreateMesh( in GEOM::GEOM_Shape theShape )
+    SMESH_Mesh CreateMesh( in GEOM::GEOM_Object theObject )
+      raises ( SALOME::SALOME_Exception );
+    
+    /*!
+     * Create a 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)
+     */
+    SMESH_Mesh CreateMeshesFromUNV( in string theFileName )
+      raises ( SALOME::SALOME_Exception );
+
     /*!
      * Create Mesh object(s) importing data from given MED file
      */
@@ -86,6 +192,12 @@ module SMESH
                                     out SMESH::DriverMED_ReadStatus theStatus )
        raises ( SALOME::SALOME_Exception );
 
+    /*!
+     * Create Mesh object importing data from given STL file
+     */
+    SMESH_Mesh CreateMeshesFromSTL( in string theFileName )
+      raises ( SALOME::SALOME_Exception );
+
     /*!
      * Create a Mesh object, without a geometry shape reference
      */
@@ -97,32 +209,92 @@ module SMESH
      * First, verify list of hypothesis associated with the subShape,
      * return NOK if hypothesis are not sufficient
      */
-    boolean Compute( in SMESH_Mesh       theMesh, 
-                    in GEOM::GEOM_Shape theSubShape )
+    boolean Compute( in SMESH_Mesh        theMesh, 
+                    in GEOM::GEOM_Object theSubObject )
       raises ( SALOME::SALOME_Exception );
 
     /*!
-     * 
+     * Return true if hypotheses are defined well
      */
+    boolean IsReadyToCompute( in SMESH_Mesh        theMesh, 
+                             in GEOM::GEOM_Object theSubObject )
+      raises ( SALOME::SALOME_Exception );
 
-    boolean IsReadyToCompute( in SMESH_Mesh       theMesh, 
-                             in GEOM::GEOM_Shape theSubShape )
+    /*!
+     * Return errors of hypotheses definintion
+     * algo_error_array is empty if everything is OK
+     */
+    algo_error_array GetAlgoState( in SMESH_Mesh        theMesh, 
+                                   in GEOM::GEOM_Object theSubObject )
       raises ( SALOME::SALOME_Exception );
 
     /*!
-     * 
+     * Return errors of mesh computation
+     * compute_error_array is empty if everything is OK
      */
-    long_array GetSubShapesId( in GEOM::GEOM_Shape theMainShape,
-                              in shape_array      theListOfSubShape )
+    compute_error_array GetComputeErrors( in SMESH_Mesh        theMesh, 
+                                          in GEOM::GEOM_Object theSubObject )
+      raises ( SALOME::SALOME_Exception );
+
+    /*!
+     * Return indeces of faces, edges and vertices of given subshapes
+     * within theMainObject
+     */
+    long_array GetSubShapesId( in GEOM::GEOM_Object theMainObject,
+                               in object_array      theListOfSubObjects )
        raises ( SALOME::SALOME_Exception );
-    
+
     /*!
-     * 
+     * Return geometrical object the given element is built on.
+     * The returned geometrical object, if not nil, is either found in the 
+     * study or is published by this method with the given name
      */
-    //    long_array GetSubMeshesState( in shape_array theListOfSubShape )
-    //  raises ( SALOME::SALOME_Exception );
-    
+    GEOM::GEOM_Object GetGeometryByMeshElement( in SMESH_Mesh  theMesh,
+                                                in long        theElementID,
+                                                in string      theGeomName)
+      raises ( SALOME::SALOME_Exception );
 
+    /*!
+     * Return geometrical object the given element is built on.
+     * The returned geometrical object not published in study by this method.
+     */
+    GEOM::GEOM_Object FindGeometryByMeshElement( in SMESH_Mesh  theMesh,
+                                                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.
+     */
+    SMESH_Mesh Concatenate(in mesh_array theMeshesArray, 
+                          in boolean    theUniteIdenticalGroups, 
+                          in boolean    theMergeNodesAndElements, 
+                          in double     theMergeTolerance)
+      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.
+     * Create the groups of all elements from initial meshes.
+     */
+    SMESH_Mesh ConcatenateWithGroups(in mesh_array theMeshesArray, 
+                                    in boolean    theUniteIdenticalGroups, 
+                                     in boolean    theMergeNodesAndElements, 
+                                     in double     theMergeTolerance)
+      raises ( SALOME::SALOME_Exception );
+
+    /*!
+     * \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.
+     */
+    long GetObjectId(in Object theObject);
   };
 
 };