Salome HOME
021382: EDF 1985 SMESH: Read/write of .mesh files (GMF format)
[modules/smesh.git] / idl / SMESH_Mesh.idl
index 4b710727b619a216bc86378b3475b611c82d50d5..b8d2b5e63e3a822a72ad65543e9c67d750fb999d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012  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
@@ -71,7 +71,11 @@ module SMESH
       ADD_QUADPYRAMID,
       ADD_QUADPENTAHEDRON,
       ADD_QUADHEXAHEDRON,
-      ADD_ELEM0D
+      ADD_ELEM0D,
+      ADD_BIQUAD_QUADRANGLE,
+      ADD_TRIQUAD_HEXA,
+      ADD_HEXAGONAL_PRISM,
+      ADD_BALL
     };
 
   struct log_block
@@ -116,7 +120,8 @@ module SMESH
     EDGE,
     FACE,
     VOLUME,
-    ELEM0D
+    ELEM0D,
+    BALL
   };
   typedef sequence<ElementType> array_of_ElementType ;
 
@@ -128,13 +133,15 @@ module SMESH
     Geom_POINT,
     Geom_EDGE,
     Geom_TRIANGLE,
-    Geom_QUADRANGLE,
-    Geom_POLYGON,
+    Geom_QUADRANGLE, // when a new GeometryType is added, please
+    Geom_POLYGON,    // update a corresponding list in SMESH_2smeshpy.cxx, ln 665
     Geom_TETRA,
     Geom_PYRAMID,
     Geom_HEXA,
     Geom_PENTA,
-    Geom_POLYHEDRA
+    Geom_HEXAGONAL_PRISM,
+    Geom_POLYHEDRA,
+    Geom_BALL
   };
   
   /*!
@@ -161,6 +168,7 @@ module SMESH
     Entity_Quad_Triangle,
     Entity_Quadrangle,
     Entity_Quad_Quadrangle,
+    Entity_BiQuad_Quadrangle,
     Entity_Polygon,
     Entity_Quad_Polygon,
     Entity_Tetra,
@@ -169,10 +177,13 @@ module SMESH
     Entity_Quad_Pyramid,
     Entity_Hexa,
     Entity_Quad_Hexa,
+    Entity_TriQuad_Hexa,
     Entity_Penta,
     Entity_Quad_Penta,
+    Entity_Hexagonal_Prism,
     Entity_Polyhedra,
     Entity_Quad_Polyhedra,
+    Entity_Ball,
     Entity_Last
   };
 
@@ -194,7 +205,7 @@ module SMESH
     HYP_NOTCONFORM,   // not conform mesh is produced appling a hypothesis
     HYP_ALREADY_EXIST,// such hypothesis already exist
     HYP_BAD_DIM,      // bad dimension
-    HYP_BAD_SUBSHAPE, // shape is neither the main one, nor its subshape, nor a group
+    HYP_BAD_SUBSHAPE, // shape is neither the main one, nor its sub-shape, nor a group
     HYP_BAD_GEOMETRY, // geometry mismatches algorithm's expectation
     HYP_NEED_SHAPE    // algorithm can work on shape only
   };
@@ -273,6 +284,12 @@ module SMESH
      * Returns the mesh
      */
     SMESH_Mesh GetMesh();
+
+    /*!
+     * Returns false if GetMeshInfo() returns incorrect information that may
+     * happen if mesh data is not yet fully loaded from the file of study.
+     */
+    boolean IsMeshInfoCorrect();
   };
 
   interface SMESH_Group;
@@ -300,12 +317,30 @@ module SMESH
     GEOM::GEOM_Object GetShapeToMesh()
       raises (SALOME::SALOME_Exception);
 
+    /*!
+     * Return false if the mesh is not yet fully loaded from the study file
+     */
+    boolean IsLoaded()
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+     * Load full mesh data from the study file
+     */
+    void Load()
+      raises (SALOME::SALOME_Exception);
+
     /*!
      * Remove all nodes and elements
      */
     void Clear()
       raises (SALOME::SALOME_Exception);
 
+    /*!
+     *  Get the list of sub-meshes existing in the mesh
+     */
+    submesh_array GetSubMeshes()
+      raises (SALOME::SALOME_Exception);
+
     /*!
      * Remove all nodes and elements of submesh
      */
@@ -313,9 +348,9 @@ module SMESH
       raises (SALOME::SALOME_Exception);
 
     /*!
-     * Get the subMesh object associated to a subShape. The subMesh object
+     * Get the subMesh object associated to a Sub-shape. The subMesh object
      * gives access to nodes and elements IDs.
-     * SubMesh will be used instead of SubShape in a next idl version to
+     * SubMesh will be used instead of Sub-shape in a next idl version to
      * adress a specific subMesh...
      */
     SMESH_subMesh GetSubMesh(in GEOM::GEOM_Object aSubObject, in string name)
