]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
0020631: EDF 1195 SMESH : Merge Node : Optional display of the nodes of the mesh
authordmv <dmv@opencascade.com>
Thu, 11 Feb 2010 12:08:34 +0000 (12:08 +0000)
committerdmv <dmv@opencascade.com>
Thu, 11 Feb 2010 12:08:34 +0000 (12:08 +0000)
doc/salome/gui/SMESH/images/mergeelems.png
doc/salome/gui/SMESH/images/mergeelems_auto.png [new file with mode: 0644]
doc/salome/gui/SMESH/images/mergenodes.png
doc/salome/gui/SMESH/images/mergenodes_auto.png [new file with mode: 0644]
doc/salome/gui/SMESH/input/merging_elements.doc
doc/salome/gui/SMESH/input/merging_nodes.doc
src/SMESHGUI/SMESHGUI_EditMeshDlg.cxx
src/SMESHGUI/SMESHGUI_EditMeshDlg.h
src/SMESHGUI/SMESH_msg_en.ts

index c5e160884b73adf5f09b59d80c3e6b4b16eb7fba..eaa5a9323dacc7abaa6eeb652288355bcffe0161 100755 (executable)
Binary files a/doc/salome/gui/SMESH/images/mergeelems.png and b/doc/salome/gui/SMESH/images/mergeelems.png differ
diff --git a/doc/salome/gui/SMESH/images/mergeelems_auto.png b/doc/salome/gui/SMESH/images/mergeelems_auto.png
new file mode 100644 (file)
index 0000000..f8ef74f
Binary files /dev/null and b/doc/salome/gui/SMESH/images/mergeelems_auto.png differ
index d14620101081839b2a35097703b160574acd66c3..024bc22e85cb1695b57f221f137c7c921952af37 100755 (executable)
Binary files a/doc/salome/gui/SMESH/images/mergenodes.png and b/doc/salome/gui/SMESH/images/mergenodes.png differ
diff --git a/doc/salome/gui/SMESH/images/mergenodes_auto.png b/doc/salome/gui/SMESH/images/mergenodes_auto.png
new file mode 100644 (file)
index 0000000..b292086
Binary files /dev/null and b/doc/salome/gui/SMESH/images/mergenodes_auto.png differ
index 821f6f9f28b625d46d9a68e77987bf9cc0404fa3..230b3f7597ba95f980297223629c80fd9dbf716a 100644 (file)
@@ -5,42 +5,55 @@
 \n This functionality allows to merge coincident elements of a mesh
 selectable in the dialog box.
 
+<ol>
+<li>From the \b Modification choose \b Transformation and  from its
+sub-menu select the <b>Merge elements</b> item. The following dialog box
+shall appear:</li>
 
 \image html mergeelems_ico.png "Merge elements button"
 
+\image html mergeelems_auto.png
+
+<li><b>Automatic mode:</b>
+<ul>
+<li>\b Name is the name of the mesh whose elements will be merged.</li>
+<li>\b Automatic Mode or \b Manual Mode is to switch the dialog
+controls type.
+<li>In \b Automatic Mode the elements that were created on the same nodes will be merged.</li>
+</ul>
+</li><br>
 
 \image html mergeelems.png
 
+
+<li>If the \b Manual Mode is selected there are additional controls to 
+manage the elements to be merged in more detail:
 <ul>
