+ SMESH_subMesh *GetSubMesh(const TopoDS_Shape & aSubShape)
+ throw(SALOME_Exception);
+
+ SMESH_subMesh *GetSubMeshContaining(const TopoDS_Shape & aSubShape) const
+ throw(SALOME_Exception);
+
+ SMESH_subMesh *GetSubMeshContaining(const int aShapeID) const
+ throw(SALOME_Exception);
+ /*!
+ * \brief Return submeshes of groups containing the given subshape
+ */
+ std::list<SMESH_subMesh*> GetGroupSubMeshesContaining(const TopoDS_Shape & shape) const
+ throw(SALOME_Exception);
+ /*!
+ * \brief Say all submeshes that theChangedHyp has been modified
+ */
+ void NotifySubMeshesHypothesisModification(const SMESH_Hypothesis* theChangedHyp);
+
+ // const std::list < SMESH_subMesh * >&
+ // GetSubMeshUsingHypothesis(SMESHDS_Hypothesis * anHyp) throw(SALOME_Exception);
+ /*!
+ * \brief Return True if anHyp is used to mesh aSubShape
+ */
+ bool IsUsedHypothesis(SMESHDS_Hypothesis * anHyp,
+ const SMESH_subMesh * aSubMesh);
+ /*!
+ * \brief check if a hypothesis allowing notconform mesh is present
+ */
+ bool IsNotConformAllowed() const;
+
+ bool IsMainShape(const TopoDS_Shape& theShape) const;
+ /*!
+ * \brief Return list of ancestors of theSubShape in the order
+ * that lower dimension shapes come first
+ */
+ const TopTools_ListOfShape& GetAncestors(const TopoDS_Shape& theSubShape) const;
+
+ void SetAutoColor(bool theAutoColor) throw(SALOME_Exception);
+
+ bool GetAutoColor() throw(SALOME_Exception);
+
+ /*!
+ * \brief Set the flag meaning that the mesh has been edited "manually".
+ * It is to set to false after Clear() and to set to true by MeshEditor
+ */
+ void SetIsModified(bool isModified);
+
+ bool GetIsModified() const { return _isModified; }
+
+ /*!
+ * \brief Return true if the mesh has been edited since a total re-compute
+ * and those modifications may prevent successful partial re-compute.
+ * As a side effect reset _isModified flag if mesh is empty
+ */
+ bool HasModificationsToDiscard() const;
+
+ /*!
+ * \brief Return true if all sub-meshes are computed OK - to update an icon
+ */
+ bool IsComputedOK();
+
+ /*!
+ * \brief Return data map of descendant to ancestor shapes
+ */
+ typedef TopTools_IndexedDataMapOfShapeListOfShape TAncestorMap;
+ const TAncestorMap& GetAncestorMap() const { return _mapAncestors; }
+ /*!
+ * \brief Check group names for duplications.
+ * Consider maximum group name length stored in MED file
+ */
+ bool HasDuplicatedGroupNamesMED();
+
+ void ExportMED(const char * theFile,
+ const char* theMeshName = NULL,
+ bool theAutoGroups = true,
+ int theVersion = -1,
+ const SMESHDS_Mesh* theMeshPart = 0,
+ bool theAutoDimension = false,
+ bool theAddODOnVertices = false,
+ double theZTolerance = -1.,
+ bool theAllElemsToGroup = false)
+ throw(SALOME_Exception);
+
+ void ExportDAT(const char * file,
+ const SMESHDS_Mesh* meshPart = 0) throw(SALOME_Exception);
+ void ExportUNV(const char * file,
+ const SMESHDS_Mesh* meshPart = 0) throw(SALOME_Exception);
+ void ExportSTL(const char * file,
+ const bool isascii,
+ const char * name = 0,
+ const SMESHDS_Mesh* meshPart = 0) throw(SALOME_Exception);
+ void ExportCGNS(const char * file,
+ const SMESHDS_Mesh* mesh,
+ const char * meshName = 0,
+ const bool groupElemsByType = false);
+ void ExportGMF(const char * file,
+ const SMESHDS_Mesh* mesh,
+ bool withRequiredGroups = true );
+ void ExportSAUV(const char *file,
+ const char* theMeshName = NULL,
+ bool theAutoGroups = true) throw(SALOME_Exception);
+
+ double GetComputeProgress() const;
+
+ int NbNodes() const throw(SALOME_Exception);
+ int Nb0DElements() const throw(SALOME_Exception);
+ int NbBalls() const throw(SALOME_Exception);
+
+ int NbEdges(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception);
+
+ int NbFaces(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception);
+ int NbTriangles(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception);
+ int NbQuadrangles(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception);
+ int NbBiQuadQuadrangles() const throw(SALOME_Exception);
+ int NbBiQuadTriangles() const throw(SALOME_Exception);
+ int NbPolygons(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception);
+
+ int NbVolumes(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception);
+ int NbTetras(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception);
+ int NbHexas(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception);
+ int NbTriQuadraticHexas() const throw(SALOME_Exception);
+ int NbPyramids(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception);
+ int NbPrisms(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception);
+ int NbQuadPrisms() const throw(SALOME_Exception);
+ int NbBiQuadPrisms() const throw(SALOME_Exception);
+ int NbHexagonalPrisms() const throw(SALOME_Exception);
+ int NbPolyhedrons() const throw(SALOME_Exception);
+
+ int NbSubMesh() const throw(SALOME_Exception);
+
+ int NbGroup() const { return _mapGroup.size(); }