From 7bf0e19b3d2b5968395064901aee8d949f655559 Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 23 Oct 2012 07:45:56 +0000 Subject: [PATCH] 21680: EDF 2288 SMESH: creation of 0D elements from other elements --- .../gui/SMESH/images/dlg_0D_on_all_nodes.png | Bin 0 -> 17237 bytes doc/salome/gui/SMESH/images/image146.png | Bin 21981 -> 24900 bytes resources/Makefile.am | 2 + resources/mesh_0D_elem.png | Bin 0 -> 322 bytes resources/mesh_0D_on_all_nodes.png | Bin 0 -> 579 bytes src/SMESHGUI/Makefile.am | 7 +- .../SMESHGUI_Add0DElemsOnAllNodesDlg.cxx | 500 ++++++++++++++++++ .../SMESHGUI_Add0DElemsOnAllNodesDlg.h | 110 ++++ src/SMESHGUI/SMESH_images.ts | 6 +- src/SMESHGUI/SMESH_msg_en.ts | 62 ++- 10 files changed, 676 insertions(+), 11 deletions(-) create mode 100644 doc/salome/gui/SMESH/images/dlg_0D_on_all_nodes.png create mode 100644 resources/mesh_0D_elem.png create mode 100644 resources/mesh_0D_on_all_nodes.png create mode 100644 src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx create mode 100644 src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.h diff --git a/doc/salome/gui/SMESH/images/dlg_0D_on_all_nodes.png b/doc/salome/gui/SMESH/images/dlg_0D_on_all_nodes.png new file mode 100644 index 0000000000000000000000000000000000000000..842b3bb5b1b92f0439f8ad10285beb5567f93ab4 GIT binary patch literal 17237 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/image146.png b/doc/salome/gui/SMESH/images/image146.png index a952f5fccfd7ba55a04905a062a33ccd3cc9912e..06c1c036781b72e265e924e0f069d6a9a0d511a1 100755 GIT binary patch literal 24900 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%0DjH!gJ|F)@$F^=Ty~-La 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 Mp00i_>zopr00zi(%>V!Z literal 0 HcmV?d00001 diff --git a/resources/mesh_0D_on_all_nodes.png b/resources/mesh_0D_on_all_nodes.png new file mode 100644 index 0000000000000000000000000000000000000000..823765680503ec6ece62f9f528c3ce657b38c73c GIT binary patch literal 579 zcmV-J0=)f+P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyu4 z5ELcvX2x^?00F~EL_t(I%dL}5YZFlvhM$|3kdK9m2-7AmWZbmV7;x1^sa=T%i&%mX z$S>%}4-njTSrCH%!NtTMAh>8Zg^F(4G;Z3}6uOas%!nDa$3^eR?eq>N)fX;v=ic|6 z^PZ2Z$iT2LB^_B}_erd}-7WytW^V>K)Rfu4_xjalPYko0Ih!*vDD8Ipjz}T-Jp^jN ztl^lz_Z08|_>!|Ji;GhNuyNxPjn?Y%R^ge{>-B`PANXEBZ5R074#1>&=r|6Y!4d!) z*FMr2-2Zd8_oG;H&$q=?nip_EVHk#-tU7AuZM#kw0kG2FeCob=-n#c|@J%cEu2Zx^ zWz}%2&=P=$A6{Iq)fQx8BK$hNvM<0K@DunP_@1gZd!oOK!1m;&8kQ;&m*Lg&OODX1z!sd|wi6mM+pBJT+)%jI}ie4^I9@Qw9R$@fI3#3xC>tLtSiGU-$BC`a; zQY9R_%fnJdEc-R{eB_ssfpiI?k*qB9=Z-ULmui^q`nbbuOF66SS5x?}_zg_zu5H@o R&~yL*002ovPDHLkV1m*@3jzQD literal 0 HcmV?d00001 diff --git a/src/SMESHGUI/Makefile.am b/src/SMESHGUI/Makefile.am index 9bfd599b3..e48d1e8d7 100644 --- a/src/SMESHGUI/Makefile.am +++ b/src/SMESHGUI/Makefile.am @@ -97,6 +97,7 @@ salomeinclude_HEADERS = \ SMESHGUI_PreviewDlg.h \ SMESHGUI_ReorientFacesDlg.h \ SMESHGUI_PropertiesDlg.h \ + SMESHGUI_Add0DElemsOnAllNodesDlg.h \ SMESH_SMESHGUI.hxx # Libraries targets @@ -173,7 +174,8 @@ dist_libSMESH_la_SOURCES = \ SMESHGUI_FileValidator.cxx \ SMESHGUI_PreviewDlg.cxx \ SMESHGUI_ReorientFacesDlg.cxx \ - SMESHGUI_PropertiesDlg.cxx + SMESHGUI_PropertiesDlg.cxx \ + SMESHGUI_Add0DElemsOnAllNodesDlg.cxx MOC_FILES = \ SMESHGUI_moc.cxx \ @@ -233,7 +235,8 @@ MOC_FILES = \ SMESHGUI_MeshOrderOp_moc.cxx \ SMESHGUI_PreviewDlg_moc.cxx \ SMESHGUI_ReorientFacesDlg_moc.cxx \ - SMESHGUI_PropertiesDlg_moc.cxx + SMESHGUI_PropertiesDlg_moc.cxx \ + SMESHGUI_Add0DElemsOnAllNodesDlg_moc.cxx nodist_libSMESH_la_SOURCES= \ $(MOC_FILES) diff --git a/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx b/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx new file mode 100644 index 000000000..1f67962f8 --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx @@ -0,0 +1,500 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// SMESH SMESHGUI : GUI for SMESH component +// File : SMESHGUI_Add0DElemsOnAllNodesDlg.cxx +// Created : Fri Oct 19 15:51:24 2012 +// Author : Edward AGAPOV (eap) + +#include "SMESHGUI_Add0DElemsOnAllNodesDlg.h" + +#include "SMESHGUI.h" +#include "SMESHGUI_FilterDlg.h" +#include "SMESHGUI_MeshUtils.h" +#include "SMESHGUI_Utils.h" +#include "SMESHGUI_VTKUtils.h" +#include "SMESH_LogicalFilter.hxx" +#include "SMESH_TypeFilter.hxx" + +#include +#include +#include +#include +#include + +// Qt includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include CORBA_SERVER_HEADER(SMESH_Mesh) +#include CORBA_SERVER_HEADER(SMESH_MeshEditor) + +#define SPACING 6 +#define MARGIN 11 + +enum { SEL_OBJECT, SEL_ELEMENTS, SEL_NODES }; + +//================================================================================ +/*! + * \brief Dialog Constructor + */ +//================================================================================ + +SMESHGUI_Add0DElemsOnAllNodesDlg::SMESHGUI_Add0DElemsOnAllNodesDlg() + : SMESHGUI_Dialog( 0, false, true ), + myIDValidator( this ) +{ + setWindowTitle( tr( "CAPTION" ) ); + + // Seletction type radio buttons + + QGroupBox* selTypeGrBox = new QGroupBox( mainFrame() ); + // + QRadioButton* objBtn = new QRadioButton( tr( "SMESH_SUBMESH_GROUP"),selTypeGrBox ); + QRadioButton* elemBtn = new QRadioButton( tr( "SMESH_ELEMENTS" ),selTypeGrBox ); + QRadioButton* nodeBtn = new QRadioButton( tr( "SMESH_NODES" ),selTypeGrBox ); + // + QHBoxLayout* selTypeLay = new QHBoxLayout( selTypeGrBox ); + selTypeLay->setMargin(MARGIN); + selTypeLay->setSpacing(SPACING); + selTypeLay->addWidget( objBtn ); + selTypeLay->addWidget( elemBtn ); + selTypeLay->addWidget( nodeBtn ); + objBtn->setChecked(true); + // + mySelTypeBtnGrp = new QButtonGroup( mainFrame() ); + mySelTypeBtnGrp->addButton( objBtn , SEL_OBJECT ); + mySelTypeBtnGrp->addButton( elemBtn, SEL_ELEMENTS ); + mySelTypeBtnGrp->addButton( nodeBtn, SEL_NODES ); + + // Label, Select Btn, LineEdit, Filter Btn + + // myLabel = new QLabel(tr("SMESH_NAME"), mainFrame() ); + // QPushButton* selBtn = new QPushButton( mainFrame() ); + // QPixmap imageSelect( resourceMgr()->loadPixmap("SMESH", tr("ICON_SELECT")) ); + // selBtn->setIcon(image2); + // myLineEdit = new QLineEdit( mainFrame() ); + + setObjectPixmap( "SMESH", tr( "ICON_SELECT" ) ); + createObject( tr( "SMESH_NAME" ), mainFrame(), 0 ); + + myFilterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), mainFrame() ); + + // List of groups + + myGroupBox = new QGroupBox( tr( "SMESH_ADD_TO_GROUP" ), mainFrame() ); + myGroupBox->setCheckable( true ); + + myGroupLabel = new QLabel( tr( "SMESH_GROUP" ), myGroupBox ); + myGroupListCmBox = new QComboBox( myGroupBox ); + myGroupListCmBox->setEditable( true ); + myGroupListCmBox->setInsertPolicy( QComboBox::NoInsert ); + + QHBoxLayout* groupsLayout = new QHBoxLayout( myGroupBox ); + groupsLayout->setSpacing(SPACING); + groupsLayout->setMargin(MARGIN); + groupsLayout->addWidget( myGroupLabel ); + groupsLayout->addWidget( myGroupListCmBox, 1 ); + + // Main layout + + QGridLayout* aLay = new QGridLayout( mainFrame() ); + aLay->setMargin(MARGIN); + aLay->setSpacing(SPACING); + // + aLay->addWidget( selTypeGrBox, 0, 0, 1, 5 ); + // + aLay->addWidget( objectWg( 0, Label ), 1, 0 ); + aLay->addWidget( objectWg( 0, Btn ), 1, 1 ); + aLay->addWidget( objectWg( 0, Control), 1, 2, 1, 2 ); + aLay->addWidget( myFilterBtn, 1, 4 ); + // + aLay->addWidget( myGroupBox, 2, 0, 1, 5 ); + + // Signals + + connect( myGroupBox, SIGNAL( toggled( bool )), SLOT( onGroupChecked() )); + connect( mySelTypeBtnGrp, SIGNAL( buttonClicked(int) ), SLOT( onSelTypeChange(int))); + + onSelTypeChange( SEL_OBJECT ); +} + +//================================================================================ +/*! + * \brief SLOT to enable/disable groups + */ +//================================================================================ + +void SMESHGUI_Add0DElemsOnAllNodesDlg::onGroupChecked( bool on ) +{ + myGroupLabel->setEnabled( on ); + myGroupListCmBox->setEnabled( on ); +} + +//================================================================================ +/*! + * \brief SLOT to enable/disable groups + */ +//================================================================================ + +void SMESHGUI_Add0DElemsOnAllNodesDlg::onSelTypeChange( int selType ) +{ + setNameIndication( 0, selType == SEL_OBJECT ? OneName : ListOfNames ); + setReadOnly ( 0, selType == SEL_OBJECT ); + + QLabel* label = qobject_cast< QLabel* >( objectWg(0, Label )); + switch( selType ) { + case SEL_OBJECT: label->setText( tr("SMESH_NAME")); break; + case SEL_ELEMENTS: label->setText( tr("ELEMENT_IDS")); break; + case SEL_NODES: label->setText( tr("NODE_IDS")); break; + default:; + } + QLineEdit* lineEdit = qobject_cast< QLineEdit* >( objectWg(0, Control )); + lineEdit->setText(""); + lineEdit->setValidator( selType == SEL_OBJECT ? 0 : & myIDValidator ); + + myFilterBtn->setEnabled( selType != SEL_OBJECT ); + + emit selTypeChanged( selType ); +} + +//================================================================================ +/*! + * \brief Return type of selected object: [SEL_OBJECT, SEL_ELEMENTS, SEL_NODES] + */ +//================================================================================ + +int SMESHGUI_Add0DElemsOnAllNodesDlg::getSelectionType() const +{ + return mySelTypeBtnGrp->checkedId(); +} + +//================================================================================ +/*! + * \brief Checks consistency of data + */ +//================================================================================ + +bool SMESHGUI_Add0DElemsOnAllNodesDlg::isValid() +{ + if( myGroupBox->isChecked() && myGroupListCmBox->currentText().isEmpty() ) { + SUIT_MessageBox::warning( this, tr( "SMESH_WRN_WARNING" ), tr( "GROUP_NAME_IS_EMPTY" ) ); + return false; + } + return true; +} + +//================================================================================ +/*! + * \brief Operation Constructor + */ +//================================================================================ + +SMESHGUI_Add0DElemsOnAllNodesOp::SMESHGUI_Add0DElemsOnAllNodesOp() + :SMESHGUI_SelectionOp(), + myDlg( new SMESHGUI_Add0DElemsOnAllNodesDlg ), + myFilterDlg( 0 ) +{ + myHelpFileName = "adding_nodes_and_elements_page#adding_0delems_anchor.html"; + + connect( myDlg, SIGNAL( selTypeChanged(int) ), SLOT( onSelTypeChange(int))); + connect( myDlg->myFilterBtn, SIGNAL( clicked()), SLOT( onSetFilter() )); +} + +//================================================================================ +/*! + * \brief Destructor + */ +//================================================================================ + +SMESHGUI_Add0DElemsOnAllNodesOp::~SMESHGUI_Add0DElemsOnAllNodesOp() +{ + if ( myFilterDlg ) { + myFilterDlg->setParent( 0 ); + delete myFilterDlg; + myFilterDlg = 0; + } +} + +//================================================================================ +/*! + * \brief Start + */ +//================================================================================ + +void SMESHGUI_Add0DElemsOnAllNodesOp::startOperation() +{ + SMESHGUI_SelectionOp::startOperation(); + + myDlg->myGroupBox->setChecked( false ); + myDlg->activateObject( 0 ); + myDlg->show(); + + selectionDone(); +} + +//================================================================================ +/*! + * \brief Treat changed selection + */ +//================================================================================ + +void SMESHGUI_Add0DElemsOnAllNodesOp::selectionDone() +{ + if (myFilterDlg && myFilterDlg->isVisible()) return; // filter dgl active + if (!myDlg->myGroupBox->isEnabled()) return; // inactive + + myIO.Nullify(); + myDlg->setObjectText( 0, ""); + + SALOME_ListIO aList; + selectionMgr()->selectedObjects( aList ); + if ( aList.Extent() == 1 ) + myIO = aList.First(); + else + return; + + QString ids; + switch ( myDlg->getSelectionType() ) { + case SEL_OBJECT: + SMESHGUI_SelectionOp::selectionDone(); + break; + case SEL_ELEMENTS: + SMESH::GetNameOfSelectedElements( selector(), myIO, ids ); + myDlg->setObjectText( 0, ids ); + break; + case SEL_NODES: + SMESH::GetNameOfSelectedNodes( selector(), myIO, ids ); + myDlg->setObjectText( 0, ids ); + break; + default:; + } + + // fill the list of existing groups + myDlg->myGroupListCmBox->clear(); + myDlg->myGroupListCmBox->addItem( QString() ); + if ( !myIO.IsNull() && myIO->hasEntry()) { + _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); + _PTR(SObject) meshSO = aStudy->FindObjectID( myIO->getEntry() ); + _PTR(SObject) group0DRoot; + if ( meshSO->FindSubObject( SMESH::Tag_0DElementsGroups, group0DRoot )) + { + _PTR(ChildIterator) group0DIter = aStudy->NewChildIterator( group0DRoot ); + for ( ; group0DIter->More(); group0DIter->Next() ) + { + _PTR(SObject) groupSO = group0DIter->Value(); + std::string groupName = groupSO->GetName(); + if ( !groupName.empty() ) + myDlg->myGroupListCmBox->addItem( groupName.c_str() ); + } + } + } +} + +//================================================================================ +/*! + * \brief Return a filter of objects + */ +//================================================================================ + +SUIT_SelectionFilter* SMESHGUI_Add0DElemsOnAllNodesOp::createFilter( const int ) const +{ + if ( myDlg->getSelectionType() == SEL_OBJECT ) + { + // Create a filter of objects: any IDSource except the group of 0D elements + + QList filters; + filters.push_back( new SMESH_TypeFilter( SMESH::GROUP_0D )); + SMESH_LogicalFilter* not0DGroup = new SMESH_LogicalFilter( filters, + SMESH_LogicalFilter::LO_NOT, + /*takeOwnership=*/true); + filters[0] = not0DGroup; + filters.push_back( new SMESH_TypeFilter( SMESH::IDSOURCE )); + return new SMESH_LogicalFilter( filters, + SMESH_LogicalFilter::LO_AND, + /*takeOwnership=*/true); + } + return 0; +} + +//================================================================================ +/*! + * \brief Makes its main job + */ +//================================================================================ + +bool SMESHGUI_Add0DElemsOnAllNodesOp::onApply() +{ + if ( !myDlg->isValid() ) + return false; + + // get a mesh + SMESH::SMESH_IDSource_var meshObject; + SMESH::SMESH_Mesh_var mesh; + if ( !myIO.IsNull() ) + { + CORBA::Object_var obj = SMESH::IObjectToObject( myIO ); + meshObject = SMESH::SMESH_IDSource::_narrow( obj ); + if ( !meshObject->_is_nil() ) + mesh = meshObject->GetMesh(); + } + if ( mesh->_is_nil() ) + { + SUIT_MessageBox::warning( myDlg, tr( "SMESH_WRN_WARNING" ), tr( "SMESH_BAD_SELECTION" ) ); + return false; + } + + try { + SMESH::SMESH_MeshEditor_var editor = mesh->GetMeshEditor(); + + // make SMESH_IDSource holding IDs of selected elements + if ( myDlg->getSelectionType() != SEL_OBJECT ) + { + QString elemIDs = myDlg->objectText( 0 ); + QStringList idList = elemIDs.split( " ", QString::SkipEmptyParts ); + if ( idList.count() == 0 ) + { + SUIT_MessageBox::warning( myDlg, tr( "SMESH_WRN_WARNING" ), tr( "SMESH_BAD_SELECTION" ) ); + return false; + } + SMESH::long_array_var idArray = new SMESH::long_array; + idArray->length( idList.count() ); + QStringList::iterator idIt = idList.begin(); + for ( int i = 0; idIt != idList.end(); ++idIt, ++i ) + idArray[i] = idIt->toLong(); + SMESH::ElementType elemType = + myDlg->getSelectionType() == SEL_NODES ? SMESH::NODE : SMESH::ALL; + meshObject = editor->MakeIDSource( idArray, elemType ); + } + + // Create 0D elements + + int prevNb0D = mesh->Nb0DElements(); + + QString groupName = myDlg->myGroupListCmBox->currentText(); + SMESH::SMESH_IDSource_var newObj = + editor->Create0DElementsOnAllNodes( meshObject, groupName.toLatin1().data() ); + + int newNb0D = mesh->Nb0DElements() - prevNb0D; + SUIT_MessageBox::information( myDlg, tr( "SMESH_INFORMATION" ), + tr( "NB_NEW_0D" ).arg( newNb0D ), + SUIT_MessageBox::Ok, SUIT_MessageBox::Ok); + } + catch ( const SALOME::SALOME_Exception& S_ex ) { + SalomeApp_Tools::QtCatchCorbaException( S_ex ); + return false; + } + catch (...) { + return false; + } + + // clear selection + + if ( myDlg->getSelectionType() == SEL_OBJECT ) + { + selectionMgr()->setSelectedObjects( SALOME_ListIO(), /*append=*/false ); + } + else + { + selector()->ClearIndex(); + } + selectionDone(); + + SMESH::UpdateView(); + SMESHGUI::Modified(); + + if ( myDlg->myGroupBox->isChecked() ) + SMESHGUI::GetSMESHGUI()->updateObjBrowser(); + + return true; +} + +//================================================================================ +/*! + * \brief Sets selection mode + */ +//================================================================================ + +void SMESHGUI_Add0DElemsOnAllNodesOp::onSelTypeChange(int selType) +{ + switch ( selType ) { + case SEL_OBJECT: setSelectionMode( ActorSelection ); break; + case SEL_ELEMENTS: setSelectionMode( CellSelection ); break; + case SEL_NODES: setSelectionMode( NodeSelection ); break; + } + + if ( selType != SEL_OBJECT ) + connect( myDlg, SIGNAL( objectChanged( int, const QStringList& )), + this, SLOT ( onTextChanged( int, const QStringList& ))); + else + disconnect( myDlg, SIGNAL( objectChanged( int, const QStringList& )), + this, SLOT ( onTextChanged( int, const QStringList& ))); + + selectionDone(); +} + +//================================================================================ +/*! + * \brief Install + * + * + */ +//================================================================================ + +void SMESHGUI_Add0DElemsOnAllNodesOp::onSetFilter() +{ + SMESH::SMESH_Mesh_var mesh = SMESH::GetMeshByIO( myIO ); + if ( mesh->_is_nil()) { + SUIT_MessageBox::critical( myDlg, tr("SMESH_ERROR"), tr("NO_MESH_SELECTED")); + return; + } + QList types; + if ( myDlg->getSelectionType() == SEL_NODES ) { + types.push_back( SMESH::NODE ); + } + else if ( myDlg->getSelectionType() == SEL_ELEMENTS ) { + types.push_back( SMESH::EDGE ); + types.push_back( SMESH::FACE ); + types.push_back( SMESH::VOLUME ); + } + else + return; + if ( !myFilterDlg ) + myFilterDlg = new SMESHGUI_FilterDlg( getSMESHGUI(), SMESH::ALL ); + + myFilterDlg->Init( types ); + myFilterDlg->SetSelection(); + myFilterDlg->SetMesh( mesh ); + myFilterDlg->SetSourceWg( myDlg->objectWg( 0, LightApp_Dialog::Control )); + + myFilterDlg->show(); +} diff --git a/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.h b/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.h new file mode 100644 index 000000000..c5a6b3f6f --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.h @@ -0,0 +1,110 @@ +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// SMESH SMESHGUI : GUI for SMESH component + +#ifndef SMESHGUI_ADD0DELEMSONALLNODESDLG_H +#define SMESHGUI_ADD0DELEMSONALLNODESDLG_H + +#include "SMESH_SMESHGUI.hxx" + +#include "SMESHGUI_SelectionOp.h" +#include "SMESHGUI_Dialog.h" +#include "SMESHGUI_IdValidator.h" + +class SMESHGUI_FilterDlg; +class SMESHGUI_Add0DElemsOnAllNodesOp; +class QButtonGroup; +class QPushButton; +class QGroupBox; +class QLabel; +class QComboBox; + +//--------------------------------------------------------------------------------- +/*! + * \brief Dialog creating 0D elements on all nodes of given elements + */ +class SMESHGUI_EXPORT SMESHGUI_Add0DElemsOnAllNodesDlg : public SMESHGUI_Dialog +{ + Q_OBJECT + + public: + SMESHGUI_Add0DElemsOnAllNodesDlg(); + + int getSelectionType() const; + bool isValid(); + +signals: + + void selTypeChanged( int selType ); + + + private slots: + + void onGroupChecked ( bool on ); + void onSelTypeChange( int selType ); + + private: + + friend class SMESHGUI_Add0DElemsOnAllNodesOp; + + QButtonGroup* mySelTypeBtnGrp; + QPushButton* myFilterBtn; + QGroupBox* myGroupBox; + QLabel* myGroupLabel; + QComboBox* myGroupListCmBox; + + SMESHGUI_IdValidator myIDValidator; +}; + +//--------------------------------------------------------------------------------- +/*! + * \brief Operation creating 0D elements on all nodes of given elements + */ +class SMESHGUI_EXPORT SMESHGUI_Add0DElemsOnAllNodesOp : public SMESHGUI_SelectionOp +{ + Q_OBJECT + + public: + SMESHGUI_Add0DElemsOnAllNodesOp(); + ~SMESHGUI_Add0DElemsOnAllNodesOp(); + + virtual LightApp_Dialog* dlg() const { return myDlg; } + + protected: + virtual void startOperation(); + virtual void selectionDone(); + virtual SUIT_SelectionFilter* createFilter( const int ) const; + + protected slots: + virtual bool onApply(); + void onSelTypeChange(int); + void onSetFilter(); + + private: + SMESHGUI_Add0DElemsOnAllNodesDlg* myDlg; + SMESHGUI_FilterDlg* myFilterDlg; + Handle(SALOME_InteractiveObject) myIO; + //SUIT_SelectionFilter* myObjectFilter; +}; + +#endif diff --git a/src/SMESHGUI/SMESH_images.ts b/src/SMESHGUI/SMESH_images.ts index 6012d758c..42874a52e 100644 --- a/src/SMESHGUI/SMESH_images.ts +++ b/src/SMESHGUI/SMESH_images.ts @@ -105,7 +105,11 @@ ICON_DLG_ELEM0D - mesh_vertex.png + mesh_0D_elem.png + + + ICON_0D_ON_ALL_NODES + mesh_0D_on_all_nodes.png ICON_DLG_EDGE diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index c10fa0cf2..a92bd040d 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -160,6 +160,10 @@ ELEMENT_ID Element ID + + ELEMENT_IDS + Element IDs + FREE_BORDERS Free Borders @@ -372,6 +376,10 @@ MEN_ELEMS0D 0D Elements + + MEN_0D_ON_ALL_NODES + 0D Elements on Element Nodes + MEN_BALL Ball @@ -1075,6 +1083,10 @@ Do you want to convert it to the standalone group? NODE_ID Node ID + + NODE_IDS + Node IDs + NON_SMESH_OBJECTS_SELECTED There are objects selected which do not belong to %1 component. @@ -2435,7 +2447,11 @@ Check algorithm documentation for supported geometry SMESH_SELECT_WHOLE_MESH - Select whole mesh, submesh or group + Select whole mesh, sub-mesh or group + + + SMESH_SUBMESH_GROUP + Mesh, sub-mesh, group SMESH_SET_COLOR @@ -2829,6 +2845,10 @@ Please check preferences of Mesh module. STB_ELEM0D 0D Element + + STB_0D_ON_ALL_NODES + Make 0D Elements on Element Nodes + STB_ELEMS0D 0D Elements @@ -3437,6 +3457,10 @@ Please check preferences of Mesh module. TOP_DISP_ENT Display entity + + TOP_0D_ON_ALL_NODES + Make 0D Elements on Element Nodes + TOP_ELEM0D 0D Element @@ -4013,13 +4037,6 @@ Input value precision can be adjusted using It can't be deleted - - SMESHGUI_GroupDlg - - ALLOW_ELEM_LIST_MODIF - Enable manual edition - - SMESHGUI @@ -4328,6 +4345,35 @@ Please, create VTK viewer and try again Sub-shapes preview chunk size + + SMESHGUI_GroupDlg + + ALLOW_ELEM_LIST_MODIF + Enable manual edition + + + + SMESHGUI_Add0DElemsOnAllNodesDlg + + CAPTION + Make 0D Elements on Element Nodes + + + OBJ_BTN + Mesh, sub-mesh, group + + + NB_NEW_0D + %1 0D elements created + + + + SMESHGUI_Add0DElemsOnAllNodesOp + + NB_NEW_0D + %1 0D elements created + + SMESHGUI_AddQuadraticElementDlg