-  <li>\b Name is the name of the mesh whose elements will be merged.</li>
-  <li>\b Tolerance is a maximum distance between elements sufficient for merging.
-    <ul>
-      <li>\b Detect button generates the list of coincident elements for the given \b Tolerance.</li>
-    </ul></li>
-  <li><b>Coincident elements</b> is a list of groupes of elements for
-    merging. All elements of each group will form one after the operation.
-    <ul>
-      <li>\b Remove button deletes the selected group from the list.</li>
-      <li>\b Add button adds to the list a group of elements selected in the
-        viewer with pressed "Shift" key.</li>
-      <li><b>Select all</b> checkbox selects all groups.</li>
-    </ul></li>
-  <li><b>Edit selected group</b> list allows editing the selected group:
-    <br><br>
-    \image html add.png
-    <center>adds to the group the element selected in the viewer.</center>
-    <br>
-    \image html remove.png
-    <center>removes from the group the selected element.</center>
-    <br>
-    \image html sort.png
-    <center>moves the selected element to the first position in the
-    group. This means that all other elements will be merged into this
-    one.</center>
-    <br>
-  </li>
-  <li>To confirm your choice click \b Apply or <b>Apply and Close</b> button.</li>
-</ul>
+<li>\b Detect button generates the list of coincident elements for the given \b Tolerance.</li>
+<li><b>Coincident elements</b> is a list of groupes of elements for
+merging. All elements of each group will form one after the operation.
+<ul>
+<li>\b Remove button deletes the selected group from the list.</li>
+<li>\b Add button adds to the list a group of elements selected in the
+viewer with pressed "Shift" key.</li>
+<li><b>Select all</b> checkbox selects all groups.</li>
+</ul></li>
+<li><b>Edit selected group</b> list allows editing the selected group:
+<br><br>
+\image html add.png
+<center>adds to the group the element selected in the viewer.</center>
+<br>
+\image html remove.png
+<center>removes from the group the selected element.</center>
+<br>
+\image html sort.png
+<center>moves the selected element to the first position in the
+group. This means that all other elements will be merged into this
+one.</center>
+<br>
+</li>
+<li>To confirm your choice click \b Apply or <b>Apply and Close</b> button.</li>
+</ol>
 
 In this picture you see a triangle which coincides with one of the
 elements of the mesh. After we apply <b>Merge Elements</b> functionality, the
index fb88fb89e26492d3ea01eb832f636f5839bcac31..f4ef2ab1f316b7edc1ba8f9adeb7caffd17e336b 100644 (file)
@@ -11,19 +11,29 @@ with desirable tolerance, edit these groups and merge.
 <ol>
 <li>From the \b Modification choose \b Transformation and  from its
 sub-menu select the <b>Merge nodes</b> item. The following dialog box
-shall appear:
+shall appear:</li>
 
-\image html mergenodes.png
+\image html mergenodes_auto.png
 
+<li><b>Automatic mode:</b>
 <ul>
 <li>\b Name is the name of the mesh whose nodes will be merged.</li>
+<li>\b Automatic Mode or \b Manual Mode is to switch the dialog
+controls type.
 <li>\b Tolerance is a maximum distance between nodes sufficient for
-merging.
+merging, that is able in both dialog modes.</li>
+<li>In \b Automatic Mode to merge the Nodes, just input the tolerance
+value and confirm by \b Apply button.</li>
+</ul>
+</li><br>
+
+\image html mergenodes.png
+
+<li>If the \b Manual Mode is selected there are additional controls to 
+manage the nodes to be merged in more detail:
 <ul>
 <li>\b Detect button generates the list of coincident nodes for the given
 \b Tolerance.</li>
-</ul>
-</li>
 <li><b>Coincident nodes</b> is a list of groupes of nodes for
 merging. All nodes of each group will form one after the
 operation.
@@ -60,4 +70,4 @@ one.</center><br>
 <br><b>See Also</b> a sample TUI Script of a 
 \ref tui_merging_nodes "Merge Nodes" operation.  
 
