+ bool GetAutoColor();
+
+ /*!
+ * \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();
+
+ /*!
+ * \brief Exception thrown by Export*() in case if a mesh is too large for export
+ * due to limitation of a format
+ */
+ struct TooLargeForExport : public std::runtime_error
+ {
+ TooLargeForExport(const char* format):runtime_error(format) {}
+ };
+
+ MEDCoupling::MCAuto<MEDCoupling::DataArrayByte> ExportMEDCoupling(
+ const char* theMeshName = NULL,
+ bool theAutoGroups = true,
+ const SMESHDS_Mesh* theMeshPart = 0,
+ bool theAutoDimension = false,
+ bool theAddODOnVertices = false,
+ double theZTolerance = -1.,
+ bool theAllElemsToGroup = false);
+
+ 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);
+
+ void ExportDAT(const char * file,
+ const SMESHDS_Mesh* meshPart = 0);
+ void ExportUNV(const char * file,
+ const SMESHDS_Mesh* meshPart = 0);
+ void ExportSTL(const char * file,
+ const bool isascii,
+ const char * name = 0,
+ const SMESHDS_Mesh* meshPart = 0);
+ 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);
+
+ double GetComputeProgress() const;
+
+ smIdType NbNodes() const;
+ smIdType Nb0DElements() const;
+ smIdType NbBalls() const;
+
+ smIdType NbEdges(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+
+ smIdType NbFaces(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ smIdType NbTriangles(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ smIdType NbQuadrangles(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ smIdType NbBiQuadQuadrangles() const;
+ smIdType NbBiQuadTriangles() const;
+ smIdType NbPolygons(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+
+ smIdType NbVolumes(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ smIdType NbTetras(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ smIdType NbHexas(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ smIdType NbTriQuadraticHexas() const;
+ smIdType NbPyramids(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ smIdType NbPrisms(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ smIdType NbQuadPrisms() const;
+ smIdType NbBiQuadPrisms() const;
+ smIdType NbHexagonalPrisms() const;
+ smIdType NbPolyhedrons() const;
+
+ smIdType NbSubMesh() const;
+
+ size_t NbGroup() const { return _mapGroup.size(); }
+
+ int NbMeshes() const; // nb meshes in the Study