Salome HOME
22316: EDF 2719 SMESH: Split hexas into prisms
[modules/smesh.git] / idl / SMESH_Mesh.idl
index 409bb4e6ec4ac3ded80a66a86a00e08a1152545f..92a3cd3b828d1f0d224dd0fb189399d3fab39a6b 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
@@ -29,7 +29,6 @@
 #include "SALOME_Exception.idl"
 #include "SALOME_GenericObj.idl"
 #include "GEOM_Gen.idl"
-#include "MED.idl"
 
 module SMESH
 {
@@ -72,6 +71,7 @@ module SMESH
       ADD_QUADPENTAHEDRON,
       ADD_QUADHEXAHEDRON,
       ADD_ELEM0D,
+      ADD_BIQUAD_TRIANGLE,
       ADD_BIQUAD_QUADRANGLE,
       ADD_TRIQUAD_HEXA,
       ADD_HEXAGONAL_PRISM,
@@ -85,6 +85,7 @@ module SMESH
     double_array coords;
     long_array indexes;
   };
+  typedef sequence<log_block> log_array;
 
   struct PointStruct { double x;
                       double y;
@@ -92,7 +93,7 @@ module SMESH
 
   typedef sequence<PointStruct> nodes_array;
 
-  struct DirStruct   { PointStruct PS ; } ;          // analog to Occ Direction
+  struct DirStruct   { PointStruct PS ; } ;          // analog to OCCT gp_Vec
 
   struct AxisStruct  { double x;
                       double y;
@@ -100,7 +101,6 @@ module SMESH
                       double vx;
                       double vy;
                       double vz; } ;
-
   /*!
    * Node location on a shape
    */
@@ -110,6 +110,14 @@ module SMESH
     double_array     params; // [U] on EDGE, [U,V] on FACE, [] on the rest shapes
   };
 
+  /*!
+   * Element location on a shape
+   */
+  struct ElementPosition {
+    long             shapeID;
+    GEOM::shape_type shapeType;
+  };
+
   /*!
    * Enumeration for element type, like in SMDS
    */
@@ -121,12 +129,13 @@ module SMESH
     FACE,
     VOLUME,
     ELEM0D,
-    BALL
+    BALL,
+    NB_ELEMENT_TYPES
   };
   typedef sequence<ElementType> array_of_ElementType ;
 
   /*!
-   * Enumeration for element geometry type, like in SMDS
+   * Enumeration for element geometry type, like SMDSAbs_GeometryType in SMDSAbs_ElementType.hxx
    */
   enum GeometryType
   {
@@ -153,7 +162,6 @@ module SMESH
     ORDER_QUADRATIC     /*! entities of 2nd order */
   };
 
-
   /*!
    * Enumeration of entity type used in mesh info array,
    * it should be synchronised with enum SMDSAbs_EntityType
@@ -166,6 +174,7 @@ module SMESH
     Entity_Quad_Edge,
     Entity_Triangle,
     Entity_Quad_Triangle,
+    Entity_BiQuad_Triangle,
     Entity_Quadrangle,
     Entity_Quad_Quadrangle,
     Entity_BiQuad_Quadrangle,
@@ -187,7 +196,6 @@ module SMESH
     Entity_Last
   };
 
-
   /*!
    * Enumeration for hypothesis status (used by AddHypothesis() and RemoveHypothesis() methods)
    */
@@ -211,29 +219,37 @@ module SMESH
   };
 
   /*!
-   * Enumeration for DriverMED read status (used by ImportMEDFile() method)
+   * Enumeration for mesh read status (used by SMESH_Gen::CreateMeshesFrom*() methods)
    */
   enum DriverMED_ReadStatus // in the order of severity
   {
     DRS_OK,
-    DRS_EMPTY,          // a MED file contains no mesh with the given name
+    DRS_EMPTY,          // a file contains no mesh with the given name
     DRS_WARN_RENUMBER,  // a MED file has overlapped ranges of element numbers,
                         // so the numbers from the file are ignored
     DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data
+    DRS_WARN_DESCENDING, // some elements were skipped due to descending connectivity
     DRS_FAIL            // general failure (exception etc.)
   };
 
   /*!
-   * Enumeration for DriverMED (used by Perform() method)
+   * Enumeration for ExportToMED*()
    */
-  enum MED_VERSION // in the order of severity
+  enum MED_VERSION
   {
     MED_V2_1,
     MED_V2_2
   };
 