-*/
\ No newline at end of file
+*/
index 392ae1445c640425eb25da622954afae275c9d42..ac4ce055082a926c93c5009aadbd0251d1acc57d 100644 (file)
@@ -365,6 +365,24 @@ SMESHGUI_EditMeshDlg::SMESHGUI_EditMeshDlg (SMESHGUI* theModule,
   GroupMeshLayout->addWidget(SelectMeshButton);
   GroupMeshLayout->addWidget(LineEditMesh);
 
+  /***************************************************************/
+  // Controls for switch dialog behaviour
+
+  TypeBox = new QGroupBox( tr( "SMESH_MODE" ), this );
+  GroupType = new QButtonGroup( this );
+  QHBoxLayout* aTypeBoxLayout = new QHBoxLayout( TypeBox );
+  aTypeBoxLayout->setMargin( MARGIN );
+  aTypeBoxLayout->setSpacing( SPACING );
+
+  QRadioButton* rb1 = new QRadioButton( tr( "SMESH_AUTOMATIC" ), TypeBox );
+  QRadioButton* rb2 = new QRadioButton( tr( "SMESH_MANUAL" ),   TypeBox );
+  GroupType->addButton( rb1, 0 );
+  GroupType->addButton( rb2, 1 );
+  aTypeBoxLayout->addWidget( rb1 );
+  aTypeBoxLayout->addWidget( rb2 );
+
+  myTypeId = 0;
+
   /***************************************************************/
   // Controls for coincident elements detecting
   GroupCoincident = new QGroupBox(myAction == 1 ? 
@@ -372,41 +390,54 @@ SMESHGUI_EditMeshDlg::SMESHGUI_EditMeshDlg (SMESHGUI* theModule,
                                   tr("COINCIDENT_NODES"), 
                                   this);
 
-  QGridLayout* GroupCoincidentLayout = new QGridLayout(GroupCoincident);
-  GroupCoincidentLayout->setSpacing(SPACING);
-  GroupCoincidentLayout->setMargin(MARGIN);
+  QVBoxLayout* aCoincidentLayout = new QVBoxLayout(GroupCoincident);
+
+  GroupCoincident->setLayout(aCoincidentLayout);
+
+  QHBoxLayout* aSpinBoxLayout = new QHBoxLayout( GroupCoincident );
   
   if (myAction == 0) { // case merge nodes
     TextLabelTolerance = new QLabel(tr("SMESH_TOLERANCE"), GroupCoincident);
     SpinBoxTolerance = new SMESHGUI_SpinBox(GroupCoincident);
     SpinBoxTolerance->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
 
-    GroupCoincidentLayout->addWidget(TextLabelTolerance, 0, 0);
-    GroupCoincidentLayout->addWidget(SpinBoxTolerance,   0, 1);
+    aSpinBoxLayout->addWidget(TextLabelTolerance);
+    aSpinBoxLayout->addWidget(SpinBoxTolerance);
+    aCoincidentLayout->addLayout(aSpinBoxLayout);
   }
   else {
     TextLabelTolerance = 0;
     SpinBoxTolerance = 0;
   }
 
-  int row = GroupCoincidentLayout->rowCount();
+  GroupCoincidentWidget = new QWidget(GroupCoincident);
+  QGridLayout* GroupCoincidentLayout = new QGridLayout(GroupCoincidentWidget);
+  GroupCoincidentLayout->setSpacing(SPACING);
+  GroupCoincidentLayout->setMargin(MARGIN);
 
-  ListCoincident = new QListWidget(GroupCoincident);
+  ListCoincident = new QListWidget(GroupCoincidentWidget);
   ListCoincident->setSelectionMode(QListWidget::ExtendedSelection);
 
-  DetectButton      = new QPushButton(tr("DETECT"),           GroupCoincident);
-  AddGroupButton    = new QPushButton(tr("SMESH_BUT_ADD"),    GroupCoincident);
-  RemoveGroupButton = new QPushButton(tr("SMESH_BUT_REMOVE"), GroupCoincident);
+  DetectButton      = new QPushButton(tr("DETECT"),           GroupCoincidentWidget);
+  AddGroupButton    = new QPushButton(tr("SMESH_BUT_ADD"),    GroupCoincidentWidget);
+  RemoveGroupButton = new QPushButton(tr("SMESH_BUT_REMOVE"), GroupCoincidentWidget);
 
-  SelectAllCB = new QCheckBox(tr("SELECT_ALL"), GroupCoincident);
+  SelectAllCB = new QCheckBox(tr("SELECT_ALL"), GroupCoincidentWidget);
 
-  GroupCoincidentLayout->addWidget(ListCoincident,    row,   0, 4, 2);
-  GroupCoincidentLayout->addWidget(DetectButton,      row,   2);
-  GroupCoincidentLayout->addWidget(AddGroupButton,    row+2, 2);
-  GroupCoincidentLayout->addWidget(RemoveGroupButton, row+3, 2);
-  GroupCoincidentLayout->addWidget(SelectAllCB,       row+4, 0, 1, 3);
-  GroupCoincidentLayout->setRowMinimumHeight(row+1, 10);
-  GroupCoincidentLayout->setRowStretch(row+1, 5);
+  if (myAction == 0)
+    GroupCoincidentWidget->hide();
+  else
+    GroupCoincident->hide();
+
+  GroupCoincidentLayout->addWidget(ListCoincident,    0,   0, 4, 2);
+  GroupCoincidentLayout->addWidget(DetectButton,      0,   2);
+  GroupCoincidentLayout->addWidget(AddGroupButton,    2, 2);
+  GroupCoincidentLayout->addWidget(RemoveGroupButton, 3, 2);
+  GroupCoincidentLayout->addWidget(SelectAllCB,       4, 0, 1, 3);
+  GroupCoincidentLayout->setRowMinimumHeight(1, 10);
+  GroupCoincidentLayout->setRowStretch(1, 5);
+
+  aCoincidentLayout->addWidget(GroupCoincidentWidget);
 
   /***************************************************************/
   // Controls for editing the selected group
@@ -434,6 +465,8 @@ SMESHGUI_EditMeshDlg::SMESHGUI_EditMeshDlg (SMESHGUI* theModule,
   GroupEditLayout->addWidget(RemoveElemButton, 0, 2);
   GroupEditLayout->addWidget(SetFirstButton,   1, 1, 1, 2);
 
+  GroupEdit->hide();
+
   /***************************************************************/
   GroupButtons = new QGroupBox(this);
   QHBoxLayout* GroupButtonsLayout = new QHBoxLayout(GroupButtons);
@@ -461,10 +494,13 @@ SMESHGUI_EditMeshDlg::SMESHGUI_EditMeshDlg (SMESHGUI* theModule,
   /***************************************************************/
   DlgLayout->addWidget(GroupConstructors);
   DlgLayout->addWidget(GroupMesh);
+  DlgLayout->addWidget(TypeBox);
   DlgLayout->addWidget(GroupCoincident);
   DlgLayout->addWidget(GroupEdit);
   DlgLayout->addWidget(GroupButtons);
 
+  this->resize(10,10);
+
   Init(); // Initialisations
 }
 
@@ -490,6 +526,8 @@ void SMESHGUI_EditMeshDlg::Init()
 
   RadioButton->setChecked(true);
 
+  GroupType->button(0)->setChecked(true);
+
   myEditCurrentArgument = (QWidget*)LineEditMesh; 
 
   myActor = 0;
@@ -500,17 +538,6 @@ void SMESHGUI_EditMeshDlg::Init()
   mySMESHGUI->SetActiveDialogBox((QDialog*)this);
   myIsBusy = false;
   
-  // Costruction of the logical filter
-  SMESH_TypeFilter* aMeshOrSubMeshFilter = new SMESH_TypeFilter (MESHorSUBMESH);
-  SMESH_TypeFilter* aSmeshGroupFilter    = new SMESH_TypeFilter (GROUP);
-  
-  QList<SUIT_SelectionFilter*> aListOfFilters;
-  if (aMeshOrSubMeshFilter) aListOfFilters.append(aMeshOrSubMeshFilter);
-  if (aSmeshGroupFilter)    aListOfFilters.append(aSmeshGroupFilter);
-
-  myMeshOrSubMeshOrGroupFilter =
-    new SMESH_LogicalFilter (aListOfFilters, SMESH_LogicalFilter::LO_OR);
-  
   /* signals and slots connections */
   connect(buttonOk,     SIGNAL(clicked()), this, SLOT(ClickOnOk()));
   connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
@@ -527,20 +554,23 @@ void SMESHGUI_EditMeshDlg::Init()
   connect(AddElemButton, SIGNAL (clicked()), this, SLOT(onAddElement()));
   connect(RemoveElemButton, SIGNAL (clicked()), this, SLOT(onRemoveElement()));
   connect(SetFirstButton, SIGNAL( clicked() ), this, SLOT( onSetFirst() ) );
+  connect(GroupType, SIGNAL(buttonClicked(int)), this, SLOT(onTypeChanged(int)));
 
   connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
   connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
   /* to close dialog if study change */
   connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
 
-  SetFirstButton->setEnabled(false);
-  buttonOk->setEnabled(false);
-  buttonApply->setEnabled(false);
-
   // Init Mesh field from selection
   SelectionIntoArgument();
 
-  myHelpFileName = "merging_elements_page.html";
+  // Update Buttons
+  updateControls();
+  
+  if (myAction == 0)
+    myHelpFileName = "merging_nodes_page.html";
+  else
+    myHelpFileName = "merging_elements_page.html";
 }
 
 //=================================================================================
@@ -588,12 +618,27 @@ bool SMESHGUI_EditMeshDlg::ClickOnApply()
     return false;
 
   try {
+    if (myTypeId == 0)
+      onDetect();
+
     SUIT_OverrideCursor aWaitCursor;
     SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
 
     SMESH::long_array_var anIds = new SMESH::long_array;
     SMESH::array_of_long_array_var aGroupsOfElements = new SMESH::array_of_long_array;
 
+    if ( ListCoincident->count() == 0) {
+      if (myAction == 0)
+        SUIT_MessageBox::warning(this,
+                                 tr("SMESH_WARNING"),
+                                 tr("SMESH_NO_NODES_DETECTED"));
+      else
+        SUIT_MessageBox::warning(this,
+                                 tr("SMESH_WARNING"),
+                                 tr("SMESH_NO_ELEMENTS_DETECTED"));
+      return false;
+    }
+
     aGroupsOfElements->length(ListCoincident->count());
 
     int anArrayNum = 0;
@@ -612,12 +657,22 @@ bool SMESHGUI_EditMeshDlg::ClickOnApply()
     else
       aMeshEditor->MergeElements (aGroupsOfElements.inout());
 
+    if ( myTypeId == 0 ) {
+      if (myAction ==0)
+        SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INFORMATION"),
+                                     tr("SMESH_MERGED_NODES").arg(QString::number(ListCoincident->count()).toLatin1().data()));
+      else
+        SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INFORMATION"),
+                                     tr("SMESH_MERGED_ELEMENTS").arg(QString::number(ListCoincident->count()).toLatin1().data()));
+    }
+      
+
   } catch(...) {
   }
   
   SMESH::UpdateView();
