Salome HOME
Fix regression of smesh/bugs_14/P7
authoreap <eap@opencascade.com>
Wed, 26 Feb 2020 08:59:42 +0000 (11:59 +0300)
committereap <eap@opencascade.com>
Wed, 26 Feb 2020 08:59:42 +0000 (11:59 +0300)
src/SMESH_I/SMESH_Mesh_i.cxx

index 06b0abcde3f9b274af0c90cb69a50371590c4a93..aa25d7d07ad1551bb8ccc519d24a3cd2f06dae0f 100644 (file)
@@ -2295,6 +2295,8 @@ void SMESH_Mesh_i::CheckGeomModif( bool isBreakLink )
   if ( !geomClient ) return;
   GEOM::GEOM_Gen_var geomGen = _gen_i->GetGeomEngine( mainGO );
   if ( geomGen->_is_nil() ) return;
   if ( !geomClient ) return;
   GEOM::GEOM_Gen_var geomGen = _gen_i->GetGeomEngine( mainGO );
   if ( geomGen->_is_nil() ) return;
+  CORBA::String_var geomComponentType = geomGen->ComponentDataType();
+  bool isShaper = ( strcmp( geomComponentType.in(), "SHAPERSTUDY" ) == 0 );
 
   CORBA::String_var ior = geomGen->GetStringFromIOR( mainGO );
   geomClient->RemoveShapeFromBuffer( ior.in() );
 
   CORBA::String_var ior = geomGen->GetStringFromIOR( mainGO );
   geomClient->RemoveShapeFromBuffer( ior.in() );
@@ -2306,7 +2308,7 @@ void SMESH_Mesh_i::CheckGeomModif( bool isBreakLink )
     _preMeshInfo->ForgetAllData();
 
   
     _preMeshInfo->ForgetAllData();
 
   
-  if (isBreakLink)
+  if ( isBreakLink || !isShaper )
     _impl->Clear();
   TopoDS_Shape newShape = _gen_i->GeomObjectToShape( mainGO );
   if ( newShape.IsNull() )
     _impl->Clear();
   TopoDS_Shape newShape = _gen_i->GeomObjectToShape( mainGO );
   if ( newShape.IsNull() )
@@ -2506,7 +2508,7 @@ void SMESH_Mesh_i::CheckGeomModif( bool isBreakLink )
 
   _gen_i->UpdateIcons( me );
 
 
   _gen_i->UpdateIcons( me );
 
-  if ( !isBreakLink )
+  if ( !isBreakLink && isShaper )
   {
     SALOMEDS::SObject_wrap meshSO = _gen_i->ObjectToSObject( me );
     if ( !meshSO->_is_nil() )
   {
     SALOMEDS::SObject_wrap meshSO = _gen_i->ObjectToSObject( me );
     if ( !meshSO->_is_nil() )