+ SALOMEDS::StudyBuilder_var aStudyBuilder = GetStudyDocument()->NewBuilder();
+ aStudyBuilder->NewCommand(); // There is a transaction
+ try {
+ if (GetCResult()->GetInput() == NULL)
+ throw std::runtime_error("Mesh_i::Build - GetCResult()->GetInput() == NULL !!!");
+ if (!theRestoring) {
+ myPresentType = VISU::PresentationType(VISU::GetResourceMgr()->integerValue("VISU" , "mesh_represent", 2));
+ if(myEntity == VISU::NODE_ENTITY)
+ myPresentType = VISU::POINT;
+ SetName(GenerateName().latin1(), false);
+ myCellColor.R = 0.0; myCellColor.G = myCellColor.B = 1.0;
+ myNodeColor.R = myNodeColor.G = 1.0; myNodeColor.B = 1.0;
+ myLinkColor.R = myLinkColor.G = myLinkColor.B = 83/255.;
+ }
+
+ if(myEntity >= 0)
+ if(mySubMeshName == "")
+ myType = VISU::TENTITY;
+ else
+ myType = VISU::TFAMILY;
+ else
+ myType = VISU::TGROUP;
+
+ if(MYDEBUG) MESSAGE("Mesh_i::Build - myType = "<<myType);
+ QString aComment,aTmp;
+
+ std::string aMeshName = GetCMeshName();
+ VISU::TEntity anEntity = VISU::TEntity(myEntity);
+
+ VISU::Storable::TRestoringMap aRestoringMap;
+ aRestoringMap["myMeshName"] = GetCMeshName();
+
+ VISU::PUnstructuredGridIDMapper anIDMapper;
+ VISU::Result_i::PInput anInput = GetCResult()->GetInput();
+ switch(myType){
+ case VISU::TENTITY :
+ anIDMapper = anInput->GetMeshOnEntity(aMeshName,
+ anEntity);//jfa IPAL9284
+ aRestoringMap["myComment"] = "ENTITY";
+ aRestoringMap["myId"] = QString::number(anEntity);
+ break;
+ case VISU::TFAMILY :
+ anIDMapper = anInput->GetFamilyOnEntity(aMeshName,
+ anEntity,
+ mySubMeshName);
+ aRestoringMap["myComment"] = "FAMILY";
+ aRestoringMap["myEntityId"] = QString::number(anEntity);
+ aRestoringMap["myName"] = mySubMeshName;
+ break;
+ case VISU::TGROUP :
+ anIDMapper = anInput->GetMeshOnGroup(GetCMeshName(),
+ mySubMeshName);
+ aRestoringMap["myComment"] = "GROUP";
+ aRestoringMap["myName"] = mySubMeshName;
+ break;
+ }
+ if(!anIDMapper)
+ throw std::runtime_error("Mesh_i::Build - !anIDMapper !!!");
+
+ myMeshPL->SetUnstructuredGridIDMapper(anIDMapper);
+
+ string anEntry = GetCResult()->GetEntry(aRestoringMap);
+ if(anEntry == "")
+ throw std::runtime_error("Mesh_i::Build - anEntry was not found !!!");
+ SALOMEDS::SObject_var aSObject = GetStudyDocument()->FindObjectID(anEntry.c_str());
+
+ if(!theRestoring) { //Setting IOR on the label
+ myMeshPL->Init();
+ string aResultEntry = GetCResult()->GetEntry();
+ SALOMEDS::StudyBuilder_var aStudyBuilder = GetStudyDocument()->NewBuilder();
+ SALOMEDS::GenericAttribute_var anAttr = aStudyBuilder->FindOrCreateAttribute(aSObject,"AttributeIOR");
+ SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
+ CORBA::String_var aString = GetID();
+ anIOR->SetValue(aString);
+ }
+
+ // Set icon
+ SALOMEDS::GenericAttribute_var anAttr;
+ SALOMEDS::AttributePixMap_var aPixmap;
+
+ anAttr = aStudyBuilder->FindOrCreateAttribute(aSObject, "AttributePixMap");
+ aPixmap = SALOMEDS::AttributePixMap::_narrow( anAttr );
+ aPixmap->SetPixMap("ICON_TREE_MESH");
+
+ }catch(std::exception& exc){
+ INFOS("Follow exception was occured :\n"<<exc.what());
+ return NULL;
+ }catch(...){
+ INFOS("Unknown exception was occured!");
+ return NULL;
+ }
+ aStudyBuilder->CommitCommand();
+ return this;
+}
+
+
+//---------------------------------------------------------------
+void
+VISU::Mesh_i
+::SameAs(const VISU::Prs3d_i* theOrigin)
+{
+ return; // "SameAs" command for mesh is not valid in current architecture
+}
+
+
+//---------------------------------------------------------------
+void
+VISU::Mesh_i
+::RemoveFromStudy()
+{
+ struct TRemoveFromStudy: public SALOME_Event
+ {
+ VISU::Mesh_i* myRemovable;
+ TRemoveFromStudy(VISU::Mesh_i* theRemovable):
+ myRemovable(theRemovable)
+ {}
+
+ virtual
+ void
+ Execute()
+ {
+ VISU::RemoveFromStudy(myRemovable->GetSObject());
+ myRemovable->TSuperClass::RemoveFromStudy();
+ }
+ };
+
+ // Unset icon
+ SALOMEDS::StudyBuilder_var aStudyBuilder = GetStudyDocument()->NewBuilder();
+ aStudyBuilder->RemoveAttribute(GetSObject(), "AttributePixMap");
+
+ ProcessVoidEvent(new TRemoveFromStudy(this));
+}