+ /*!
+ * Returns ID of nodes for given submesh
+ * If param all==true - returns all nodes, else -
+ * returns only nodes on shapes.
+ */
+ SMESH::long_array* GetSubMeshNodesId(CORBA::Long ShapeID, CORBA::Boolean all)
+ throw (SALOME::SALOME_Exception);
+
+ /*!
+ * Returns type of elements for given submesh
+ */
+ SMESH::ElementType GetSubMeshElementType(CORBA::Long ShapeID)
+ throw (SALOME::SALOME_Exception);
+
+ char* Dump();
+
+ // Internal methods not available through CORBA
+ // They are called by corresponding interface methods
+ SMESH_Hypothesis::Hypothesis_Status addHypothesis(GEOM::GEOM_Object_ptr aSubShapeObject,
+ SMESH::SMESH_Hypothesis_ptr anHyp);
+
+ SMESH_Hypothesis::Hypothesis_Status removeHypothesis(GEOM::GEOM_Object_ptr aSubShapeObject,
+ SMESH::SMESH_Hypothesis_ptr anHyp);
+
+ static SMESH::Hypothesis_Status
+ ConvertHypothesisStatus (SMESH_Hypothesis::Hypothesis_Status theStatus);
+
+ static void PrepareForWriting (const char* file);
+
+ //int importMEDFile( const char* theFileName, const char* theMeshName );
+
+ SMESH::SMESH_subMesh_ptr createSubMesh( GEOM::GEOM_Object_ptr theSubShapeObject );
+
+ void removeSubMesh(SMESH::SMESH_subMesh_ptr theSubMesh,
+ GEOM::GEOM_Object_ptr theSubShapeObject );
+
+ SMESH::SMESH_GroupBase_ptr createGroup(SMESH::ElementType theElemType,
+ const char* theName,
+ const TopoDS_Shape& theShape = TopoDS_Shape());
+
+ void removeGroup( const int theId );
+
+ SMESH::SMESH_subMesh_ptr getSubMesh(int shapeID);
+ // return an existing subMesh object for the shapeID. shapeID == submeshID.
+
+ const std::map<int, SMESH::SMESH_GroupBase_ptr>& getGroups() { return _mapGroups; }
+ // return an existing group object.
+
+ /*!
+ * \brief Update hypotheses assigned to geom groups if the latter change
+ *
+ * NPAL16168: "geometrical group edition from a submesh don't modifiy mesh computation"
+ */
+ void CheckGeomGroupModif();
+
+ virtual SMESH::long_array* GetIDs();
+
+ CORBA::LongLong GetMeshPtr();
+
+ /*!
+ * \brief Assure that all groups are published
+ */
+ void CreateGroupServants();
+
+ /*!
+ * \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(CORBA::Long id);
+
+ /*!
+ * For given node returns list of IDs of inverse elements
+ * If there is not node for given ID - returns empty list
+ */
+ SMESH::long_array* GetNodeInverseElements(CORBA::Long id);
+
+ /*!
+ * \brief Return position of a node on shape
+ */
+ SMESH::NodePosition* GetNodePosition(CORBA::Long NodeID);
+
+ /*!
+ * If given element is node returns IDs of shape from position
+ * If there is not node for given ID - returns -1
+ */
+ CORBA::Long GetShapeID(CORBA::Long 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(CORBA::Long id);
+
+ /*!
+ * Returns number of nodes for given element
+ * If there is not element for given ID - returns -1
+ */
+ CORBA::Long GetElemNbNodes(CORBA::Long id);
+
+ /*!
+ * Returns IDs of nodes of given element
+ */
+ SMESH::long_array* GetElemNodes(CORBA::Long 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
+ */
+ CORBA::Long GetElemNode(CORBA::Long id, CORBA::Long index);
+
+ /*!
+ * Returns true if given node is medium node
+ * in given quadratic element
+ */
+ CORBA::Boolean IsMediumNode(CORBA::Long ide, CORBA::Long idn);
+
+ /*!
+ * Returns true if given node is medium node
+ * in one of quadratic elements
+ */
+ CORBA::Boolean IsMediumNodeOfAnyElem(CORBA::Long idn,
+ SMESH::ElementType theElemType);
+
+ /*!
+ * Returns number of edges for given element
+ */
+ CORBA::Long ElemNbEdges(CORBA::Long id);
+
+ /*!
+ * Returns number of faces for given element
+ */
+ CORBA::Long ElemNbFaces(CORBA::Long id);
+
+ /*!
+ * Returns true if given element is polygon
+ */
+ CORBA::Boolean IsPoly(CORBA::Long id);
+
+ /*!
+ * Returns true if given element is quadratic
+ */
+ CORBA::Boolean IsQuadratic(CORBA::Long id);
+
+ /*!
+ * Returns bary center for given element
+ */
+ SMESH::double_array* BaryCenter(CORBA::Long id);
+
+ /*!
+ * Returns information about imported MED file
+ */
+ virtual SALOME_MED::MedFileInfo* GetMEDFileInfo();
+
+ /*!
+ * 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();
+
+ std::map<int, SMESH_subMesh_i*> _mapSubMesh_i; //NRI
+ std::map<int, ::SMESH_subMesh*> _mapSubMesh; //NRI
+
+private:
+ /*!
+ * Check and correct names of mesh groups
+ */
+ void checkGroupNames();