+ /* Create or retrieve an object SMESHGUI */
+ SMESHGUI::GetOrCreateSMESHGUI(parent);
+
+ // NRI : Temporary added
+ if (smeshGUI->myStudy->GetProperties()->IsLocked())
+ {
+ return false;
+ }
+ //NRI
+
+ // QAD_Viewer3d* v3d;
+ OCCViewer_Viewer3d *v3d;
+
+ Handle(AIS_InteractiveContext) ic;
+ vtkRenderer *Renderer;
+ vtkRenderWindow *RenWin;
+
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_OCC)
+ {
+ v3d =
+ ((OCCViewer_ViewFrame *) smeshGUI->myActiveStudy->
+ getActiveStudyFrame()->getRightFrame()->getViewFrame())->
+ getViewer();
+ ic = v3d->getAISContext();
+ }
+ else if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ {
+ Renderer =
+ ((VTKViewer_ViewFrame *) smeshGUI->myActiveStudy->
+ getActiveStudyFrame()->getRightFrame()->getViewFrame())->
+ getRenderer();
+ RenWin = Renderer->GetRenderWindow();
+ }
+
+ switch (theCommandID)
+ {
+ case 33: // DELETE
+ smeshGUI->OnEditDelete();
+ break;
+
+ case 113: // IMPORT
+ case 112:
+ case 111:
+ {
+ smeshGUI->Import_Document(parent, theCommandID);
+ break;
+ }
+
+ case 122: // EXPORT MED
+ case 121:
+ case 123:
+ {
+ Export_Mesh(parent, theCommandID);
+ break;
+ }
+
+ case 200: // SCALAR BAR
+ {
+ smeshGUI->DisplayScalarBar(false);
+ break;
+ }
+ case 201:
+ {
+ SMESHGUI_EditScalarBarDlg *aDlg =
+ new SMESHGUI_EditScalarBarDlg(parent, "", false);
+ aDlg->show();
+ break;
+ }
+ case 202:
+ {
+ smeshGUI->DisplayScalarBar(true);
+ break;
+ }
+
+ case 1133: // DISPLAY MODE : WireFrame, Surface, Shrink
+ case 1132:
+ case 213:
+ case 212:
+ case 211:
+ {
+ smeshGUI->SetViewMode(theCommandID);
+ break;
+ }
+
+ case 214: // UPDATE
+ {
+ smeshGUI->Update();
+ break;
+ }
+
+ case 300: // ERASE
+ {
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ {
+ // VTK
+ SALOME_ListIteratorOfListIO It(Sel->StoredIObjects());
+ for (; It.More(); It.Next())
+ {
+ Handle(SALOME_InteractiveObject) IOS = It.Value();
+ if (IOS->hasEntry())
+ {
+ Standard_Boolean res;
+ SMESH_Actor *ac =
+ smeshGUI->FindActorByEntry(IOS->getEntry(), res, true);
+ if (res)
+ smeshGUI->EraseActor(ac);
+ }
+ }
+ }
+ Sel->ClearIObjects();
+ smeshGUI->myActiveStudy->updateObjBrowser(true);
+ }
+
+ case 301: // DISPLAY
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ {
+ // VTK
+ QApplication::setOverrideCursor(Qt::waitCursor);
+ SALOMEDS::SObject_var fatherSF =
+ smeshGUI->myStudy->FindObjectID(smeshGUI->myActiveStudy->
+ getActiveStudyFrame()->entry());
+
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SALOME_ListIteratorOfListIO It(Sel->StoredIObjects());
+
+ for (; It.More(); It.Next())
+ {
+ Handle(SALOME_InteractiveObject) IObject = It.Value();
+ if (IObject->hasEntry())
+ {
+ Standard_Boolean res;
+ SMESH_Actor *ac =
+ smeshGUI->FindActorByEntry(IObject->getEntry(), res,
+ false);
+ if (res)
+ {
+ smeshGUI->DisplayActor(ac, true);
+ smeshGUI->DisplayEdges(ac);
+ smeshGUI->ChangeRepresentation(ac,
+ ac->getDisplayMode());
+ }
+ }
+ }
+ QApplication::restoreOverrideCursor();
+ }
+ break;
+ }
+
+ case 302: // DISPLAY ONLY
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ {
+ QApplication::setOverrideCursor(Qt::waitCursor);
+ vtkActorCollection *theActors = Renderer->GetActors();
+ theActors->InitTraversal();
+ vtkActor *ac = theActors->GetNextActor();
+ while (!(ac == NULL))
+ {
+ if (ac->IsA("SMESH_Actor"))
+ {
+ SMESH_Actor *anActor = SMESH_Actor::SafeDownCast(ac);
+ if (!anActor->isHighlighted())
+ {
+ //anActor->VisibilityOff();
+ //NRI- : 02/12/2002 : Fixed bugId 882
+ // anActor->EdgeDevice->VisibilityOff();
+ // anActor->EdgeShrinkDevice->VisibilityOff();
+ anActor->SetVisibility(false);
+ }
+ }
+ ac = theActors->GetNextActor();
+ }
+
+ // Display selection
+ SALOMEDS::SObject_var fatherSF =
+ smeshGUI->myStudy->FindObjectID(smeshGUI->myActiveStudy->
+ getActiveStudyFrame()->entry());
+
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SALOME_ListIteratorOfListIO It(Sel->StoredIObjects());
+
+ for (; It.More(); It.Next())
+ {
+ Handle(SALOME_InteractiveObject) IObject = It.Value();
+ SALOMEDS::SObject_var obj =
+ smeshGUI->myStudy->FindObjectID(IObject->getEntry());
+
+ VTKViewer_RenderWindowInteractor *myRenderInter =
+ ((VTKViewer_ViewFrame *) smeshGUI->myActiveStudy->
+ getActiveStudyFrame()->getRightFrame()->getViewFrame())->
+ getRWInteractor();
+ // vtkQGLRenderWindowInteractor* myRenderInter= smeshGUI->myActiveStudy->getActiveStudyFrame()->getRightFrame()->getVTKView()->getRWInteractor();
+
+ if (myRenderInter->isInViewer(IObject))
+ {
+ if (IObject->hasEntry())
+ {
+ Standard_Boolean res;
+ SMESH_Actor *ac =
+ smeshGUI->FindActorByEntry(IObject->getEntry(), res,
+ true);
+ if (res)
+ {
+ smeshGUI->DisplayActor(ac, true);
+ smeshGUI->DisplayEdges(ac);
+ smeshGUI->ChangeRepresentation(ac,
+ ac->getDisplayMode());
+ }
+ }
+ }
+ }
+ smeshGUI->myActiveStudy->updateObjBrowser(true);
+ QApplication::restoreOverrideCursor();
+ }
+ break;
+ }
+
+ case 400: // NODES
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ Sel->ClearIObjects();
+ smeshGUI->myDesktop->SetSelectionMode(1, true);
+ parent->menuBar()->setItemChecked(9010, false);
+ parent->menuBar()->setItemChecked(9011, false);
+ smeshGUI->ViewNodes();
+ SMESHGUI_NodesDlg *aDlg = new SMESHGUI_NodesDlg(parent, "", Sel);
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ break;
+ }
+
+ case 405: // MOVE NODE
+ {
+ smeshGUI->myDesktop->SetSelectionMode(1, true);
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_MoveNodesDlg *aDlg =
+ new SMESHGUI_MoveNodesDlg(parent, "", Sel);
+ break;
+ }
+
+ case 701: // COMPUTE MESH
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ int nbSel = Sel->IObjectCount();
+ if (nbSel != 1)
+ {
+ QApplication::restoreOverrideCursor();
+ break;
+ }
+
+ SMESH::SMESH_Mesh_var aM;
+ SMESH::SMESH_subMesh_var aSubM;
+ Handle(SALOME_InteractiveObject) IObject = Sel->firstIObject();
+ if (IObject->hasEntry())
+ {
+ SALOMEDS::SObject_var aMorSM =
+ smeshGUI->myStudy->FindObjectID(IObject->getEntry());
+ SALOMEDS::GenericAttribute_var anAttr;
+ SALOMEDS::AttributeIOR_var anIOR;
+ if (!aMorSM->_is_nil())
+ {
+ if (aMorSM->FindAttribute(anAttr, "AttributeIOR"))
+ {
+ anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
+ MESSAGE("SMESHGUI::OnGUIEvent - Compute mesh : IOR = "
+ << anIOR->Value())CORBA::Object_var cobj;
+ try
+ {
+ cobj = _orb->string_to_object(anIOR->Value());
+ if (CORBA::is_nil(cobj))
+ {
+ MESSAGE
+ ("SMESHGUI::OnGUIEvent - Compute mesh : nil object")}
+ }
+ catch(CORBA::COMM_FAILURE & ex)
+ {
+ MESSAGE
+ ("SMESHGUI::OnGUIEvent - Compute mesh : exception (1)")}
+ aM = SMESH::SMESH_Mesh::_narrow(cobj);
+ //aM = SMESH::SMESH_Mesh::_narrow( _orb->string_to_object(anIOR->Value()) );
+ aSubM =
+ SMESH::SMESH_subMesh::_narrow(_orb->
+ string_to_object(anIOR->Value()));
+ if (!aM->_is_nil())
+ {
+ GEOM::GEOM_Shape_var refShape =
+ smeshGUI->myStudyAPI.
+ GetShapeOnMeshOrSubMesh(aMorSM);
+ if (!refShape->_is_nil())
+ {
+ bool compute =
+ smeshGUI->myComponentMesh->
+ IsReadyToCompute(aM, refShape);
+ if (!compute)
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::
+ getDesktop(), tr("SMESH_WRN_WARNING"),
+ tr("SMESH_WRN_MISSING_PARAMETERS"),
+ tr("SMESH_BUT_YES"));
+ break;
+ }
+ try
+ {
+ smeshGUI->myComponentMesh->Compute(aM,
+ refShape);
+ smeshGUI->myStudyAPI.ModifiedMesh(aMorSM,
+ true);
+ // TO Do : change icon of all submeshes
+ }
+ catch(const SALOME::SALOME_Exception & S_ex)
+ {
+ QtCatchCorbaException(S_ex);
+ }
+ }
+ }
+ else if (!aSubM->_is_nil())
+ {
+ aM = aSubM->GetFather();
+ GEOM::GEOM_Shape_var refShape =
+ smeshGUI->myStudyAPI.
+ GetShapeOnMeshOrSubMesh(aMorSM);
+ if (!refShape->_is_nil())
+ {
+ bool compute =
+ smeshGUI->myComponentMesh->
+ IsReadyToCompute(aM, refShape);
+ if (!compute)
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::
+ getDesktop(), tr("SMESH_WRN_WARNING"),
+ tr("SMESH_WRN_MISSING_PARAMETERS"),
+ tr("SMESH_BUT_YES"));
+ break;
+ }
+ try
+ {
+ smeshGUI->myComponentMesh->Compute(aM,
+ refShape);
+ smeshGUI->myStudyAPI.ModifiedMesh(aMorSM,
+ true);
+ // TO Do : change icon of all submeshes
+ }
+ catch(const SALOME::SALOME_Exception & S_ex)
+ {
+ QtCatchCorbaException(S_ex);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // Check whether the actor for the mesh exists at least in one view
+ Standard_Boolean res;
+ SMESH_Actor *ac =
+ smeshGUI->FindActorByEntry(IObject->getEntry(), res, false);
+ if (!res)
+ smeshGUI->InitActor(aM);
+ else
+ {
+ // Check whether the actor belongs to the active view
+ VTKViewer_RenderWindowInteractor *rwInter =
+ ((VTKViewer_ViewFrame *) smeshGUI->myActiveStudy->
+ getActiveStudyFrame()->getRightFrame()->getViewFrame())->
+ getRWInteractor();
+
+ // The actor belongs to inactive view -> create a copy and add it in the active view
+ if (!rwInter->isInViewer(IObject))
+ {
+ SMESH_Actor *acCopy = SMESH_Actor::New();
+ acCopy->ShallowCopy(ac);
+
+ smeshGUI->DisplayActor(acCopy, false);
+ }
+ }
+
+ if (smeshGUI->myAutomaticUpdate)
+ {
+ SMESH_Actor *Mesh = smeshGUI->ReadScript(aM);
+ if (Mesh != NULL)
+ {
+#ifdef TRACE
+ Dump(Mesh);
+#endif
+ smeshGUI->DisplayActor(Mesh, true);
+ smeshGUI->DisplayEdges(Mesh, true);
+ smeshGUI->ChangeRepresentation(Mesh,
+ Mesh->getDisplayMode());
+ }
+ }
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ QApplication::restoreOverrideCursor();
+ break;
+ }
+
+ case 702: // ADD SUB MESH
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_AddSubMeshDlg *aDlg =
+ new SMESHGUI_AddSubMeshDlg(parent, "", Sel);
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ break;
+ }
+
+ case 703: // INIT MESH
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_InitMeshDlg *aDlg = new SMESHGUI_InitMeshDlg(parent, "", Sel);
+ break;
+ }
+
+ case 704: // EDIT Hypothesis
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_EditHypothesesDlg *aDlg =
+ new SMESHGUI_EditHypothesesDlg(parent, "", Sel);
+ break;
+ }
+
+ case 705: // EDIT Global Hypothesis
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_EditHypothesesDlg *aDlg =
+ new SMESHGUI_EditHypothesesDlg(parent, "", Sel);
+ break;
+ }
+
+ case 706: // EDIT Local Hypothesis
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_EditHypothesesDlg *aDlg =
+ new SMESHGUI_EditHypothesesDlg(parent, "", Sel);
+ break;
+ }
+
+ case 806: // ORIENTATION ELEMENTS
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ smeshGUI->myDesktop->SetSelectionMode(3, true);
+ SMESHGUI_OrientationElementsDlg *aDlg =
+ new SMESHGUI_OrientationElementsDlg(parent, "", Sel);
+ break;
+ }
+
+ case 807: // DIAGONAL INVERSION
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ Sel->ClearIObjects();
+ smeshGUI->myDesktop->SetSelectionMode(2, true);
+ SMESHGUI_DiagonalInversionDlg *aDlg =
+ new SMESHGUI_DiagonalInversionDlg(parent, "", Sel);
+ break;
+ }
+
+ case 900: // MESH INFOS
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_MeshInfosDlg *aDlg =
+ new SMESHGUI_MeshInfosDlg(parent, "", Sel);
+ break;
+ }
+
+ case 1001: // AUTOMATIC UPDATE PREFERENCES
+ {
+ parent->menuBar()->setItemChecked(1001,
+ !parent->menuBar()->isItemChecked(1001));
+ if (parent->menuBar()->isItemChecked(1001))
+ {
+ QAD_CONFIG->addSetting("SMESH:AutomaticUpdate", "true");
+ smeshGUI->myAutomaticUpdate = true;
+ }
+ else
+ {
+ QAD_CONFIG->addSetting("SMESH:AutomaticUpdate", "false");
+ smeshGUI->myAutomaticUpdate = false;
+ }
+ break;
+ }
+
+ case 1003: // MESH PREFERENCES
+ {
+ smeshGUI->SetDisplaySettings();
+ break;
+ }
+
+ case 1005:
+ {
+ QString Bold = QAD_CONFIG->getSetting("ScalarBar:Bold");
+ QString Italic = QAD_CONFIG->getSetting("ScalarBar:Italic");
+ QString Shadow = QAD_CONFIG->getSetting("ScalarBar:Shadow");
+ QString FontFamily = QAD_CONFIG->getSetting("ScalarBar:FontFamily");
+ QString Orientation = QAD_CONFIG->getSetting("ScalarBar:Orientation");
+ float Width = QAD_CONFIG->getSetting("ScalarBar:Width").toFloat();
+ float Height = QAD_CONFIG->getSetting("ScalarBar:Height").toFloat();
+ int NumberOfLabels =
+ QAD_CONFIG->getSetting("ScalarBar:NumberOfLabels").toInt();
+ int NumberOfColors =
+ QAD_CONFIG->getSetting("ScalarBar:NumberOfColors").toInt();
+
+ if (Width == 0)
+ Width = 0.17;
+ if (Height == 0)
+ Height = 0.8;
+ if (NumberOfLabels == 0)
+ NumberOfLabels = 5;
+ if (NumberOfColors == 0)
+ NumberOfColors = 64;
+
+ SMESHGUI_Preferences_ScalarBarDlg *aDlg =
+ new SMESHGUI_Preferences_ScalarBarDlg(parent, "", true);
+
+ if (Bold.compare("true") == 0)
+ aDlg->Bold->setChecked(true);
+ else
+ aDlg->Bold->setChecked(false);
+ if (Italic.compare("true") == 0)
+ aDlg->Italic->setChecked(true);
+ else
+ aDlg->Italic->setChecked(false);
+ if (Shadow.compare("true") == 0)
+ aDlg->Shadow->setChecked(true);
+ else
+ aDlg->Shadow->setChecked(false);
+
+ if (Orientation.compare("Horizontal") == 0)
+ aDlg->RadioHoriz->setChecked(true);
+ else
+ aDlg->RadioVert->setChecked(true);
+
+ int NbItems = aDlg->ComboBox1->count();
+ int i = 0;
+ aDlg->ComboBox1->setCurrentItem(i);
+ while (i < NbItems)
+ {
+ if (FontFamily.compare(aDlg->ComboBox1->text(i)) == 0)
+ aDlg->ComboBox1->setCurrentItem(i);
+ i++;
+ }
+
+ aDlg->LineEditWidth->setText(QString("%1").arg(Width));
+ aDlg->LineEditHeight->setText(QString("%1").arg(Height));
+
+ aDlg->SpinBoxLabels->setValue(NumberOfLabels);
+ aDlg->SpinBoxColors->setValue(NumberOfColors);
+
+ aDlg->show();
+ if (aDlg->result())
+ {
+ if (aDlg->RadioHoriz->isChecked())
+ Orientation = "Horizontal";
+ else
+ Orientation = "Vertical";
+ if (aDlg->Bold->isChecked())
+ Bold = "true";
+ else
+ Bold = "false";
+ if (aDlg->Italic->isChecked())
+ Italic = "true";
+ else
+ Italic = "false";
+ if (aDlg->Shadow->isChecked())
+ Shadow = "true";
+ else
+ Shadow = "false";
+
+ FontFamily = aDlg->ComboBox1->currentText();
+ Width = aDlg->LineEditWidth->text().toFloat();
+ Height = aDlg->LineEditHeight->text().toFloat();
+ NumberOfColors = aDlg->SpinBoxColors->text().toInt();
+ NumberOfLabels = aDlg->SpinBoxLabels->text().toInt();
+
+ vtkScalarBarActor *aScalarBar = smeshGUI->GetScalarBar();
+ if (aScalarBar != NULL)
+ {
+ smeshGUI->SetSettingsScalarBar(aScalarBar, Bold, Italic, Shadow,
+ FontFamily, Orientation,
+ Width, Height, NumberOfColors, NumberOfLabels);
+ }
+
+ QAD_CONFIG->addSetting("ScalarBar:Bold", Bold);
+ QAD_CONFIG->addSetting("ScalarBar:Italic", Italic);
+ QAD_CONFIG->addSetting("ScalarBar:Shadow", Shadow);
+ QAD_CONFIG->addSetting("ScalarBar:FontFamily", FontFamily);
+ QAD_CONFIG->addSetting("ScalarBar:Orientation", Orientation);
+ QAD_CONFIG->addSetting("ScalarBar:Width", Width);
+ QAD_CONFIG->addSetting("ScalarBar:Height", Height);
+ QAD_CONFIG->addSetting("ScalarBar:NumberOfLabels", NumberOfLabels);
+ QAD_CONFIG->addSetting("ScalarBar:NumberOfColors", NumberOfColors);
+ }
+ break;
+ }
+
+ case 1100: // EDIT HYPOTHESIS
+ {
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ int nbSel = Sel->IObjectCount();
+
+ if (nbSel == 1)
+ {
+ Standard_Boolean res;
+ SMESH::SMESH_Hypothesis_var Hyp =
+ smeshGUI->ConvertIOinSMESHHypothesis(Sel->firstIObject(), res);
+
+ /* Look for all mesh objects that have this hupothesis affected in order to flag as ModifiedMesh */
+ /* At end below '...->updateObjBrowser(true)' will change icon of mesh objects */
+ /* Warning : however by internal mechanism all subMeshes icons are changed ! */
+ SALOMEDS::Study::ListOfSObject_var listSOmesh =
+ smeshGUI->GetMeshesUsingAlgoOrHypothesis(Hyp);
+
+ if (res)
+ {
+ QString Name = Hyp->GetName();
+
+ if (Name.compare("LocalLength") == 0)
+ {
+ SMESH::SMESH_LocalLength_var LL =
+ SMESH::SMESH_LocalLength::_narrow(Hyp);
+ double beforeLength = LL->GetLength();
+ double Length = smeshGUI->Parameter(res,
+ beforeLength,
+ tr("SMESH_LOCAL_LENGTH_HYPOTHESIS"),
+ tr("SMESH_VALUE"),
+ 1.0E-5, 1E6, 6);
+ if (res && Length != beforeLength)
+ {
+ LL->SetLength(Length);
+ for (int i = 0; i < listSOmesh->length(); i++)
+ {
+ smeshGUI->GetStudyAPI().ModifiedMesh(listSOmesh[i],
+ false);
+ }
+ break;
+ }
+
+ }
+ else if (Name.compare("NumberOfSegments") == 0)
+ {
+ SMESH::SMESH_NumberOfSegments_var NOS =
+ SMESH::SMESH_NumberOfSegments::_narrow(Hyp);
+ int beforeNbSeg = NOS->GetNumberOfSegments();
+ int NbSeg = smeshGUI->Parameter(res,
+ beforeNbSeg,
+ tr("SMESH_NB_SEGMENTS_HYPOTHESIS"),
+ tr("SMESH_VALUE"),
+ 1, 1000000);
+
+ if (res && NbSeg != beforeNbSeg)
+ {
+ NOS->SetNumberOfSegments(NbSeg);
+ for (int i = 0; i < listSOmesh->length(); i++)
+ {
+ SALOMEDS::SObject_var SO = listSOmesh[i];
+ smeshGUI->GetStudyAPI().ModifiedMesh(listSOmesh[i],
+ false);
+ }
+ break;
+ }
+
+ }
+ else if (Name.compare("MaxElementArea") == 0)
+ {
+ SMESH::SMESH_MaxElementArea_var MEA =
+ SMESH::SMESH_MaxElementArea::_narrow(Hyp);
+ double beforeMaxArea = MEA->GetMaxElementArea();
+ double MaxArea = smeshGUI->Parameter(res,
+ beforeMaxArea,
+ tr("SMESH_MAX_ELEMENT_AREA_HYPOTHESIS"),
+ tr("SMESH_VALUE"),
+ 1.0E-5, 1E6, 6);
+ if (res && MaxArea != beforeMaxArea)
+ {
+ MEA->SetMaxElementArea(MaxArea);
+ for (int i = 0; i < listSOmesh->length(); i++)
+ {
+ smeshGUI->GetStudyAPI().ModifiedMesh(listSOmesh[i],
+ false);
+ }
+ break;
+ }
+
+ }
+ else if (Name.compare("MaxElementVolume") == 0)
+ {
+ SMESH::SMESH_MaxElementVolume_var MEV =
+ SMESH::SMESH_MaxElementVolume::_narrow(Hyp);
+ double beforeMaxVolume = MEV->GetMaxElementVolume();
+ double MaxVolume = smeshGUI->Parameter(res,
+ beforeMaxVolume,
+ tr("SMESH_MAX_ELEMENT_VOLUME_HYPOTHESIS"),
+ tr("SMESH_VALUE"),
+ 1.0E-5, 1E6, 6);
+ if (res && MaxVolume != beforeMaxVolume)
+ {
+ MEV->SetMaxElementVolume(MaxVolume);
+ for (int i = 0; i < listSOmesh->length(); i++)
+ {
+ smeshGUI->GetStudyAPI().ModifiedMesh(listSOmesh[i],
+ false);
+ }
+ break;
+ }
+
+ }
+ else if (Name.compare("Regular_1D") == 0)
+ {
+ }
+ else if (Name.compare("MEFISTO_2D") == 0)
+ {
+ }
+ else
+ {
+ }
+
+ }
+ }
+ break;
+ }
+
+ case 1101: // RENAME
+ {
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SALOME_ListIteratorOfListIO It(Sel->StoredIObjects());
+ for (; It.More(); It.Next())
+ {
+ Handle(SALOME_InteractiveObject) IObject = It.Value();
+
+ SALOMEDS::SObject_var obj =
+ smeshGUI->myStudy->FindObjectID(IObject->getEntry());
+ SALOMEDS::GenericAttribute_var anAttr;
+ SALOMEDS::AttributeName_var aName;
+ if (!obj->_is_nil())
+ {
+ if (obj->FindAttribute(anAttr, "AttributeName"))
+ {
+ aName = SALOMEDS::AttributeName::_narrow(anAttr);
+ QString newName = QString(aName->Value());
+ newName =
+ SALOMEGUI_NameDlg::getName(QAD_Application::
+ getDesktop(), newName);
+ if (!newName.isEmpty())
+ {
+ QApplication::setOverrideCursor(Qt::waitCursor);
+ smeshGUI->myActiveStudy->renameIObject(IObject,
+ newName);
+ }
+ QApplication::restoreOverrideCursor();
+ }
+ }
+ }
+ break;
+ }
+
+ case 1102: // REMOVE HYPOTHESIS / ALGORITHMS
+ {
+ QApplication::setOverrideCursor(Qt::waitCursor);
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SALOME_ListIteratorOfListIO It(Sel->StoredIObjects());
+ for (int i = 0; It.More(); It.Next(), i++)
+ {
+ Handle(SALOME_InteractiveObject) IObject = It.Value();
+ smeshGUI->RemoveHypothesisOrAlgorithmOnMesh(IObject);
+ }
+ Sel->ClearIObjects();
+ smeshGUI->myActiveStudy->updateObjBrowser(true);
+ QApplication::restoreOverrideCursor();
+ break;
+ }
+
+ case 401: // GEOM::EDGE
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ Sel->ClearIObjects();
+ smeshGUI->myDesktop->SetSelectionMode(1, true);
+ parent->menuBar()->setItemChecked(9010, false);
+ parent->menuBar()->setItemChecked(9011, false);
+ smeshGUI->ViewNodes();
+ SMESHGUI_AddEdgeDlg *aDlg =
+ new SMESHGUI_AddEdgeDlg(parent, "", Sel);
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ break;
+ }
+ case 4021: // TRIANGLE
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ Sel->ClearIObjects();
+ smeshGUI->myDesktop->SetSelectionMode(1, true);
+ parent->menuBar()->setItemChecked(9010, false);
+ parent->menuBar()->setItemChecked(9011, false);
+ smeshGUI->ViewNodes();
+ SMESHGUI_AddFaceDlg *aDlg =
+ new SMESHGUI_AddFaceDlg(parent, "", Sel, 3);
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ break;
+ }
+ case 4022: // QUAD
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ Sel->ClearIObjects();
+ smeshGUI->myDesktop->SetSelectionMode(1, true);
+ parent->menuBar()->setItemChecked(9010, false);
+ parent->menuBar()->setItemChecked(9011, false);
+ smeshGUI->ViewNodes();
+ SMESHGUI_AddFaceDlg *aDlg =
+ new SMESHGUI_AddFaceDlg(parent, "", Sel, 4);
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ break;
+ }
+ case 4031: // TETRA
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ Sel->ClearIObjects();
+ smeshGUI->myDesktop->SetSelectionMode(1, true);
+ parent->menuBar()->setItemChecked(9010, false);
+ parent->menuBar()->setItemChecked(9011, false);
+ smeshGUI->ViewNodes();
+ SMESHGUI_AddVolumeDlg *aDlg =
+ new SMESHGUI_AddVolumeDlg(parent, "", Sel, 4);
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ break;
+ }
+ case 4032: // HEXA
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ Sel->ClearIObjects();
+ smeshGUI->myDesktop->SetSelectionMode(1, true);
+ parent->menuBar()->setItemChecked(9010, false);
+ parent->menuBar()->setItemChecked(9011, false);
+ smeshGUI->ViewNodes();
+ SMESHGUI_AddVolumeDlg *aDlg =
+ new SMESHGUI_AddVolumeDlg(parent, "", Sel, 8);
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ break;
+ }
+
+ case 4041: // REMOVES NODES
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ Sel->ClearIObjects();
+ smeshGUI->myDesktop->SetSelectionMode(1, true);
+ parent->menuBar()->setItemChecked(9010, false);
+ parent->menuBar()->setItemChecked(9011, false);
+ smeshGUI->ViewNodes();
+ SMESHGUI_RemoveNodesDlg *aDlg =
+ new SMESHGUI_RemoveNodesDlg(parent, "", Sel);
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ break;
+ }
+ case 4042: // REMOVES ELEMENTS
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ Sel->ClearIObjects();
+ smeshGUI->myDesktop->SetSelectionMode(3, true);
+ SMESHGUI_RemoveElementsDlg *aDlg =
+ new SMESHGUI_RemoveElementsDlg(parent, "", Sel);
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ break;
+ }
+
+ case 5000: // HYPOTHESIS - ALGO
+ {
+ smeshGUI->CreateAlgorithm("Regular_1D", "Wire Discretisation");
+ break;
+ }
+ case 5010:
+ {
+ smeshGUI->CreateAlgorithm("MEFISTO_2D", "Triangle (Mefisto)");
+ break;
+ }
+ case 5011:
+ {
+ smeshGUI->CreateAlgorithm("Quadrangle_2D", "Quadrangle (Mapping)");
+ break;
+ }
+ case 5020:
+ {
+ smeshGUI->CreateAlgorithm("Hexa_3D", "Hexahedron (i,j,k)");
+ break;
+ }
+ case 5021:
+ {
+ smeshGUI->CreateAlgorithm("NETGEN_3D", "Tetrahedron (Netgen)");
+ break;
+ }
+
+ case 5030: // HYPOTHESIS - LOCAL LENGTH
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_LocalLengthDlg *aDlg = new SMESHGUI_LocalLengthDlg(parent, "");
+ break;
+ }
+ case 5031: // HYPOTHESIS - NB SEGMENTS
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_NbSegmentsDlg *aDlg = new SMESHGUI_NbSegmentsDlg(parent, "");
+ break;
+ }
+
+ case 5032: // HYPOTHESIS - MAX ELEMENT AREA
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_MaxElementAreaDlg *aDlg =
+ new SMESHGUI_MaxElementAreaDlg(parent, "");
+ break;
+ }
+
+ case 5033: // HYPOTHESIS - MAX ELEMENT VOLUME
+ {
+ smeshGUI->EmitSignalDeactivateDialog();
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_MaxElementVolumeDlg *aDlg =
+ new SMESHGUI_MaxElementVolumeDlg(parent, "");
+ break;
+ }
+
+ case 5034: // HYPOTHESIS - LENGTH FROM EDGES
+ {
+ SMESH::SMESH_Hypothesis_var Hyp;
+ try
+ {
+ Hyp = smeshGUI->myComponentMesh->CreateHypothesis("LengthFromEdges", smeshGUI->myStudyId);
+
+ if (!Hyp->_is_nil())
+ {
+ SALOMEDS::SObject_var SHyp = smeshGUI->myStudyAPI.AddNewHypothesis(Hyp);
+ smeshGUI->myStudyAPI.SetName(SHyp, "LengthFromEdges");
+ }
+ }
+ catch(const SALOME::SALOME_Exception & S_ex)
+ {
+ QtCatchCorbaException(S_ex);
+ }
+ smeshGUI->myActiveStudy->updateObjBrowser(true);
+
+ break;
+ }
+
+ case 6016: // CONTROLS
+ case 6015:
+ case 6014:
+ case 6013:
+ case 6012:
+ case 6011:
+ case 6001:
+ {
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ int nbSel = Sel->IObjectCount();
+ if (nbSel != 1)
+ break;
+ smeshGUI->Control(theCommandID);
+ break;
+ }
+
+ case 6002:
+ {
+ if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
+ VIEW_VTK)
+ { //VTK
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ SMESHGUI_EdgesConnectivityDlg *Dlg =
+ new SMESHGUI_EdgesConnectivityDlg(parent, "", Sel);
+ }
+ else
+ {
+ QApplication::restoreOverrideCursor();
+ QAD_MessageBox::warn1(QAD_Application::getDesktop(),
+ tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"),
+ tr("SMESH_BUT_YES"));
+ }
+ break;
+ }
+
+ case 9010:
+ {
+ if (!parent->menuBar()->isItemChecked(9010))
+ {
+ QApplication::setOverrideCursor(Qt::waitCursor);
+ parent->menuBar()->setItemChecked(9011, false);
+
+ smeshGUI->EraseSimulationActors();
+ smeshGUI->mySimulationActors2D = vtkActor2DCollection::New();
+
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ int nbSel = Sel->IObjectCount();
+ if (nbSel == 1)
+ {
+ Standard_Boolean res;
+ SMESH_Actor *MeshActor =
+ smeshGUI->FindActorByEntry(Sel->firstIObject()->getEntry(),
+ res, true);
+ if (res)
+ {
+ parent->menuBar()->setItemChecked(9010,
+ !parent->menuBar()->isItemChecked(9010));
+
+ // It's necessary to display SMDS IDs instead of VTK ones, so
+ // vtkIdFilter is unacceptable here. We have to do it manually :(
+ vtkUnstructuredGrid *ptGrid = vtkUnstructuredGrid::New();
+ ptGrid->CopyStructure(MeshActor->DataSource);
+
+ int numPts = MeshActor->DataSource->GetNumberOfPoints();
+
+ // Loop over points and generate ids
+ vtkIntArray *ptIds = vtkIntArray::New();
+ ptIds->SetNumberOfValues(numPts);
+
+ for (int id = 0; id < numPts; id++)
+ {
+ int idSMDS = MeshActor->GetIdSMESHDSNode(id);
+ ptIds->SetValue(id, idSMDS);
+ }
+
+// mpv porting vtk4.2.2
+ // vtkScalars* newScalars = vtkScalars::New();
+ // newScalars->SetData(ptIds);
+ // ptGrid->GetPointData()->SetScalars(newScalars);
+ ptGrid->GetPointData()->SetScalars(ptIds);
+ // newScalars->Delete();
+// mpv
+ ptIds->Delete();
+
+ vtkMaskPoints *mask = vtkMaskPoints::New();
+ mask->SetInput(ptGrid);
+ mask->SetOnRatio(1);
+ // mask->SetMaximumNumberOfPoints( 50 );
+ // mask->RandomModeOn();
+
+ vtkSelectVisiblePoints *visPts =
+ vtkSelectVisiblePoints::New();
+ visPts->SetInput(mask->GetOutput());
+ visPts->SetRenderer(((VTKViewer_ViewFrame *) smeshGUI->
+ myActiveStudy->getActiveStudyFrame()->
+ getRightFrame()->getViewFrame())->getRenderer());
+ //visPts->SetSelectInvisible(1);
+ visPts->SelectInvisibleOff();
+ visPts->SetTolerance(0.1);
+
+ vtkLabeledDataMapper *ldm = vtkLabeledDataMapper::New();
+ ldm->SetInput(visPts->GetOutput());
+ ldm->SetLabelFormat("%g");
+ ldm->SetLabelModeToLabelScalars();
+ //ldm->SetLabelModeToLabelFieldData();
+
+ ldm->SetFontFamilyToTimes();
+ ldm->SetFontSize(6 * parent->font().pointSize() / 5);
+ ldm->SetBold(1);
+ ldm->SetItalic(0);
+ ldm->SetShadow(0);
+
+ vtkActor2D *pointLabels = vtkActor2D::New();
+ pointLabels->SetMapper(ldm);
+ pointLabels->GetProperty()->SetColor(0, 1, 0);
+
+ visPts->Delete();
+ ldm->Delete();
+ smeshGUI->mySimulationActors2D->AddItem(pointLabels);
+ ((VTKViewer_ViewFrame *) smeshGUI->myActiveStudy->
+ getActiveStudyFrame()->getRightFrame()->
+ getViewFrame())->getRenderer()->AddActor2D(pointLabels);
+ }
+ }
+ }
+ else
+ {
+ QApplication::setOverrideCursor(Qt::waitCursor);
+ parent->menuBar()->setItemChecked(9010,
+ !parent->menuBar()->isItemChecked(9010));
+ smeshGUI->EraseSimulationActors();
+ smeshGUI->ScalarVisibilityOff();
+ }
+ QApplication::restoreOverrideCursor();
+ break;
+ }
+ case 9011:
+ {
+ if (!parent->menuBar()->isItemChecked(9011))
+ {
+ QApplication::setOverrideCursor(Qt::waitCursor);
+ parent->menuBar()->setItemChecked(9010, false);
+
+ smeshGUI->EraseSimulationActors();
+ smeshGUI->mySimulationActors2D = vtkActor2DCollection::New();
+
+ SALOME_Selection *Sel =
+ SALOME_Selection::Selection(smeshGUI->myActiveStudy->
+ getSelection());
+ int nbSel = Sel->IObjectCount();
+ if (nbSel == 1)
+ {
+ Standard_Boolean res;
+ SMESH_Actor *MeshActor =
+ smeshGUI->FindActorByEntry(Sel->firstIObject()->getEntry(),
+ res, true);
+ if (res)
+ {
+ parent->menuBar()->setItemChecked(9011,
+ !parent->menuBar()->isItemChecked(9011));
+
+ // It's necessary to display SMDS IDs instead of VTK ones, so
+ // vtkIdFilter is unacceptable here. We have to do it manually :(
+ vtkUnstructuredGrid *elGrid = vtkUnstructuredGrid::New();
+ elGrid->CopyStructure(MeshActor->DataSource);
+
+ int numCells = MeshActor->DataSource->GetNumberOfCells();
+
+ // Loop over points and generate ids
+ vtkIntArray *cellIds = vtkIntArray::New();
+ cellIds->SetNumberOfValues(numCells);
+
+ for (int id = 0; id < numCells; id++)
+ {
+ int idSMDS = MeshActor->GetIdSMESHDSElement(id);
+ cellIds->SetValue(id, idSMDS);
+ }
+
+// mpv porting vk4.2.2
+ // vtkScalars* newScalars = vtkScalars::New();
+ // newScalars->SetData(cellIds);
+ elGrid->GetCellData()->SetScalars(cellIds);
+ // elGrid->GetCellData()->SetScalars(newScalars);
+ // newScalars->Delete();
+//mpv
+
+ cellIds->Delete();
+
+ vtkCellCenters *cc = vtkCellCenters::New();
+ cc->SetInput(elGrid);
+
+ vtkSelectVisiblePoints *visCells =
+ vtkSelectVisiblePoints::New();
+ visCells->SetInput(cc->GetOutput());
+ visCells->SetRenderer(((VTKViewer_ViewFrame *) smeshGUI->
+ myActiveStudy->getActiveStudyFrame()->
+ getRightFrame()->getViewFrame())->getRenderer());
+ visCells->SelectInvisibleOff();
+ visCells->SetTolerance(0.1);
+ // visCells->SetSelectInvisible(1);
+
+ vtkLabeledDataMapper *ldm = vtkLabeledDataMapper::New();
+ ldm->SetInput(visCells->GetOutput());
+ ldm->SetLabelFormat("%g");
+ ldm->SetLabelModeToLabelScalars();
+
+ ldm->SetFontFamilyToTimes();
+ ldm->SetFontSize(6 * parent->font().pointSize() / 5);
+ ldm->SetBold(1);
+ ldm->SetItalic(0);
+ ldm->SetShadow(0);
+
+ vtkActor2D *cellLabels = vtkActor2D::New();
+ cellLabels->SetMapper(ldm);
+ cellLabels->GetProperty()->SetColor(1, 0, 0);
+
+ cc->Delete();
+ visCells->Delete();
+ ldm->Delete();
+ smeshGUI->mySimulationActors2D->AddItem(cellLabels);
+ ((VTKViewer_ViewFrame *) smeshGUI->myActiveStudy->
+ getActiveStudyFrame()->getRightFrame()->
+ getViewFrame())->getRenderer()->AddActor2D(cellLabels);
+ }
+ }
+ }
+ else
+ {
+ QApplication::setOverrideCursor(Qt::waitCursor);
+ parent->menuBar()->setItemChecked(9011,
+ !parent->menuBar()->isItemChecked(9011));
+ smeshGUI->EraseSimulationActors();
+ smeshGUI->ScalarVisibilityOff();
+ }
+ QApplication::restoreOverrideCursor();
+ break;
+ }
+
+ case 10001: // DISPLAY MODE PREFERENCE
+ {
+ parent->menuBar()->setItemChecked(10001,
+ !parent->menuBar()->isItemChecked(10001));
+ parent->menuBar()->setItemChecked(10002, false);
+ parent->menuBar()->setItemChecked(10003, false);
+ QAD_CONFIG->addSetting("SMESH:DisplayMode", "Wireframe");
+ break;
+ }
+ case 10002:
+ {
+ parent->menuBar()->setItemChecked(10002,
+ !parent->menuBar()->isItemChecked(10002));
+ parent->menuBar()->setItemChecked(10001, false);
+ parent->menuBar()->setItemChecked(10003, false);
+ QAD_CONFIG->addSetting("SMESH:DisplayMode", "Shading");
+ break;
+ }
+ case 10003:
+ {
+ parent->menuBar()->setItemChecked(10003,
+ !parent->menuBar()->isItemChecked(10003));
+ parent->menuBar()->setItemChecked(10002, false);
+ parent->menuBar()->setItemChecked(10001, false);
+ QAD_CONFIG->addSetting("SMESH:DisplayMode", "Shrink");
+ break;
+ }
+
+ }
+
+ smeshGUI->myActiveStudy->updateObjBrowser(true);
+ return true;
+}
+
+//=============================================================================
+/*! function : GetMeshesUsingAlgoOrHypothesis()
+ * purpose : return a list of Study objects (mesh kind) that have 'AlgoOrHyp' affected.
+ * : However is supposed here that father of father of an hypothesis is a Mesh Object.
+ */
+//=============================================================================
+SALOMEDS::Study::ListOfSObject *
+ SMESHGUI::GetMeshesUsingAlgoOrHypothesis(SMESH::
+ SMESH_Hypothesis_ptr AlgoOrHyp)
+{
+ SALOMEDS::Study::ListOfSObject_var listSOmesh =
+ new SALOMEDS::Study::ListOfSObject;
+ listSOmesh->length(0);
+ unsigned int index = 0;
+ if (!AlgoOrHyp->_is_nil())
+ {
+ SALOMEDS::SObject_var SO_Hypothesis =
+ smeshGUI->GetStudyAPI().FindHypothesisOrAlgorithms(AlgoOrHyp);
+ if (!SO_Hypothesis->_is_nil())
+ {
+ SALOMEDS::Study::ListOfSObject_var listSO =
+ smeshGUI->myStudy->FindDependances(SO_Hypothesis);
+ for (unsigned int i = 0; i < listSO->length(); i++)
+ {
+ SALOMEDS::SObject_var SO = listSO[i];
+ if (!SO->_is_nil())
+ {
+ SALOMEDS::SObject_var SOfatherFather =
+ SO->GetFather()->GetFather();
+ if (!SOfatherFather->_is_nil())
+ {
+ index++;
+ listSOmesh->length(index);
+ listSOmesh[index - 1] = SOfatherFather;
+ }
+ }
+ }
+ }
+ }
+ return listSOmesh._retn();
+}