From 6a2b47a7b0eff99f9a0af83341c65ca774f85e6c Mon Sep 17 00:00:00 2001 From: skl Date: Fri, 20 Oct 2006 05:10:49 +0000 Subject: [PATCH] Corrected for PAL13626. New method GetShapeIDForElem() is added. Mehtod GetShapeID() is changed. --- src/SMESH_I/SMESH_Mesh_i.cxx | 30 ++++++++++++++++++++++++++---- src/SMESH_I/SMESH_Mesh_i.hxx | 11 ++++++++--- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/SMESH_I/SMESH_Mesh_i.cxx b/src/SMESH_I/SMESH_Mesh_i.cxx index 367eda450..c8b54f6bb 100644 --- a/src/SMESH_I/SMESH_Mesh_i.cxx +++ b/src/SMESH_I/SMESH_Mesh_i.cxx @@ -49,6 +49,7 @@ //#include "SMDS_ElemIterator.hxx" #include "SMDS_VolumeTool.hxx" #include "SMESH_MesherHelper.hxx" +#include "SMESH_MeshEditor.hxx" // OCCT Includes #include @@ -1857,9 +1858,7 @@ SMESH::long_array* SMESH_Mesh_i::GetNodeInverseElements(const CORBA::Long id) //============================================================================= /*! * If given element is node returns IDs of shape from position - * else - return ID of result shape after ::FindShape() - * from SMESH_MeshEditor - * If there is not element for given ID - returns -1 + * If there is not node for given ID - returns -1 */ //============================================================================= @@ -1879,12 +1878,35 @@ CORBA::Long SMESH_Mesh_i::GetShapeID(const CORBA::Long id) return pos->GetShapeId(); } + return -1; +} + + +//============================================================================= +/*! + * 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 SMESH_Mesh_i::GetShapeIDForElem(const CORBA::Long id) +{ + SMESHDS_Mesh* aSMESHDS_Mesh = _impl->GetMeshDS(); + if ( aSMESHDS_Mesh == NULL ) + return -1; + // try to find element const SMDS_MeshElement* elem = aSMESHDS_Mesh->FindElement(id); if(!elem) return -1; - // need implementation??????????????????????????????????????????????? + //SMESH::SMESH_MeshEditor_var aMeshEditor = SMESH_Mesh_i::GetMeshEditor(); + ::SMESH_MeshEditor aMeshEditor(_impl); + int index = aMeshEditor.FindShape( elem ); + if(index>0) + return index; + return -1; } diff --git a/src/SMESH_I/SMESH_Mesh_i.hxx b/src/SMESH_I/SMESH_Mesh_i.hxx index d7c37b1de..6e87e0383 100644 --- a/src/SMESH_I/SMESH_Mesh_i.hxx +++ b/src/SMESH_I/SMESH_Mesh_i.hxx @@ -321,12 +321,17 @@ public: /*! * If given element is node returns IDs of shape from position - * else - return ID of result shape after ::FindShape() - * from SMESH_MeshEditor - * If there is not element for given ID - returns -1 + * If there is not node for given ID - returns -1 */ CORBA::Long GetShapeID(const 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(const CORBA::Long id); + /*! * Returns number of nodes for given element * If there is not element for given ID - returns -1 -- 2.39.2