-
   onDetect();
+  
   return true;
 }
 
@@ -706,7 +761,7 @@ void SMESHGUI_EditMeshDlg::updateControls()
 {
   if (ListEdit->count() == 0)
     SetFirstButton->setEnabled(false);
-  bool enable = !(myMesh->_is_nil()) && ListCoincident->count();
+  bool enable = !(myMesh->_is_nil()) && (ListCoincident->count() || (myTypeId == 0));
   buttonOk->setEnabled(enable);
   buttonApply->setEnabled(enable);
 }
@@ -1005,7 +1060,8 @@ void SMESHGUI_EditMeshDlg::SetEditCurrentArgument()
     SMESH::SetPointRepresentation(false);
     if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
       aViewWindow->SetSelectionMode(ActorSelection);
-    mySelectionMgr->installFilter(myMeshOrSubMeshOrGroupFilter);
+    if (myTypeId == 1)
+      mySelectionMgr->installFilter(myMeshOrSubMeshOrGroupFilter);
   }
 
   myEditCurrentArgument->setFocus();
@@ -1028,41 +1084,50 @@ void SMESHGUI_EditMeshDlg::SelectionIntoArgument()
     myActor = 0;
     
     int nbSel = SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString);
-    if (nbSel != 1)
+    if (nbSel != 1) {
+      myIdPreview->SetPointsLabeled(false);
+      SMESH::SetPointRepresentation(false);
+      mySelectionMgr->clearFilters();
+      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+        aViewWindow->SetSelectionMode(ActorSelection);
       return;
+    }
 
     SALOME_ListIO aList;
