+ const std::map<int, SMESH::SMESH_GroupBase_ptr>& getGroups() { return _mapGroups; }
+ // return existing group objects
+
+ void onHypothesisModified(int theHypID, bool updateIcons);
+ // callback from _impl to forget not loaded mesh data (issue 0021208)
+
+ /*!
+ * \brief Update data if geometry changes
+ *
+ * Issue 0022501
+ */
+ void CheckGeomModif( bool isBreakLink = false );
+ /*!
+ * \brief Update hypotheses assigned to geom groups if the latter change
+ *
+ * NPAL16168: "geometrical group edition from a submesh don't modify mesh computation"
+ */
+ void CheckGeomGroupModif();
+
+ CORBA::LongLong GetMeshPtr();
+
+ /*!
+ * \brief Assure that all groups are published
+ */
+ void CreateGroupServants();
+
+ /*!
+ * \brief Return true if all sub-meshes are computed OK - to update an icon
+ */
+ bool IsComputedOK();
+
+
+ // ====================================
+ // SMESH_Mesh interface (continuation)
+ // ====================================
+
+ /*!
+ * \brief Return groups cantained in _mapGroups by their IDs
+ */
+ SMESH::ListOfGroups* GetGroups(const std::list<int>& groupIDs) const;
+
+ /*!
+ * Get XYZ coordinates of node as list of double
+ * If there is not node for given ID - returns empty list
+ */
+ SMESH::double_array* GetNodeXYZ(SMESH::smIdType id);
+
+ /*!
+ * For given node returns list of IDs of inverse elements
+ * If there is not node for given ID - returns empty list
+ */
+ SMESH::smIdType_array* GetNodeInverseElements(SMESH::smIdType id,
+ SMESH::ElementType elemType);
+
+ /*!
+ * \brief Return position of a node on shape
+ */
+ SMESH::NodePosition* GetNodePosition(SMESH::smIdType NodeID);
+
+ /*!
+ * \brief Return position of an element on shape
+ */
+ SMESH::ElementPosition GetElementPosition(SMESH::smIdType ElemID);
+
+ /*!
+ * If given element is node returns IDs of shape from position
+ * If there is not node for given ID - returns -1
+ */
+ CORBA::Long GetShapeID(SMESH::smIdType id);
+
+ /*!
+ * For given element returns ID of result shape after
+ * ::FindShape() from SMESH_MeshEditor
+ * If there is not element for given ID - returns -1
+ */
+ CORBA::Long GetShapeIDForElem(SMESH::smIdType id);
+
+ /*!
+ * Returns number of nodes for given element
+ * If there is not element for given ID - returns -1
+ */
+ CORBA::Short GetElemNbNodes(SMESH::smIdType id);
+
+ /*!
+ * Returns IDs of nodes of given element
+ */
+ SMESH::smIdType_array* GetElemNodes(SMESH::smIdType id);
+
+ /*!
+ * Returns ID of node by given index for given element
+ * If there is not element for given ID - returns -1
+ * If there is not node for given index - returns -2
+ */
+ SMESH::smIdType GetElemNode(SMESH::smIdType id, CORBA::Short index);
+
+ /*!
+ * Returns true if given node is medium node
+ * in given quadratic element
+ */
+ CORBA::Boolean IsMediumNode(SMESH::smIdType ide, SMESH::smIdType idn);
+
+ /*!
+ * Returns true if given node is medium node
+ * in one of quadratic elements
+ */
+ CORBA::Boolean IsMediumNodeOfAnyElem(SMESH::smIdType idn,
+ SMESH::ElementType elemType);
+
+ /*!
+ * Returns number of edges for given element
+ */
+ CORBA::Long ElemNbEdges(SMESH::smIdType id);
+
+ /*!
+ * Returns number of faces for given element
+ */
+ CORBA::Long ElemNbFaces(SMESH::smIdType id);
+ /*!
+ * Returns nodes of given face (counted from zero) for given element.
+ */
+ SMESH::smIdType_array* GetElemFaceNodes(SMESH::smIdType elemId, CORBA::Short faceIndex);
+
+ /*!
+ * Returns three components of normal of given mesh face (or an empty array in KO case)
+ */
+ SMESH::double_array* GetFaceNormal(CORBA::Long faceId, CORBA::Boolean normalized);
+
+ /*!
+ * Returns an element based on all given nodes.
+ */
+ SMESH::smIdType FindElementByNodes(const SMESH::smIdType_array& nodes);
+
+ /*!
+ * Return elements including all given nodes.
+ */
+ SMESH::smIdType_array* GetElementsByNodes(const SMESH::smIdType_array& nodes,
+ SMESH::ElementType elemType);
+
+ /*!
+ * Returns true if given element is polygon
+ */
+ CORBA::Boolean IsPoly(SMESH::smIdType id);
+
+ /*!
+ * Returns true if given element is quadratic
+ */
+ CORBA::Boolean IsQuadratic(SMESH::smIdType id);
+
+ /*!
+ * Returns diameter of ball discrete element or zero in case of an invalid \a id
+ */
+ CORBA::Double GetBallDiameter(SMESH::smIdType id);
+
+ /*!
+ * Returns bary center for given element
+ */
+ SMESH::double_array* BaryCenter(SMESH::smIdType id);
+
+ /*!
+ * Returns information about imported MED file
+ */
+ virtual SMESH::MedFileInfo* GetMEDFileInfo();
+
+ /*!
+ * Persistence of file info
+ */
+ std::string FileInfoToString();
+ void FileInfoFromString(const std::string& info);
+
+ /*!
+ * Persistence of geometry tick
+ */
+ int& MainShapeTick() { return _mainShapeTick; }
+
+
+ /*!
+ * Sets list of notebook variables used for Mesh operations separated by ":" symbol
+ */
+ void SetParameters (const char* theParameters);
+
+ /*!
+ * Returns list of notebook variables used for Mesh operations separated by ":" symbol
+ */
+ char* GetParameters();
+
+ /*!
+ * Returns list of notebook variables used for last Mesh operation
+ */
+ SMESH::string_array* GetLastParameters();
+
+ /*!
+ * \brief Return \c true if a meshing order not yet set for a concurrent sub-mesh
+ */
+ CORBA::Boolean IsUnorderedSubMesh(CORBA::Long submeshID);
+ /*!
+ * \brief Return submesh objects list in meshing order
+ */
+ virtual SMESH::submesh_array_array* GetMeshOrder();
+ /*!
+ * \brief Set submesh object order
+ */
+ virtual ::CORBA::Boolean SetMeshOrder(const SMESH::submesh_array_array& theSubMeshArray);
+