X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshers_I%2FStdMeshers_ObjRefUlils.cxx;h=7f30f128bcc6db7e3a3bcebb3cb7221ed67b685d;hp=7ad64cee20dd2cf27951e8106619a2d25be2023b;hb=a274ade365bd0f0e19d56c577acc4a13aa1972a7;hpb=04f997252152407f9180e03f0af428ab2ca6f4be diff --git a/src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx b/src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx index 7ad64cee2..7f30f128b 100644 --- a/src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx +++ b/src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -59,9 +59,8 @@ StdMeshers_ObjRefUlils::EntryOrShapeToGeomObject (const std::string& theEntry, // try by entry if (SMESH_Gen_i* gen = SMESH_Gen_i::GetSMESHGen()) { - SALOMEDS::Study_var study = gen->GetCurrentStudy(); - if ( ! theEntry.empty() && ! study->_is_nil() ) { - SALOMEDS::SObject_wrap sobj = study->FindObjectID( theEntry.c_str() ); + if ( ! theEntry.empty() ) { + SALOMEDS::SObject_wrap sobj = SMESH_Gen_i::GetSMESHGen()->getStudyServant()->FindObjectID( theEntry.c_str() ); CORBA::Object_var obj = gen->SObjectToObject( sobj ); geom = GEOM::GEOM_Object::_narrow( obj ); } @@ -88,7 +87,7 @@ void StdMeshers_ObjRefUlils::SaveToStream( const TopoDS_Shape& theShape, ostream if (SMESH_Gen_i* gen = SMESH_Gen_i::GetSMESHGen()) { GEOM::GEOM_Object_var geom = gen->ShapeToGeomObject( theShape ); if ( ! geom->_is_nil() ) { - SALOMEDS::SObject_wrap sobj = gen->ObjectToSObject( gen->GetCurrentStudy(), geom ); + SALOMEDS::SObject_wrap sobj = gen->ObjectToSObject( geom ); if ( !sobj->_is_nil() ) { CORBA::String_var entry = sobj->GetID(); stream << " " << entry.in(); @@ -117,13 +116,10 @@ TopoDS_Shape StdMeshers_ObjRefUlils::LoadFromStream( istream & stream, if ( entry ) * entry = str; if (SMESH_Gen_i* gen = SMESH_Gen_i::GetSMESHGen()) { - SALOMEDS::Study_var study = gen->GetCurrentStudy(); - if ( ! study->_is_nil() ) { - SALOMEDS::SObject_wrap sobj = study->FindObjectID( str.c_str() ); - CORBA::Object_var obj = gen->SObjectToObject( sobj ); - GEOM::GEOM_Object_var geom = GEOM::GEOM_Object::_narrow( obj ); - return gen->GeomObjectToShape( geom.in() ); - } + SALOMEDS::SObject_wrap sobj = SMESH_Gen_i::GetSMESHGen()->getStudyServant()->FindObjectID( str.c_str() ); + CORBA::Object_var obj = gen->SObjectToObject( sobj ); + GEOM::GEOM_Object_var geom = GEOM::GEOM_Object::_narrow( obj ); + return gen->GeomObjectToShape( geom.in() ); } } if ( entry ) @@ -166,3 +162,21 @@ void StdMeshers_ObjRefUlils::SaveToStream( const std::string& studyEntry, else stream << " " << studyEntry; } + +//======================================================================= +//function : EntryToShape +//purpose : Return TopoDS_Shape by a study entry +//======================================================================= + +TopoDS_Shape StdMeshers_ObjRefUlils::EntryToShape(const std::string theEntry) +{ + TopoDS_Shape shape; + + if (SMESH_Gen_i* gen = SMESH_Gen_i::GetSMESHGen()) { + SALOMEDS::SObject_wrap sobj = SMESH_Gen_i::GetSMESHGen()->getStudyServant()->FindObjectID( theEntry.c_str() ); + CORBA::Object_var obj = gen->SObjectToObject( sobj ); + GEOM::GEOM_Object_var geom = GEOM::GEOM_Object::_narrow( obj ); + shape = gen->GeomObjectToShape( geom.in() ); + } + return shape; +}