-    mySelectionMgr->selectedObjects(aList, SVTK_Viewer::Type());
+    mySelectionMgr->selectedObjects(aList);
     
     Handle(SALOME_InteractiveObject) IO = aList.First();
     myMesh = SMESH::GetMeshByIO(IO);
     
     if (myMesh->_is_nil())
       return;
+
+    LineEditMesh->setText(aString);
     
     myActor = SMESH::FindActorByEntry(IO->getEntry());
     if (!myActor)
       myActor = SMESH::FindActorByObject(myMesh);
-    if(!myActor)
-      return;
     
-    mySubMeshOrGroup = SMESH::SMESH_IDSource::_nil();
-    
-    if ((!SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(IO)->_is_nil() || //SUBMESH OR GROUP
-         !SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IO)->_is_nil()) &&
-        !SMESH::IObjectToInterface<SMESH::SMESH_IDSource>(IO)->_is_nil())
-      mySubMeshOrGroup = SMESH::IObjectToInterface<SMESH::SMESH_IDSource>(IO);
-     
-    LineEditMesh->setText(aString);
-
-    if (myAction == 0) {
-      SMESH::SetPointRepresentation(true);
-      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-        aViewWindow->SetSelectionMode(NodeSelection);
+    if ( myActor && myTypeId ==1 ) {
+      mySubMeshOrGroup = SMESH::SMESH_IDSource::_nil();
+      mySelectionMgr->installFilter(myMeshOrSubMeshOrGroupFilter);
+      
+      if ((!SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(IO)->_is_nil() || //SUBMESH OR GROUP
+           !SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IO)->_is_nil()) &&
+          !SMESH::IObjectToInterface<SMESH::SMESH_IDSource>(IO)->_is_nil())
+        mySubMeshOrGroup = SMESH::IObjectToInterface<SMESH::SMESH_IDSource>(IO);
+      
+      if (myAction == 0) {
+        SMESH::SetPointRepresentation(true);
+        if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+          aViewWindow->SetSelectionMode(NodeSelection);
+      }
+      else
+        if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+          aViewWindow->SetSelectionMode(CellSelection);
     }
