mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-27 09:50:34 +05:00
Each SMESH engine should publish its data in a study in a separate SComponent
This commit is contained in:
parent
14866e6309
commit
8c67d06369
@ -531,8 +531,23 @@ SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent()
|
|||||||
SALOMEDS::StudyBuilder_var aStudyBuilder = getStudyServant()->NewBuilder();
|
SALOMEDS::StudyBuilder_var aStudyBuilder = getStudyServant()->NewBuilder();
|
||||||
SALOMEDS::UseCaseBuilder_wrap useCaseBuilder = getStudyServant()->GetUseCaseBuilder();
|
SALOMEDS::UseCaseBuilder_wrap useCaseBuilder = getStudyServant()->GetUseCaseBuilder();
|
||||||
|
|
||||||
CORBA::String_var compDataType = ComponentDataType();
|
std::string compDataType = ComponentDataType(); // SMESH module's data type
|
||||||
SALOMEDS::SComponent_wrap father = getStudyServant()->FindComponent( compDataType.in() );
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( !CORBA::is_nil( father ) ) {
|
if ( !CORBA::is_nil( father ) ) {
|
||||||
// check that the component is added to the use case browser
|
// check that the component is added to the use case browser
|
||||||
if ( !useCaseBuilder->IsUseCaseNode( father ) ) {
|
if ( !useCaseBuilder->IsUseCaseNode( father ) ) {
|
||||||
@ -542,19 +557,21 @@ SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent()
|
|||||||
return father._retn();
|
return father._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If component for this SMESH engine does not exist in the study, create it
|
||||||
|
|
||||||
SALOME_ModuleCatalog::ModuleCatalog_var aCat =
|
SALOME_ModuleCatalog::ModuleCatalog_var aCat =
|
||||||
SALOME_ModuleCatalog::ModuleCatalog::_narrow( GetNS()->Resolve("/Kernel/ModulCatalog") );
|
SALOME_ModuleCatalog::ModuleCatalog::_narrow( GetNS()->Resolve("/Kernel/ModulCatalog") );
|
||||||
if ( CORBA::is_nil( aCat ) )
|
if ( CORBA::is_nil( aCat ) )
|
||||||
return father._retn();
|
return father._retn();
|
||||||
|
|
||||||
SALOME_ModuleCatalog::Acomponent_var aComp = aCat->GetComponent( compDataType.in() );
|
SALOME_ModuleCatalog::Acomponent_var aComp = aCat->GetComponent( compDataType.c_str() );
|
||||||
if ( CORBA::is_nil( aComp ) )
|
if ( CORBA::is_nil( aComp ) )
|
||||||
return father._retn();
|
return father._retn();
|
||||||
|
|
||||||
SALOMEDS::GenericAttribute_wrap anAttr;
|
SALOMEDS::GenericAttribute_wrap anAttr;
|
||||||
SALOMEDS::AttributePixMap_wrap aPixmap;
|
SALOMEDS::AttributePixMap_wrap aPixmap;
|
||||||
|
|
||||||
father = aStudyBuilder->NewComponent( compDataType.in() );
|
father = aStudyBuilder->NewComponent( compDataType.c_str() );
|
||||||
aStudyBuilder->DefineComponentInstance( father, SMESH_Gen::_this() );
|
aStudyBuilder->DefineComponentInstance( father, SMESH_Gen::_this() );
|
||||||
anAttr = aStudyBuilder->FindOrCreateAttribute( father, "AttributePixMap" );
|
anAttr = aStudyBuilder->FindOrCreateAttribute( father, "AttributePixMap" );
|
||||||
aPixmap = anAttr;
|
aPixmap = anAttr;
|
||||||
@ -735,7 +752,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishSubMesh (SMESH::SMESH_Mesh_ptr theM
|
|||||||
|
|
||||||
// Add reference to theShapeObject
|
// Add reference to theShapeObject
|
||||||
|
|
||||||
addReference( aSubMeshSO, theShapeObject, 1 );
|
addReference( aSubMeshSO, theShapeObject, GetRefOnShapeTag() );
|
||||||
|
|
||||||
// Publish hypothesis
|
// Publish hypothesis
|
||||||
|
|
||||||
@ -820,7 +837,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishGroup (SMESH::SMESH_Mesh_ptr theMesh,
|
|||||||
|
|
||||||
//Add reference to geometry
|
//Add reference to geometry
|
||||||
if ( !theShapeObject->_is_nil() )
|
if ( !theShapeObject->_is_nil() )
|
||||||
addReference( aGroupSO, theShapeObject, 1 );
|
addReference( aGroupSO, theShapeObject, GetRefOnShapeTag() );
|
||||||
|
|
||||||
return aGroupSO._retn();
|
return aGroupSO._retn();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user