From: eap Date: Thu, 11 Jul 2019 15:42:52 +0000 (+0300) Subject: #17096 [CEA 16891] SMesh::CopyMeshWithGeom : discrepeancies in copied groups volumes. X-Git-Tag: V9_4_0a1~24 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=bb1e4b11d8f1c4b90fe7b2c9c59a65c1d30c37f4;p=modules%2Fsmesh.git #17096 [CEA 16891] SMesh::CopyMeshWithGeom : discrepeancies in copied groups volumes. --- diff --git a/src/SMESH_I/SMESH_Gen_i.cxx b/src/SMESH_I/SMESH_Gen_i.cxx index 09ea4c2fe..51c78a130 100644 --- a/src/SMESH_I/SMESH_Gen_i.cxx +++ b/src/SMESH_I/SMESH_Gen_i.cxx @@ -3109,6 +3109,11 @@ namespace // utils for CopyMeshWithGeom() { findNewIDs( oldIndices[i], newIndices ); } + if ( newIndices.size() < oldIndices->length() ) // issue #17096 + { + newIndices.clear(); + newShape = getInPlace( oldShape ); + } if ( !newIndices.empty() ) { try @@ -3292,6 +3297,27 @@ namespace // utils for CopyMeshWithGeom() } } + //================================================================================ + /*! + * \brief Get new sub-shape by calling GetInPlace() + */ + GEOM::GEOM_Object_ptr getInPlace( GEOM::GEOM_Object_ptr oldShape ) + { + GEOM::GEOM_Object_var newShape; + + GEOM::GEOM_Object_var mainShapeNew = myNewMesh_i->GetShapeToMesh(); + GEOM::GEOM_Gen_var geomGen = myGen_i->GetGeomEngine(); + GEOM::GEOM_IShapesOperations_wrap op = geomGen->GetIShapesOperations(); + try + { + newShape = op->GetInPlace( mainShapeNew, oldShape ); + } + catch( ... ) + { + } + return newShape._retn(); + } + //================================================================================ /*! * \brief Find a new sub-shape indices by an old one in myGIPMap. Return