-    else
-      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-        aViewWindow->SetSelectionMode(CellSelection);
+
+    updateControls();
   }
 }
 
@@ -1074,6 +1139,7 @@ void SMESHGUI_EditMeshDlg::DeactivateActiveDialog()
 {
   if (GroupConstructors->isEnabled()) {
     GroupConstructors->setEnabled(false);
+    TypeBox->setEnabled(false);
     GroupMesh->setEnabled(false);
     GroupCoincident->setEnabled(false);
     GroupEdit->setEnabled(false);
@@ -1095,6 +1161,7 @@ void SMESHGUI_EditMeshDlg::ActivateThisDialog()
   /* Emit a signal to deactivate the active dialog */
   mySMESHGUI->EmitSignalDeactivateDialog();
   GroupConstructors->setEnabled(true);
+  TypeBox->setEnabled(true);
   GroupMesh->setEnabled(true);
   GroupCoincident->setEnabled(true);
   GroupEdit->setEnabled(true);
@@ -1150,3 +1217,63 @@ void SMESHGUI_EditMeshDlg::keyPressEvent( QKeyEvent* e)
     ClickOnHelp();
   }
 }
+
+//=================================================================================
+// function : onTypeChanged()
+// purpose  : the type radio button management
+//=================================================================================
+void SMESHGUI_EditMeshDlg::onTypeChanged (int id)
+{
+  if (myTypeId == id)
+    return;
+
+  myTypeId = id;
+  switch (id) {
+  case 0:
+    myIdPreview->SetPointsLabeled(false);
+    SMESH::SetPointRepresentation(false);
+    if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+      aViewWindow->SetSelectionMode(ActorSelection);
+    mySelectionMgr->clearFilters();
+    if (myAction == 0)
+      GroupCoincidentWidget->hide();
+    else
+      GroupCoincident->hide();
+    GroupEdit->hide();
+    break;
+  case 1:
+    SMESH::UpdateView();
+
+    // Costruction of the logical filter
+    SMESH_TypeFilter* aMeshOrSubMeshFilter = new SMESH_TypeFilter (MESHorSUBMESH);
+    SMESH_TypeFilter* aSmeshGroupFilter    = new SMESH_TypeFilter (GROUP);
+    
+    QList<SUIT_SelectionFilter*> aListOfFilters;
+    if (aMeshOrSubMeshFilter) aListOfFilters.append(aMeshOrSubMeshFilter);
+    if (aSmeshGroupFilter)    aListOfFilters.append(aSmeshGroupFilter);
+    
+    myMeshOrSubMeshOrGroupFilter =
+      new SMESH_LogicalFilter (aListOfFilters, SMESH_LogicalFilter::LO_OR);
+
+    if (myAction == 0) {
+      GroupCoincidentWidget->show();
+      SMESH::SetPointRepresentation(true);
+      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+        aViewWindow->SetSelectionMode(NodeSelection);
+    }
+    else {
+      GroupCoincident->show();
+      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+        aViewWindow->SetSelectionMode(CellSelection);
+    }
+    GroupEdit->show();
+    break;
+  }
+  updateControls();
+
+  qApp->processEvents();
+  updateGeometry();
+  resize(10,10);
+
+  SelectionIntoArgument();
+}
index 14b3d9ff77c33e9fc22a69965b5160a952d4514e..2a9c487ae01fba4a5b96b1c7371bc223a8ae8cb4 100644 (file)
@@ -49,6 +49,7 @@ class QPushButton;
 class QRadioButton;
 class QCheckBox;
 class QListWidget;
