#17096 [CEA 16891] SMesh::CopyMeshWithGeom : discrepeancies in copied groups volumes.

This commit is contained in:
eap 2019-07-11 18:42:52 +03:00
parent 1732ea91c4
commit bb1e4b11d8

View File

@ -3109,6 +3109,11 @@ namespace // utils for CopyMeshWithGeom()
{ {
findNewIDs( oldIndices[i], newIndices ); findNewIDs( oldIndices[i], newIndices );
} }
if ( newIndices.size() < oldIndices->length() ) // issue #17096
{
newIndices.clear();
newShape = getInPlace( oldShape );
}
if ( !newIndices.empty() ) if ( !newIndices.empty() )
{ {
try 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 * \brief Find a new sub-shape indices by an old one in myGIPMap. Return