SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
SALOMEDS::UseCaseBuilder_wrap useCaseBuilder = theStudy->GetUseCaseBuilder();
SALOMEDS::SObject_wrap objAfter;
+ bool isNewSO = false;
if ( SO->_is_nil() )
{
if ( theTag == 0 ) {
SO = aStudyBuilder->NewObject( theFatherObject );
+ isNewSO = true;
}
else if ( !theFatherObject->FindSubObject( theTag, SO.inout() ))
{
SO = aStudyBuilder->NewObjectToTag( theFatherObject, theTag );
+ isNewSO = true;
// define the next tag after given one in the data tree to insert SObject
SALOMEDS::SObject_wrap curObj;
// add object to the use case tree
// (to support tree representation customization and drag-n-drop)
- if ( !CORBA::is_nil( objAfter ) ) {
- useCaseBuilder->InsertBefore( SO, objAfter ); // insert at given tag
- } else if ( !useCaseBuilder->IsUseCaseNode( SO ) ) {
- useCaseBuilder->AppendTo( theFatherObject, SO ); // append to the end of list
+ if ( isNewSO )
+ {
+ if ( !CORBA::is_nil( objAfter ) )
+ useCaseBuilder->InsertBefore( SO, objAfter ); // insert at given tag
+ else if ( !useCaseBuilder->IsUseCaseNode( SO ) )
+ useCaseBuilder->AppendTo( theFatherObject, SO ); // append to the end of list
}
-
return SO._retn();
}
//=======================================================================
//function : setName
-//purpose :
+//purpose :
//=======================================================================
void SMESH_Gen_i::SetName(SALOMEDS::SObject_ptr theSObject,
// add reference to the use case tree
// (to support tree representation customization and drag-n-drop)
- SALOMEDS::UseCaseBuilder_wrap useCaseBuilder = theStudy->GetUseCaseBuilder();
+ SALOMEDS::UseCaseBuilder_wrap useCaseBuilder = theStudy->GetUseCaseBuilder();
+ SALOMEDS::UseCaseIterator_wrap useCaseIter = useCaseBuilder->GetUseCaseIterator(theSObject);
+ for ( ; useCaseIter->More(); useCaseIter->Next() )
+ {
+ SALOMEDS::SObject_wrap curSO = useCaseIter->Value();
+ if ( curSO->Tag() == theTag )
+ return;
+ }
useCaseBuilder->AppendTo( theSObject, aReferenceSO );
}
}
CORBA::String_var hypEntry = aHypSO->GetID();
- // Find a mesh or submesh refering to theShape
+ // Find a mesh or sub-mesh referring to theShape
SALOMEDS::SObject_wrap aMeshOrSubMesh =
GetMeshOrSubmeshByShape( theStudy, theMesh, theShape );
if ( aMeshOrSubMesh->_is_nil() )