mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-24 08:20:34 +05:00
0020631: EDF 1195 SMESH : Merge Node : Optional display of the nodes of the mesh
This commit is contained in:
parent
a0e0178a73
commit
9e7387ef24
Binary file not shown.
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 29 KiB |
BIN
doc/salome/gui/SMESH/images/mergeelems_auto.png
Normal file
BIN
doc/salome/gui/SMESH/images/mergeelems_auto.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 36 KiB |
BIN
doc/salome/gui/SMESH/images/mergenodes_auto.png
Normal file
BIN
doc/salome/gui/SMESH/images/mergenodes_auto.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
@ -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
|
||||
|
@ -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_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, 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
|
||||
|
||||
<ul>
|
||||
<li>\b Name is the name of the mesh whose nodes will be merged.</li>
|
||||
<li>\b Tolerance is a maximum distance between nodes sufficient for
|
||||
merging.
|
||||
<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.
|
||||
|
||||
*/
|
||||
*/
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -425,6 +425,7 @@
|
||||
<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>
|
||||
|
Loading…
Reference in New Issue
Block a user