- CORBA::String_var compDataType = ComponentDataType();
- SALOMEDS::SComponent_wrap father = getStudyServant()->FindComponent( compDataType.in() );
+ std::string compDataType = ComponentDataType(); // SMESH module's data type
+ std::string ior = SMESH_Gen_i::GetORB()->object_to_string( SMESH_Gen::_this() ); // IOR of this SMESH engine
+
+ // Find study component which corresponds to this SMESH engine
+
+ SALOMEDS::SComponent_wrap father;
+ SALOMEDS::SComponentIterator_wrap citer = getStudyServant()->NewComponentIterator();
+ for ( ; citer->More(); citer->Next()) {
+ SALOMEDS::SComponent_wrap f_i = citer->Value();
+ CORBA::String_var ior_i;
+ bool ok = f_i->ComponentIOR(ior_i.out());
+ if ( ok && compDataType == f_i->ComponentDataType() && ior == ior_i.in()) {
+ father = f_i;
+ break;
+ }
+ }
+