@@ -451,20 +486,20 @@ module SMESH
       raises (SALOME::SALOME_Exception);
 
     /*!
-     * Add hypothesis to the mesh, under a particular subShape
+     * Add hypothesis to the mesh, under a particular Sub-shape
      * (or the main shape itself)
      * The Add method is only used to prepare the build of the mesh and store
      * the algorithms and associated parameters.
      * Actual job of mesh the shape is done by MESH_Gen.
      * @params
-     * - aSubShape : subShape obtained by a shape explode in GEOM
+     * - aSubShape : sub-shape obtained by a shape explode in GEOM
      *   (or main shape)
      * - anHyp : hypothesis object
      * @return
-     * - OK if the hypothesis is compatible with the subShape
-     *   (and all previous hypothesis on the subShape)
-     * - NOK if the hypothesis is not compatible with the subShape
-     *   (or one previous hypothesis on the subShape)
+     * - OK if the hypothesis is compatible with the sub-shape
+     *   (and all previous hypothesis on the sub-shape)
+     * - NOK if the hypothesis is not compatible with the sub-shape
+     *   (or one previous hypothesis on the sub-shape)
      * raises exception if hypothesis has not been created
      */
     Hypothesis_Status AddHypothesis(in GEOM::GEOM_Object aSubObject,
@@ -484,7 +519,7 @@ module SMESH
 //       raises (SALOME::SALOME_Exception);
 
     /*!
-     * Get the list of hypothesis added on a subShape
+     * Get the list of hypothesis added on a sub-shape
      */
     ListOfHypothesis GetHypothesisList(in GEOM::GEOM_Object aSubObject)
       raises (SALOME::SALOME_Exception);
@@ -604,19 +639,31 @@ module SMESH
     void ExportMED( in string file, in boolean auto_groups )
       raises (SALOME::SALOME_Exception);
 
+    /*!
+     * Export Mesh to SAUV formatted file
+     * Write a temporary med file and use med2sauv
+     */
+    void ExportSAUV( in string file, in boolean auto_groups )
+      raises (SALOME::SALOME_Exception);
+
     /*!
      * Return string representation of a MED file version comprising nbDigits
      */
     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);
     void ExportUNV( in string file ) raises (SALOME::SALOME_Exception);
     void ExportSTL( in string  file,
                     in boolean isascii ) raises (SALOME::SALOME_Exception);
+    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 ) raises (SALOME::SALOME_Exception);
     void ExportPartToDAT( in SMESH_IDSource meshPart, 
                           in string         file ) raises (SALOME::SALOME_Exception);
     void ExportPartToUNV( in SMESH_IDSource meshPart, 
@@ -643,6 +690,9 @@ module SMESH
     long Nb0DElements()
       raises (SALOME::SALOME_Exception);
 
+    long NbBalls()
+      raises (SALOME::SALOME_Exception);
+
     long NbEdges()
       raises (SALOME::SALOME_Exception);
 
@@ -667,6 +717,9 @@ module SMESH
     long NbQuadranglesOfOrder(in ElementOrder order)
       raises (SALOME::SALOME_Exception);
 
+    long NbBiQuadQuadrangles()
+      raises (SALOME::SALOME_Exception);
+
     long NbPolygons()
       raises (SALOME::SALOME_Exception);
 
@@ -688,6 +741,9 @@ module SMESH
     long NbHexasOfOrder(in ElementOrder order)
       raises (SALOME::SALOME_Exception);
 
+    long NbTriQuadraticHexas()
+      raises (SALOME::SALOME_Exception);
+
     long NbPyramids()
       raises (SALOME::SALOME_Exception);
 
@@ -700,6 +756,9 @@ module SMESH
     long NbPrismsOfOrder(in ElementOrder order)
       raises (SALOME::SALOME_Exception);
 
+    long NbHexagonalPrisms()
+      raises (SALOME::SALOME_Exception);
+
     long NbPolyhedrons()
       raises (SALOME::SALOME_Exception);
 
@@ -849,6 +908,11 @@ module SMESH
      */
     boolean IsQuadratic(in long id);
 
+    /*!
+     * Returns diameter of a ball discrete element or zero in case of an invalid \a id
+     */
+    double GetBallDiameter(in long id);
+
     /*!
      * Returns XYZ coordinates of bary center for given element
      * as list of double