Salome HOME
DCQ : Merge with Ecole_Ete_a6.
[modules/smesh.git] / src / SMESH / SMESH_Mesh.hxx
index fbda43b0259c0c0fa2af3ec26fa9ec5f92deff8c..2f77fa2e5050b9ea7e7755189fa6703bc95016b0 100644 (file)
@@ -34,6 +34,7 @@
 #include "SMESHDS_Command.hxx"
 #include "SMESH_Hypothesis.hxx"
 #include "SMESH_subMesh.hxx"
+#include <SMDSAbs_ElementType.hxx>
 #include "Utils_SALOME_Exception.hxx"
 
 #include <TopExp.hxx>
 #include <TopoDS_Vertex.hxx>
 #include <TopoDS_Shape.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
+#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
 
 #include <vector>
 #include <list>
 #include <map>
 
+#if (__GNUC__>2)
+#include <string>
+#include <istream>
+#include <ostream>
+#else 
+#include <string>
+#include <istream.h>
+#include <ostream.h>
+#endif
+
 class SMESH_Gen;
+class SMESH_Group;
+class TopTools_ListOfShape;
 
 class SMESH_Mesh
 {
@@ -64,18 +78,24 @@ class SMESH_Mesh
        SMESH_Mesh(int localId, int studyId, SMESH_Gen * gen,
                SMESHDS_Document * myDocument);
 
-       virtual ~ SMESH_Mesh();
+       virtual ~SMESH_Mesh();
 
-       void ShapeToMesh(const TopoDS_Shape & aShape) throw(SALOME_Exception);
+        void ShapeToMesh(const TopoDS_Shape & aShape);
+        /*!
+         * consult DriverMED_R_SMESHDS_Mesh::ReadStatus for returned value
+         */
+        int MEDToMesh(const char* theFileName, const char* theMeshName);
 
-       bool AddHypothesis(const TopoDS_Shape & aSubShape, int anHypId)
+       SMESH_Hypothesis::Hypothesis_Status
+                AddHypothesis(const TopoDS_Shape & aSubShape, int anHypId)
                throw(SALOME_Exception);
 
-       bool RemoveHypothesis(const TopoDS_Shape & aSubShape, int anHypId)
+       SMESH_Hypothesis::Hypothesis_Status
+                RemoveHypothesis(const TopoDS_Shape & aSubShape, int anHypId)
                throw(SALOME_Exception);
 
        const list <const SMESHDS_Hypothesis * >&
-               GetHypothesisList(const TopoDS_Shape & aSubShape)
+               GetHypothesisList(const TopoDS_Shape & aSubShape) const
                throw(SALOME_Exception);
 
        const list<SMESHDS_Command*> & GetLog() throw(SALOME_Exception);
@@ -101,8 +121,22 @@ class SMESH_Mesh
                GetSubMeshUsingHypothesis(SMESHDS_Hypothesis * anHyp)
                throw(SALOME_Exception);
 
-       void Export(const char *fileName, const char *fileType)
-               throw(SALOME_Exception);
+        bool IsUsedHypothesis(SMESHDS_Hypothesis * anHyp,
+                              const TopoDS_Shape & aSubShape);
+        // Return True if anHyp is used to mesh aSubShape
+
+        bool IsNotConformAllowed() const;
+        // check if a hypothesis alowing notconform mesh is present
+
+        bool IsMainShape(const TopoDS_Shape& theShape) const;
+
+        const TopTools_ListOfShape& GetAncestors(const TopoDS_Shape& theSubShape);
+        // return list of ancestors of theSubShape in the order
+        // that lower dimention shapes come first.
+        
+       void ExportDAT(const char *file) throw(SALOME_Exception);
+       void ExportMED(const char *file, const char* theMeshName = NULL, bool theAutoGroups = true) throw(SALOME_Exception);
+       void ExportUNV(const char *file) throw(SALOME_Exception);
 
        int NbNodes() throw(SALOME_Exception);
 
@@ -120,21 +154,43 @@ class SMESH_Mesh
 
        int NbHexas() throw(SALOME_Exception);
 
+       int NbPyramids() throw(SALOME_Exception);
+
+       int NbPrisms() throw(SALOME_Exception);
+
        int NbSubMesh() throw(SALOME_Exception);
 
+        int NbGroup() const { return _mapGroup.size(); }
+  
+        SMESH_Group* AddGroup (const SMDSAbs_ElementType theType,
+                               const char*               theName,
+                               int&                      theId);
+  
+        SMESH_Group* GetGroup (const int theGroupID);
+
+        list<int> GetGroupIds();
+  
+        void RemoveGroup (const int theGroupID);
+
+        ostream& Dump(ostream & save);
+
   private:
 
        int _id;                                        // id given by creator (unique within the creator instance)
        int _studyId;
        int _idDoc;                                     // id given by SMESHDS_Document
-       bool _isShapeToMesh;            // set to true when a shape is given (only once)
+        int _groupId;                                   // id generator for group objects
+       bool _isShapeToMesh;                            // set to true when a shape is given (only once)
        list<const SMESHDS_Hypothesis *> _subShapeHypothesisList;
        list <SMESH_subMesh *> _subMeshesUsingHypothesisList;
        SMESHDS_Document * _myDocument;
        SMESHDS_Mesh * _myMeshDS;
        TopTools_IndexedMapOfShape _subShapes;
-       map <int, SMESH_subMesh *>_mapSubMesh;
+       map <int, SMESH_subMesh *> _mapSubMesh;
+       map <int, SMESH_Group *>   _mapGroup;
        SMESH_Gen *_gen;
+
+        TopTools_IndexedDataMapOfShapeListOfShape _mapAncestors;
 };
 
 #endif