-  typedef sequence<log_block> log_array;
-
+  /*! 
+   * \brief A structure containing information about MED file
+   */
+  struct MedFileInfo
+  {
+    string fileName; //!< name of file
+    long   fileSize; //!< size of file
+    long   major, minor, release; //!< MED file version
+  };
 
   /*!
    * Auxilary flags for advanced extrusion.
@@ -261,7 +277,7 @@ module SMESH
 
   interface SMESH_Mesh;
 
-  interface SMESH_IDSource
+  interface SMESH_IDSource : SALOME::GenericObj
   {
     /*!
      * Returns a sequence of all element IDs
@@ -269,11 +285,17 @@ module SMESH
     long_array GetIDs();
 
     /*!
-     * Returns statistic of mesh elements
-     * @return array of number enityties by index of EntityType
+     * Returns number of mesh elements of each \a EntityType
+     * @return array of number of elements per \a EntityType
      */
     long_array GetMeshInfo();
 
+    /*!
+     * Returns number of mesh elements of each \a ElementType
+     * @return array of number of elements per \a ElementType
+     */
+    long_array GetNbElementsByType();
+
     /*!
      * Returns types of elements it contains.
      * It's empty if the SMESH_IDSource contains no IDs
@@ -505,8 +527,6 @@ module SMESH
     Hypothesis_Status AddHypothesis(in GEOM::GEOM_Object aSubObject,
                                    in SMESH_Hypothesis anHyp)
       raises (SALOME::SALOME_Exception);
-//     boolean AddHypothesis(in SMESH_subMesh aSubMesh, in SMESH_Hypothesis anHyp)
-//       raises (SALOME::SALOME_Exception);
 
     /*!
      * Remove an hypothesis previouly added with AddHypothesis.
@@ -514,17 +534,12 @@ module SMESH
     Hypothesis_Status RemoveHypothesis(in GEOM::GEOM_Object aSubObject,
                                       in SMESH_Hypothesis anHyp)
       raises (SALOME::SALOME_Exception);
-//     boolean RemoveHypothesis(in SMESH_subMesh aSubMesh,
-//                          in SMESH_Hypothesis anHyp)
-//       raises (SALOME::SALOME_Exception);
 
     /*!
      * Get the list of hypothesis added on a sub-shape
      */
     ListOfHypothesis GetHypothesisList(in GEOM::GEOM_Object aSubObject)
       raises (SALOME::SALOME_Exception);
-//     ListOfHypothesis GetHypothesisList(in SMESH_subMesh aSubMesh)
-//       raises (SALOME::SALOME_Exception);
 
     /*!
      * Get the log of nodes and elements added or removed since previous
@@ -532,8 +547,6 @@ module SMESH
      * @params
      * - clearAfterGet : log is emptied after Get (safe if concurrents access)
      */
-    //    string_array GetLog(in boolean clearAfterGet)
-    //      raises (SALOME::SALOME_Exception);
     log_array GetLog(in boolean clearAfterGet)
       raises (SALOME::SALOME_Exception);
 
@@ -594,19 +607,26 @@ module SMESH
     boolean HasDuplicatedGroupNamesMED();
 
     /*!
-     * Export Mesh to different MED Formats
+     * Export Mesh to a MED Format file
      * @params
      * - file : name of the MED file
      * - auto_groups : boolean parameter for creating/not creating
-     *   the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
-     *   the typical use is auto_groups=false.
+     *                 the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
+     *                 the typical use is auto_groups=false.
      * - version : define the version of format of MED file, that will be created
      * - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists
+     * - autoDimension: if @c True (default), a space dimension of a MED mesh can be either
+     *         - 1D if all mesh nodes lie on OX coordinate axis, or
+     *         - 2D if all mesh nodes lie on XOY coordinate plane, or
+     *         - 3D in the rest cases.
+     *
+     *         If @a autoDimension is @c False, the space dimension is always 3.
      */
     void ExportToMEDX( in string      file, 
                        in boolean     auto_groups, 
                        in MED_VERSION version, 
-                       in boolean     overwrite ) raises (SALOME::SALOME_Exception);
+                       in boolean     overwrite,
+                       in boolean     autoDimension ) raises (SALOME::SALOME_Exception);
 
     /*!
      * Export a part of Mesh into a MED file
@@ -615,15 +635,20 @@ module SMESH
      * - file : name of the MED file
      * - version : define the version of format of MED file, that will be created
      * - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists
+     * - autoDimension: if @c True, a space dimension for export is defined by mesh 
+     *                 configuration; for example a planar mesh lying on XOY plane
+     *                 will be exported as a mesh in 2D space. 
+     *                 If @a autoDimension == @c False, the space dimension is 3.
      */
     void ExportPartToMED( in SMESH_IDSource meshPart, 
                           in string         file, 
                           in boolean        auto_groups,
                           in MED_VERSION    version,
-                          in boolean        overwrite ) raises (SALOME::SALOME_Exception);
+                          in boolean        overwrite,
+                          in boolean        autoDimension ) raises (SALOME::SALOME_Exception);
 
     /*!
-     * Export Mesh to different MED Formats
+     * Export Mesh to a MED Format file
      * Works, just the same as ExportToMEDX, with overwrite parameter equal to true.
      * The method is kept in order to support old functionality
      */