+class QButtonGroup;
 class SMESHGUI;
 class SMESHGUI_SpinBox;
 class SMESH_Actor;
@@ -102,6 +103,7 @@ private:
 
   int                       myAction;
   bool                      myIsBusy;
+  int                       myTypeId;
 
   // Widgets
   QGroupBox*                GroupConstructors;
@@ -119,6 +121,7 @@ private:
   QLineEdit*                LineEditMesh;
 
   QGroupBox*                GroupCoincident;
+  QWidget*                  GroupCoincidentWidget;
   QLabel*                   TextLabelTolerance;
   SMESHGUI_SpinBox*         SpinBoxTolerance;
   QPushButton*              DetectButton;
@@ -132,6 +135,9 @@ private:
   QPushButton*              AddElemButton;
   QPushButton*              RemoveElemButton;
   QPushButton*              SetFirstButton;
+
+  QGroupBox*                TypeBox;
+  QButtonGroup*             GroupType;
     
   QString                   myHelpFileName;
 
@@ -154,6 +160,7 @@ private:
   void                      SelectionIntoArgument();
   void                      DeactivateActiveDialog();
   void                      ActivateThisDialog();
+  void                      onTypeChanged(int);
 };
 
 #endif // SMESHGUI_EDITMESHDLG_H
index 025b4c561f897a450cdd050d736a96181a07861e..f045800418ec0ace31f92dc5e956bd7fead62c9b 100644 (file)
             <source>MEN_MERGE_ELEMENTS</source>
             <translation>Merge Elements</translation>
         </message>
+
         <message>
             <source>MEN_MESH</source>
             <translation>Mesh</translation>
@@ -811,7 +812,7 @@ Please enter correct values and try again</translation>
         <message>
             <source>SMESH_ADD_HYP_WRN</source>
             <translation>"%1" assigned but:
-</translation>
+        </translation>
         </message>
         <message>
             <source>SMESH_ADD_POLYGON</source>
@@ -1474,10 +1475,38 @@ add the exported data to its contents?</translation>
             <source>SMESH_MEN_SubMeshesOnVertex</source>
             <translation>SubMeshes On Vertex</translation>
         </message>
+       <message>
+            <source>SMESH_AUTOMATIC</source>
+            <translation>Automatic</translation>
+        </message>
+       <message>
+            <source>SMESH_MANUAL</source>
+            <translation>Manual</translation>
+        </message>
         <message>
             <source>SMESH_MERGE_ELEMENTS</source>
             <translation>Merge elements</translation>
         </message>
+       <message>
+            <source>SMESH_MODE</source>
+            <translation>Mode</translation>
+        </message>
+       <message>
+            <source>SMESH_MERGED_ELEMENTS</source>
+            <translation>%1 elements successfully merged.</translation>
+        </message>
+       <message>
+            <source>SMESH_MERGED_NODES</source>
+            <translation>%1 nodes successfully merged.</translation>
+        </message>
+       <message>
+            <source>SMESH_NO_ELEMENTS_DETECTED</source>
+            <translation>There are no elements to merge.</translation>
+        </message>
+       <message>
+            <source>SMESH_NO_NODES_DETECTED</source>
+            <translation>There are no nodes to merge.</translation>
+        </message>
         <message>
             <source>SMESH_MERGE_NODES</source>
             <translation>Merge nodes</translation>
@@ -4810,6 +4839,7 @@ It is impossible to read point coordinates from file</translation>
             <source>MERGE_EQUAL_ELEMENTS</source>
             <translation>Merge equal elements</translation>
         </message>
+
         <message>
             <source>NODE1_TO_MERGE</source>
             <translation>Node 1 To Merge</translation>