Salome HOME
Improve ReplaceShape interface
authorvsv <vsv@opencascade.com>
Fri, 27 Dec 2019 15:26:04 +0000 (18:26 +0300)
committervsv <vsv@opencascade.com>
Fri, 27 Dec 2019 15:26:04 +0000 (18:26 +0300)
idl/SMESH_Mesh.idl
src/SMESH_I/SMESH_Mesh_i.cxx
src/SMESH_I/SMESH_Mesh_i.hxx

index b4ec14dc85fed7cbd527e3e4b6d52a0347c09c6a..8cda08472be32e3a33f055ae7c7773e58ab28d0b 100644 (file)
@@ -350,7 +350,7 @@ module SMESH
     /*!
      * Replaces a shape in the mesh
      */
-    void ReplaceShape(in GEOM::GEOM_Object theNewGeom, in GEOM::GEOM_Object theOldGeom)
+    void ReplaceShape(in GEOM::GEOM_Object theNewGeom)
       raises (SALOME::SALOME_Exception);
 
     /*!
index 1740de242347054f9d51d193eae947569ac4a9bd..0f7ce96463b19e817b58588a4a10f3583e80438b 100644 (file)
@@ -259,13 +259,15 @@ GEOM::GEOM_Object_ptr SMESH_Mesh_i::GetShapeToMesh()
 * \brief Replaces a shape in the mesh
 */
 //================================================================================
-void SMESH_Mesh_i::ReplaceShape(GEOM::GEOM_Object_ptr theNewGeom, GEOM::GEOM_Object_ptr theOldGeom)
+void SMESH_Mesh_i::ReplaceShape(GEOM::GEOM_Object_ptr theNewGeom)
   throw (SALOME::SALOME_Exception)
 {
+  TopoDS_Shape S = _impl->GetMeshDS()->ShapeToMesh();
   GEOM_Client* geomClient = _gen_i->GetShapeReader();
-  GEOM::GEOM_Gen_var geomGen = _gen_i->GetGeomEngine(theOldGeom);
-  CORBA::String_var groupIOR = geomGen->GetStringFromIOR(theOldGeom);
-  geomClient->RemoveShapeFromBuffer(groupIOR.in());
+  TCollection_AsciiString aIOR;
+  if (geomClient->Find(S, aIOR)) {
+    geomClient->RemoveShapeFromBuffer(aIOR);
+  }
   _impl->UndefShapeToMesh();
   SetShape(theNewGeom);
 }
index 9c564e1766e2b4d4c3edb6f0b03ff6bd99af7a56..535931d93ec465683d6d6edc7dc064e1bfcacd6a 100644 (file)
@@ -74,7 +74,7 @@ public:
   GEOM::GEOM_Object_ptr GetShapeToMesh()
     throw (SALOME::SALOME_Exception);
 
-  virtual void ReplaceShape(GEOM::GEOM_Object_ptr theNewGeom, GEOM::GEOM_Object_ptr theOldGeom)
+  virtual void ReplaceShape(GEOM::GEOM_Object_ptr theNewGeom)
     throw (SALOME::SALOME_Exception);
 
   CORBA::Boolean IsLoaded()