@@ -652,7 +677,7 @@ module SMESH
     string GetVersionString(in MED_VERSION version, in short nbDigits);
 
     /*!
-     * Export Mesh to DAT, UNV and STL Formats
+     * Export Mesh to different Formats
      * (UNV supported version is I-DEAS 10)
      */
     void ExportDAT( in string file ) raises (SALOME::SALOME_Exception);
@@ -662,6 +687,9 @@ module SMESH
     void ExportCGNS( in SMESH_IDSource meshPart, 
                      in string         file,
                      in boolean        overwrite ) raises (SALOME::SALOME_Exception);
+    void ExportGMF( in SMESH_IDSource  meshPart, 
+                    in string          file,
+                    in boolean         withRequiredGroups) raises (SALOME::SALOME_Exception);
     void ExportPartToDAT( in SMESH_IDSource meshPart, 
                           in string         file ) raises (SALOME::SALOME_Exception);
     void ExportPartToUNV( in SMESH_IDSource meshPart, 
@@ -669,12 +697,10 @@ module SMESH
     void ExportPartToSTL( in SMESH_IDSource meshPart,
                           in string         file,
                           in boolean        isascii ) raises (SALOME::SALOME_Exception);
-
     /*!
-     * Get MED Mesh
+     * Return computation progress [0.,1]
      */
-    SALOME_MED::MESH GetMEDMesh()
-      raises (SALOME::SALOME_Exception);
+    double GetComputeProgress();
 
     /*!
      * Get informations about mesh contents
@@ -709,6 +735,9 @@ module SMESH
     long NbTrianglesOfOrder(in ElementOrder order)
       raises (SALOME::SALOME_Exception);
 
+    long NbBiQuadTriangles()
+      raises (SALOME::SALOME_Exception);
+
     long NbQuadrangles()
       raises (SALOME::SALOME_Exception);
 
@@ -781,6 +810,9 @@ module SMESH
     EntityType GetElementGeomType( in long id )
       raises (SALOME::SALOME_Exception);
 
+    GeometryType GetElementShape( in long id )
+      raises (SALOME::SALOME_Exception);
+
     long_array GetSubMeshElementsId(in long ShapeID)
       raises (SALOME::SALOME_Exception);
 
@@ -833,6 +865,11 @@ module SMESH
      */
     NodePosition GetNodePosition(in long NodeID);
 
+    /*!
+     * \brief Return position of an element on shape
+     */
+    ElementPosition GetElementPosition(in long ElemID);
+
     /*!
      * If given element is node returns IDs of shape from position
      * If there is not node for given ID - returns -1
@@ -891,6 +928,11 @@ module SMESH
      */
     long_array GetElemFaceNodes(in long elemId, in short faceIndex);
 
+    /*!
+     * Returns three components of normal of given mesh face (or an empty array in KO case)
+     */
+    double_array GetFaceNormal(in long faceId);
+
     /*!
      * Returns an element based on all given nodes.
      */
@@ -919,7 +961,7 @@ module SMESH
     double_array BaryCenter(in long id);
 
     /*! Gets information about imported MED file */
-    SALOME_MED::MedFileInfo GetMEDFileInfo();
+    MedFileInfo GetMEDFileInfo();
 
     /*!
      *  Sets list of notebook variables used for Mesh operations separated by ":" symbol
@@ -992,12 +1034,6 @@ module SMESH
      * Get the internal Id
      */
     long GetId();
-
-    /*!
-     * Get MED subMesh
-     */
-    SALOME_MED::FAMILY GetFamily()
-      raises (SALOME::SALOME_Exception);
   };
 
 };