- 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();
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-void SMESHGUI::Export_Mesh(QAD_Desktop * parent, int theCommandID)
-{
- SALOME_Selection *Sel =
- SALOME_Selection::Selection(smeshGUI->myActiveStudy->getSelection());
- int nbSel = Sel->IObjectCount();
- if (nbSel == 1)
- {
- Standard_Boolean res;
- Handle(SALOME_InteractiveObject) IObject = Sel->firstIObject();
- SMESH::SMESH_Mesh_var aMesh = smeshGUI->ConvertIOinMesh(IObject, res);
- if (res)
- {
- QString filename;
- if (theCommandID == 122)
- { // EXPORT MED
- QString filename = QAD_FileDlg::getFileName(parent,
- "",
- tr("MED files (*.med)"),
- tr("Export mesh"),
- false);
- if (!filename.isEmpty())
- {
- QApplication::setOverrideCursor(Qt::waitCursor);
- aMesh->Export(filename.latin1(), "MED");
- QApplication::restoreOverrideCursor();
- }
- }
- else if (theCommandID == 121)
- { // EXPORT DAT
- QString filename = QAD_FileDlg::getFileName(parent,
- "",
- tr("DAT files (*.dat)"),
- tr("Export mesh"),
- false);
- if (!filename.isEmpty())
- {
- QApplication::setOverrideCursor(Qt::waitCursor);
- aMesh->Export(filename.latin1(), "DAT");
- QApplication::restoreOverrideCursor();
- }
- }
- else if (theCommandID == 123)
- { // EXPORT UNV
- QString filename = QAD_FileDlg::getFileName(parent,
- "",
- tr("IDEAS files (*.unv)"),
- tr("Export mesh"),
- false);
- if (!filename.isEmpty())
- {
- QApplication::setOverrideCursor(Qt::waitCursor);
- aMesh->Export(filename.latin1(), "UNV");
- QApplication::restoreOverrideCursor();
- }
- }
- else
- aMesh->Export(filename.latin1(), "DAT");
-
- if (IObject->hasEntry())
- {
- MESSAGE("---");
- SALOMEDS::SObject_var SO =
- smeshGUI->myStudy->FindObjectID(IObject->getEntry());
- SALOMEDS::GenericAttribute_var anAttr;
- SALOMEDS::AttributeComment_var aFileName;
-
- SALOMEDS::StudyBuilder_var aStudyBuilder =
- smeshGUI->myStudy->NewBuilder();
-
- anAttr =
- aStudyBuilder->FindOrCreateAttribute(SO, "AttributeComment");
- aFileName = SALOMEDS::AttributeComment::_narrow(anAttr);
- aFileName->SetValue(filename.latin1());
-
- // Add a MEDFILE attribute to make selection in Efficas
- if (theCommandID == 122)
- { // EXPORT MED
- QString medfilename="FICHIERMED"+filename;
- anAttr = aStudyBuilder->FindOrCreateAttribute(SO, "AttributeComment");
- SALOMEDS::AttributeComment_var MEDFileName;
- MEDFileName = SALOMEDS::AttributeComment::_narrow(anAttr);
- MEDFileName->SetValue(medfilename.latin1());
- } // EXPORT MED
- }
-
- QApplication::restoreOverrideCursor();
- }
- }
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-void SMESHGUI::Import_Document(QAD_Desktop * parent, int theCommandID)
-{
- QString filter;
- string myExtension;
-
- if (theCommandID == 113)
- {
- filter = tr("MED files (*.med)");
- myExtension = string("MED");
- }
- else if (theCommandID == 112)
- {
- filter = tr("IDEAS files (*.unv)");
- myExtension = string("UNV");
- }
- else if (theCommandID == 111)
- {
- filter = tr("DAT files (*.dat)");
- myExtension = string("DAT");
- }
-
- QString filename = QAD_FileDlg::getFileName(parent, "", filter,
- tr("Import document"), true);
-
- if (!filename.isEmpty())
- {
- QApplication::setOverrideCursor(Qt::waitCursor);
- try
- {
- if (!myComponentMesh->_is_nil())
- {
- SMESH::SMESH_Mesh_var aMesh =
- myComponentMesh->Import(myStudyId, filename.latin1(),
- myExtension.c_str());
-
- if (!aMesh->_is_nil())
- {
- SALOMEDS::SObject_var SM = myStudyAPI.AddNewMesh(aMesh);
- myStudyAPI.SetName(SM, filename);
- }
- }
- }
- catch(const SALOME::SALOME_Exception & S_ex)
- {
- QtCatchCorbaException(S_ex);
- }
- myActiveStudy->updateObjBrowser(true);
- QApplication::restoreOverrideCursor();
- }
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-bool SMESHGUI::OnMousePress(QMouseEvent * pe, QAD_Desktop * parent,
- QAD_StudyFrame * studyFrame)
-{
- SMESHGUI::GetOrCreateSMESHGUI(parent);
- return false;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-bool SMESHGUI::OnMouseMove(QMouseEvent * pe, QAD_Desktop * parent,
- QAD_StudyFrame * studyFrame)
-{
- SMESHGUI::GetOrCreateSMESHGUI(parent);
-
- return true;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-bool SMESHGUI::OnKeyPress(QKeyEvent * pe, QAD_Desktop * parent,
- QAD_StudyFrame * studyFrame)
-{
- SMESHGUI::GetOrCreateSMESHGUI(parent);
-
- return true;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-bool SMESHGUI::SetSettings(QAD_Desktop * parent)
-{
- SMESHGUI::GetOrCreateSMESHGUI(parent);
-
- /* Display mode */
- QString DisplayMode = QAD_CONFIG->getSetting("SMESH:DisplayMode");
- if (DisplayMode.compare("") == 0)
- {
- DisplayMode = "Shading";
- QAD_CONFIG->addSetting("SMESH:DisplayMode", "Shading");
- }
-
- if (DisplayMode.compare("Wireframe") == 0)
- {
- parent->menuBar()->setItemChecked(10003, false);
- parent->menuBar()->setItemChecked(10002, false);
- parent->menuBar()->setItemChecked(10001, true);
- }
- else if (DisplayMode.compare("Shading") == 0)
- {
- parent->menuBar()->setItemChecked(10003, false);
- parent->menuBar()->setItemChecked(10002, true);
- parent->menuBar()->setItemChecked(10001, false);
- }
- else if (DisplayMode.compare("Shrink") == 0)
- {
- parent->menuBar()->setItemChecked(10003, true);
- parent->menuBar()->setItemChecked(10002, false);
- parent->menuBar()->setItemChecked(10001, false);
- }
-
- /* Automatic Update */
- QString AutoUpdate = QAD_CONFIG->getSetting("SMESH:AutomaticUpdate");
- if (AutoUpdate.compare("true") == 0)
- {
- parent->menuBar()->setItemChecked(1001, true);
- smeshGUI->myAutomaticUpdate = true;
- }
- else
- {
- parent->menuBar()->setItemChecked(1001, false);
- smeshGUI->myAutomaticUpdate = false;
- }
-
- return true;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-void SMESHGUI::DefinePopup(QString & theContext, QString & theParent,
- QString & theObject)
-{
- /* Create or retrieve an object SMESHGUI */
- SMESHGUI::GetOrCreateSMESHGUI(QAD_Application::getDesktop());
-
- // NRI : Temporary added
- // if ( smeshGUI->myStudy->GetProperties()->IsLocked() ) {
- // theObject = "NothingSelected";
- // theContext = "NothingSelected";
- // }
- // NRI
-
- SALOME_Selection *Sel =
- SALOME_Selection::Selection(smeshGUI->myActiveStudy->getSelection());
- int nbSel = Sel->IObjectCount();
- if (nbSel == 0)
- {
- if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() ==
- VIEW_VTK)
- {
- vtkScalarBarActor *aScalarBar = smeshGUI->GetScalarBar();
- if ((aScalarBar != NULL) && (aScalarBar->GetVisibility() == 1))
- {
- theObject = "ScalarBar";
- theContext = "";
- }
- else
- {
- theObject = "NothingSelected";
- theContext = "NothingSelected";
- }
- }
- else
- {
- theObject = "NothingSelected";
- theContext = "NothingSelected";
- }
- }
- else if (nbSel == 1)
- {
- theObject = smeshGUI->CheckTypeObject(Sel->firstIObject());
- theContext = "";
- }
- else
- {
- theObject = smeshGUI->CheckHomogeneousSelection();
- theContext = "";
- }
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-bool SMESHGUI::CustomPopup(QAD_Desktop * parent,
- QPopupMenu * popup,
- const QString & theContext,
- const QString & theParent, const QString & theObject)
-{
- // Popup should be customized for any viewer since some meaningless commands may be present in the popup
- //if (smeshGUI->myActiveStudy->getActiveStudyFrame()->getTypeView() != VIEW_VTK) //Test du type de viewer true=OCC false=VTK
- // return false;
- /* Create or retrieve an object SMESHGUI */
- SMESHGUI::GetOrCreateSMESHGUI(parent);
-
- // NRI : Temporary added
- // if ( smeshGUI->myStudy->GetProperties()->IsLocked() ) {
- // return false;
- // }
- // NRI
-
- SALOME_Selection *Sel =
- SALOME_Selection::Selection(smeshGUI->myActiveStudy->getSelection());
- QAD_StudyFrame *studyFrame = smeshGUI->myActiveStudy->getActiveStudyFrame();
- int nbSel = Sel->IObjectCount();
-
- if (nbSel == 0)
- {
- if (studyFrame->getTypeView() != VIEW_VTK)
- popup->clear();
- return false;
- }
- else if (nbSel == 1)
- {
- QString parentComp =
- ((SALOMEGUI_Desktop *) parent)->getComponentFromSelection();
- // First check type of active viewer (VTK required)
- if ( /*studyFrame->getTypeView() != VIEW_VTK || */ parentComp !=
- parent->getActiveComponent())
- {
- //MESSAGE("CustomPopup(): VTK viewer required, removing all SMESH-specific popup menu items")
- while (1)
- {
- int id = popup->idAt(0);
- if (id <= QAD_TopLabel_Popup_ID)
- popup->removeItemAt(0);
- else
- break;
- }
- if (theObject.compare("Component") == 0)
- {
- popup->removeItem(QAD_DisplayOnly_Popup_ID);
- }
- return false;
- }
-
- // Remove common popup items for Submesh, Hypothesis and Algorithm
- if (theObject.compare("SubMesh") == 0 ||
- theObject.compare("Hypothesis") == 0 ||
- theObject.compare("Algorithm") == 0)
- {
- popup->removeItem(QAD_Display_Popup_ID);
- popup->removeItem(QAD_DisplayOnly_Popup_ID);
- popup->removeItem(QAD_Erase_Popup_ID);
- int id = popup->idAt(popup->count() - 1); // last item
- if (id < 0 && id != -1)
- popup->removeItem(id); // separator
- }
-
- if (theObject.compare("Component") == 0)
- {
- popup->removeItem(QAD_DisplayOnly_Popup_ID);
- return true;
- }
-
- int id = QAD_TopLabel_Popup_ID; //popup->idAt(0);
- QFont f = QApplication::font();
- f.setBold(TRUE);
-
- Handle(SALOME_InteractiveObject) IObject = Sel->firstIObject();
-
- if (theParent.compare("Viewer") == 0)
- {
- if (popup->idAt(0) == id)
- {
- popup->removeItem(id);
- popup->insertItem(new CustomItem(QString(IObject->getName()),
- f), id, 0);
- }
-
- Standard_Boolean res;
- SMESH_Actor *ac =
- smeshGUI->FindActorByEntry(IObject->getEntry(), res, false);
- if (res && studyFrame->getTypeView() == VIEW_VTK)
- {
- VTKViewer_RenderWindowInteractor *myRenderInter =
- ((VTKViewer_ViewFrame *) studyFrame->getRightFrame()->
- getViewFrame())->getRWInteractor();
- if (myRenderInter->isVisible(IObject))
- {
- popup->removeItem(QAD_Display_Popup_ID);
- }
- else
- {
- popup->removeItem(QAD_Erase_Popup_ID);
- }
- }
- else
- {
- popup->removeItem(QAD_Erase_Popup_ID);
- if (!res)
- { // mesh not computed -> can't display it
- popup->removeItem(QAD_Display_Popup_ID);
- popup->removeItem(QAD_DisplayOnly_Popup_ID);
- popup->removeItemAt(popup->count() - 1); //separator
- }
- }
- }
- else if (theParent.compare("ObjectBrowser") == 0)
- {
- if (theObject.compare("Mesh") == 0 ||
- theObject.compare("SubMesh") == 0 ||
- theObject.compare("Hypothesis") == 0 ||
- theObject.compare("Algorithm") == 0)
- {
- popup->removeItemAt(0);
- }
- else
- {
- if (popup->idAt(0) == id)
- {
- popup->removeItem(id);
- popup->removeItemAt(0); //separator
- }
- }
-
- Standard_Boolean res;
- SMESH_Actor *ac =
- smeshGUI->FindActorByEntry(IObject->getEntry(), res, false);
- if (res && studyFrame->getTypeView() == VIEW_VTK)
- {
- VTKViewer_RenderWindowInteractor *myRenderInter =
- ((VTKViewer_ViewFrame *) studyFrame->getRightFrame()->
- getViewFrame())->getRWInteractor();
- if (myRenderInter->isVisible(IObject))
- {
- popup->removeItem(QAD_Display_Popup_ID);
- }
- else
- {
- popup->removeItem(QAD_Erase_Popup_ID);
- }
- }
- else
- {
- if (theObject.compare("Mesh") == 0 ||
- theObject.compare("SubMesh") == 0 ||
- theObject.compare("Hypothesis") == 0 ||
- theObject.compare("Algorithm") == 0)
- {
- }
- else
- {
- popup->removeItem(QAD_Erase_Popup_ID);
- if (!res)
- { // mesh not computed -> can't display it
- popup->removeItem(QAD_Display_Popup_ID);
- popup->removeItem(QAD_DisplayOnly_Popup_ID);
- popup->removeItemAt(popup->count() - 1); //separator
- }
- }
- }
- }
- }
- else
- {
- QString parentComp =
- ((SALOMEGUI_Desktop *) parent)->getComponentFromSelection();
- QAD_StudyFrame *studyFrame =
- smeshGUI->myActiveStudy->getActiveStudyFrame();
- if ( /*studyFrame->getTypeView() != VIEW_VTK || */ parentComp !=
- parent->getActiveComponent())
- {
- //MESSAGE("CustomPopup(): VTK viewer required, removing all SMESH-specific popup menu items")
- while (1)
- {
- int id = popup->idAt(0);
- if (id <= QAD_TopLabel_Popup_ID && id != -1)
- popup->removeItemAt(0);
- else
- break;
- }
- if (parentComp.isNull())
- { // objects from several components are selected
- popup->removeItem(QAD_DisplayOnly_Popup_ID);
- popup->removeItem(QAD_Display_Popup_ID);
- popup->removeItem(QAD_Erase_Popup_ID);
- int id = popup->idAt(popup->count() - 1); // last item
- if (id < 0 && id != -1)
- popup->removeItem(id); // separator
- }
- return false;
- }
-
- QString type = smeshGUI->CheckHomogeneousSelection();
- if (type.compare("Heterogeneous Selection") != 0)
- {
- int id = QAD_TopLabel_Popup_ID; //popup->idAt(0);
- QFont f = QApplication::font();
- f.setBold(TRUE);
- popup->removeItem(id);
- popup->insertItem(new CustomItem(QString("%1 ").arg(nbSel) + type +
- " (s) ", f), id, 0);
- }
- }
- return false;
-}
-
-/**
- * Ensures that the actor for the given <theIO> exists in the active VTK view
- * @TODO Handle multiple selection.
- */
-void SMESHGUI::BuildPresentation(const Handle(SALOME_InteractiveObject) & theIO)
-{
- MESSAGE("SMESHGUI::BuildPresentation("<<theIO->getEntry()<<")");
- /* Create or retrieve an object SMESHGUI */
- SMESHGUI::GetOrCreateSMESHGUI(QAD_Application::getDesktop());
-
- QAD_StudyFrame *activeFrame =
- smeshGUI->myActiveStudy->getActiveStudyFrame();
- if (activeFrame->getTypeView() == VIEW_VTK)
- {
- // VTK
- // Some ideas to handle multiple selection...
- /*SALOMEDS::SObject_var fatherSF =
- smeshGUI->myStudy->FindObjectID(activeFrame->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();*/
- Handle(SALOME_InteractiveObject) IObject = theIO;
- if (IObject->hasEntry())
- {
- // Look for the actor in all views
- Standard_Boolean res;
- SMESH_Actor *ac =
- smeshGUI->FindActorByEntry(IObject->getEntry(), res, false);
-
- if (!res)
- {
- SALOMEDS::SObject_var aMorSM=smeshGUI->myStudy->FindObjectID( IObject->getEntry());
- SALOMEDS::GenericAttribute_var anAttr;
- SALOMEDS::AttributeIOR_var anIOR;
- if(aMorSM->FindAttribute(anAttr, "AttributeIOR"))
- {
- anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
- SMESH::SMESH_Mesh_var aM =
- SMESH::SMESH_Mesh::_narrow( _orb->string_to_object(anIOR->Value()));
- if(!aM->_is_nil())
- {
- smeshGUI->InitActor(aM);
- ac = smeshGUI->ReadScript(aM);
- smeshGUI->DisplayActor( ac, true );
- smeshGUI->DisplayEdges( ac );
- smeshGUI->ChangeRepresentation( ac, ac->getDisplayMode() );
- }
- else
- {
- MESSAGE("Do not know how to display something which is not a SMESH_Mesh");
- }
- }
- else
- {
- MESSAGE("The object "<<theIO->getEntry()<<
- " do not have \"AttributeIOR\" attribute");
- }
- }
- else
- {
- // The actor exists in some view
- // Check whether the actor belongs to the active view
- VTKViewer_RenderWindowInteractor *rwInter =
- ((VTKViewer_ViewFrame *) activeFrame->getRightFrame()->
- getViewFrame())->getRWInteractor();
-
- // The actor belongs to inactive view -> create a copy and display it in the active view
- if (!rwInter->isInViewer(IObject))
- {
- if(ac->GetMapper()==NULL)
- {
- SMESH::SMESH_Mesh_var aMesh = smeshGUI->ConvertIOinMesh(theIO, res);
- ac=smeshGUI->ReadScript(aMesh);
- }
- SMESH_Actor *acCopy = SMESH_Actor::New();
- acCopy->ShallowCopy(ac);
- ac = acCopy;
- }
- smeshGUI->DisplayActor(ac, false);
- smeshGUI->DisplayEdges(ac);
- smeshGUI->ChangeRepresentation(ac, ac->getDisplayMode());
- }
- }
- }
- else
- {
- MESSAGE("BuildPresentation() must not be called while non-VTK view is active");
- }
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-void SMESHGUI::setOrb()
-{
- try
- {
- ORB_INIT & init = *SINGLETON_ < ORB_INIT >::Instance();
- ASSERT(SINGLETON_ < ORB_INIT >::IsAlreadyExisting());
- _orb = init(0, 0);
- } catch(...)
- {
- INFOS("internal error : orb not found");
- _orb = 0;
- }
- ASSERT(!CORBA::is_nil(_orb));
-}
-
-/**
- * Get the history of all commands made in the SMESH server. This list of command
- * is used to display the mesh in the VTK view
- * @TODO Handle the REMOVE_ALL command.
- */
-SMESH_Actor *SMESHGUI::ReadScript(SMESH::SMESH_Mesh_ptr aMesh)
-{
- MESSAGE("SMESHGUI::ReadScript");
- SMESH_Actor *MeshActor;
- if (!aMesh->_is_nil())
- {
- Standard_Boolean result;
- MeshActor = FindActor(aMesh, result, false);
- if (result)
- {
- SMESH::log_array_var aSeq = aMesh->GetLog(true);
- MESSAGE("SMESHGUI::ReadScript: The log contains "<<aSeq->length()
- <<" commands.");
-
- for (unsigned int ind = 0; ind < aSeq->length(); ind++)
- {
- switch (aSeq[ind].commandType)
- {
- case SMESH::ADD_NODE:
- {
- AddNodes(MeshActor, aSeq[ind].number, aSeq[ind].coords,
- aSeq[ind].indexes);
- break;
- }
- case SMESH::ADD_EDGE:
- {
- AddEdges( MeshActor, aSeq[ind].number, aSeq[ind].coords, aSeq[ind].indexes );
- break;
- }
- case SMESH::ADD_TRIANGLE:
- {
- AddTriangles(MeshActor, aSeq[ind].number, aSeq[ind].coords,
- aSeq[ind].indexes);
- break;
- }
- case SMESH::ADD_QUADRANGLE:
- {
- AddQuadrangles(MeshActor, aSeq[ind].number,
- aSeq[ind].coords, aSeq[ind].indexes);
- break;
- }
- case SMESH::ADD_TETRAHEDRON:
- {
- AddTetras(MeshActor, aSeq[ind].number, aSeq[ind].coords,
- aSeq[ind].indexes);
- break;
- }
- case SMESH::ADD_PYRAMID:
- {
- break;
- }
- case SMESH::ADD_PRISM:
- {
- break;
- }
- case SMESH::ADD_HEXAHEDRON:
- {
- AddHexaedres(MeshActor, aSeq[ind].number, aSeq[ind].coords,
- aSeq[ind].indexes);
- break;
- }
- case SMESH::REMOVE_NODE:
- {
- RemoveNodes(MeshActor, aSeq[ind].number, aSeq[ind].coords,
- aSeq[ind].indexes);
- break;
- }
- case SMESH::REMOVE_ELEMENT:
- {
- RemoveElements(MeshActor, aSeq[ind].number,
- aSeq[ind].coords, aSeq[ind].indexes);
- break;
- }
- case SMESH::REMOVE_ALL:
- MESSAGE("REMOVE_ALL command not yet implemented");
- break;
- default: MESSAGE("Warning: Unknown script command.");
- }
- }
- return MeshActor;
- }
- }
- return NULL;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-void SMESHGUI::Dump(SMESH_Actor * Mactor)
-{
- vtkUnstructuredGrid *ugrid =
- vtkUnstructuredGrid::SafeDownCast(Mactor->DataSource);
- vtkPoints *Pts = ugrid->GetPoints();
- int nbPts = Pts->GetNumberOfPoints();
- int nbCells = ugrid->GetNumberOfCells();
-
- FILE *In;
- int i, j;
- In = fopen("/tmp/dumpMesh", "w+");
- fprintf(In, "%d %d\n", nbPts, nbCells);
- for (int i = 0; i < nbPts; i++)
- {
- float *p = ugrid->GetPoint(i);
- fprintf(In, "%d %e %e %e\n", i, p[0], p[1], p[2]);
- }
-
- for (int i = 0; i < nbCells; i++)
- {
- fprintf(In, "%d %d", i, ugrid->GetCell(i)->GetCellType());
- vtkIdList *Id = ugrid->GetCell(i)->GetPointIds();
- for (j = 0; j < Id->GetNumberOfIds(); j++)
- {
- fprintf(In, " %d", Id->GetId(j));
- }
- fprintf(In, "\n");
- }
- fclose(In);
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-void SMESHGUI::AddNodes(SMESH_Actor * Mactor, int number,
- const SMESH::double_array & coords, const SMESH::long_array & indexes)
-{
- //MESSAGE("SMESHGUI::AddNodes(number="<<number<<", indexes.length()="<<indexes.length()<<")");
- QApplication::setOverrideCursor(Qt::waitCursor);
- if (Mactor->GetMapper() == NULL)
- {
- vtkPoints *Pts = vtkPoints::New();
- SMESH_Grid *ugrid = SMESH_Grid::New();
- ugrid->Allocate();
-
- int i = 1;
- int j = 1;
- while (i <= number)
- {
- int idVTK =
- Pts->InsertNextPoint(coords[j - 1], coords[j], coords[j + 1]);
- //Mactor->AddNode( indexes[i-1], idVTK );
- ugrid->AddNode(indexes[i - 1], idVTK);
- i++;
- j = j + 3;
- }
- //vtkUnstructuredGrid *ugrid = vtkUnstructuredGrid::New();
- ugrid->SetPoints(Pts);
- vtkDataSetMapper *PtsMapper = vtkDataSetMapper::New();
- PtsMapper->SetInput(ugrid);
- Mactor->DataSource = PtsMapper->GetInput();
- Mactor->SetMapper(PtsMapper);
- }
- else
- {
- //vtkUnstructuredGrid* ugrid = vtkUnstructuredGrid::SafeDownCast( Mactor->DataSource );
- SMESH_Grid *ugrid = SMESH_Grid::SafeDownCast(Mactor->DataSource);
- int i = 1;
- int j = 1;
- while (i <= number)
- {
- int idVTK =
- ugrid->GetPoints()->InsertNextPoint(coords[j - 1], coords[j],
- coords[j + 1]);
- ugrid->AddNode(indexes[i - 1], idVTK);
- i++;
- j = j + 3;
- }
- vtkDataSetMapper *PtsMapper = vtkDataSetMapper::New();
- PtsMapper->SetInput(ugrid);
- Mactor->DataSource = PtsMapper->GetInput();
- Mactor->SetMapper(PtsMapper);
- }
- QApplication::restoreOverrideCursor();
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-void SMESHGUI::AddNode(SMESH_Actor * Mactor, int idnode, float x, float y,
- float z)
-{
- QApplication::setOverrideCursor(Qt::waitCursor);
- MESSAGE("SMESHGUI::AddNode " << idnode << " : " << x << ";" << y << ";" << z);
-
- if (Mactor->GetMapper() == NULL)
- {
- vtkPoints *Pts = vtkPoints::New();
- int idVTK = Pts->InsertNextPoint(x, y, z);
- //Mactor->AddNode( idnode, idVTK );
- //vtkUnstructuredGrid *ugrid = vtkUnstructuredGrid::New();
- SMESH_Grid *ugrid = SMESH_Grid::New();
- ugrid->Allocate();
- ugrid->AddNode(idnode, idVTK);
- ugrid->SetPoints(Pts);
- vtkDataSetMapper *PtsMapper = vtkDataSetMapper::New();
- PtsMapper->SetInput(ugrid);
- Mactor->DataSource = PtsMapper->GetInput();
- Mactor->SetMapper(PtsMapper);
- }
- else
- {
- //vtkUnstructuredGrid* ugrid = vtkUnstructuredGrid::SafeDownCast( Mactor->DataSource );
- SMESH_Grid *ugrid = SMESH_Grid::SafeDownCast(Mactor->DataSource);
- int idVTK = ugrid->GetPoints()->InsertNextPoint(x, y, z);
- //Mactor->AddNode( idnode, idVTK );
- ugrid->AddNode(idnode, idVTK);
- vtkDataSetMapper *PtsMapper = vtkDataSetMapper::New();
- PtsMapper->SetInput(ugrid);
- Mactor->DataSource = PtsMapper->GetInput();
- Mactor->SetMapper(PtsMapper);
- }
- QApplication::restoreOverrideCursor();
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-void SMESHGUI::RemoveNode(SMESH_Actor * Mactor, int idnode)
-{
- MESSAGE(" OLD RemoveNode method ")
-// int id = Mactor->GetIdVTKNode( idnode );
-// MESSAGE ( " RemoveNode id VTK " << id )
-// if ( Mactor->GetMapper() != NULL ) {
-// vtkUnstructuredGrid* ugrid = vtkUnstructuredGrid::SafeDownCast( Mactor->DataSource );
-// vtkUnstructuredGrid* newUgrid = vtkUnstructuredGrid::New();
-// vtkPoints *Pts = ugrid->GetPoints();
-// vtkPoints *newPts = vtkPoints::New();
-// int nbPts = Pts->GetNumberOfPoints();
-// bool findPt = false;
-// for ( int i = 0; i < nbPts; i++ ) {
-// if ( id != i ) {
-// if ( !findPt)
-// newPts->InsertPoint(i, Pts->GetPoint(i) );
-// else
-// newPts->InsertPoint(i-1, Pts->GetPoint(i) );
-// } else {
-// findPt = true;
-// Mactor->RemoveNode( idnode );
-// }
-// }
-// newUgrid->SetPoints(newPts);
-// int nbCells = ugrid->GetNumberOfCells();
-// for ( int i = 0; i < nbCells; i++ ) {
-// vtkIdList *Ids = ugrid->GetCell(i)->GetPointIds();
-// vtkIdList *newIds = vtkIdList::New();
-// int nbIds = Ids->GetNumberOfIds();
-// newIds->SetNumberOfIds(nbIds);
-// for ( int j = 0; j < nbIds; j++ ) {
-// int theid = Ids->GetId(j);
-// if ( theid > id ) {
-// newIds->SetId( j, theid-1 );
-// } else
-// newIds->SetId( j, theid );
-// }
-// int idSMDSel = Mactor->GetIdSMESHDSElement( i );
-// Mactor->RemoveElement( idSMDSel, false );
-// int idVTKel = newUgrid->InsertNextCell( ugrid->GetCell(i)->GetCellType(), newIds );
-// Mactor->AddElement( idSMDSel, idVTKel );
-// }
-// vtkDataSetMapper *Mapper = vtkDataSetMapper::New();
-// Mapper->SetInput( newUgrid );
-// Mactor->DataSource = Mapper->GetInput();
-// Mactor->SetMapper(Mapper);
-// UpdateView();
-// }
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-void SMESHGUI::RemoveNodes(SMESH_Actor * Mactor, int number,
- const SMESH::double_array & coords, const SMESH::long_array & indexes)
-{
- QApplication::setOverrideCursor(Qt::waitCursor);
- int i = 1;
- while (i <= number)
- {
- Mactor->RemoveNode(indexes[i - 1]);
- i++;
- }
-
- TColStd_DataMapOfIntegerInteger newMapVTKNodes;
- TColStd_DataMapOfIntegerInteger newMapSMESHDSNodes;
- TColStd_DataMapOfIntegerInteger MapOldNodesToNewNodes;
-
- if (Mactor->GetMapper() != NULL)
- {
- SMESH_Grid *ugrid = SMESH_Grid::SafeDownCast(Mactor->DataSource);
- SMESH_Grid *newUgrid = SMESH_Grid::New();
- newUgrid->CopyMaps(ugrid);
-
- vtkPoints *Pts = ugrid->GetPoints();
- vtkPoints *newPts = vtkPoints::New();
- int nbPts = Pts->GetNumberOfPoints();
- int j = 0;
- for (int i = 0; i < nbPts; i++)
- {
- int idSMESHDSNode = Mactor->GetIdSMESHDSNode(i);
- if (idSMESHDSNode != -1)
- {
- newPts->InsertPoint(j, Pts->GetPoint(i));
-
- newMapVTKNodes.Bind(j, idSMESHDSNode);
- newMapSMESHDSNodes.Bind(idSMESHDSNode, j);
-
- MapOldNodesToNewNodes.Bind(i, j);
- j++;
- }
- }
-
- newUgrid->SetIdsVTKNode(newMapVTKNodes);
- newUgrid->SetIdsSMESHDSNode(newMapSMESHDSNodes);
- newUgrid->SetPoints(newPts);
-
- TColStd_DataMapOfIntegerInteger newMapElementSMDStoVTK;
- TColStd_DataMapOfIntegerInteger newMapElementVTKtoSMDS;
-
- int nbCells = ugrid->GetNumberOfCells();
- for (int i = 0; i < nbCells; i++)
- {
- vtkIdList *Ids = ugrid->GetCell(i)->GetPointIds();
- vtkIdList *newIds = vtkIdList::New();
- int nbIds = Ids->GetNumberOfIds();
- newIds->SetNumberOfIds(nbIds);
- bool isGood = true;
- for (int j = 0; j < nbIds; j++)
- {
- int theid = Ids->GetId(j);
- if (MapOldNodesToNewNodes.IsBound(theid))
- {
- newIds->SetId(j, MapOldNodesToNewNodes.Find(theid));
- }
- else
- {
- isGood = false;
- break;
- }
- }
-
- // Filtering out cells based on non-existing nodes
- if (isGood)
- {
- int idSMDSel = Mactor->GetIdSMESHDSElement(i);
- int idVTKel =
- newUgrid->InsertNextCell(ugrid->GetCell(i)->GetCellType(),
- newIds);
-
- newMapElementSMDStoVTK.Bind(idSMDSel, idVTKel);
- newMapElementVTKtoSMDS.Bind(idVTKel, idSMDSel);
- }
- }
-
- newUgrid->SetIdsVTKElement(newMapElementVTKtoSMDS);
- newUgrid->SetIdsSMESHDSElement(newMapElementSMDStoVTK);
-
- // Copy new data to the old DatSource: keep the single DataSource for all actors
- ugrid->DeepCopy(newUgrid);
-
- vtkDataSetMapper *Mapper = vtkDataSetMapper::New();
- Mapper->SetInput(ugrid);
- Mactor->SetMapper(Mapper);
-
- // Commented to avoid multiple viewer updates when called by ReadScript()
- //UpdateView();
-
- }
- QApplication::restoreOverrideCursor();
-}