mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-24 16:30:34 +05:00
Modify 'Modification of orientation' dialog box: implement processing of 'Bad oriented volume' filter.
This commit is contained in:
parent
be0f45394e
commit
fa076b4364
@ -973,7 +973,8 @@ void SMESHGUI_FilterTable::updateAdditionalWidget()
|
||||
GetCriterionType( aRow ) != FT_BelongToGeom &&
|
||||
GetCriterionType( aRow ) != FT_LyingOnGeom &&
|
||||
GetCriterionType( aRow ) != FT_RangeOfIds &&
|
||||
GetCriterionType( aRow ) != FT_FreeEdges;
|
||||
GetCriterionType( aRow ) != FT_FreeEdges &&
|
||||
GetCriterionType( aRow ) != FT_BadOrientedVolume;
|
||||
if ( !myAddWidgets.contains( anItem ) )
|
||||
{
|
||||
myAddWidgets[ anItem ] = new AdditionalWidget( myWgStack );
|
||||
@ -1045,7 +1046,8 @@ void SMESHGUI_FilterTable::onCriterionChanged( const int row, const int col, con
|
||||
int aCriterionType = GetCriterionType( row );
|
||||
|
||||
if ( aType == SMESH::EDGE && aCriterionType == SMESH::FT_FreeBorders ||
|
||||
aType == SMESH::FACE && aCriterionType == SMESH::FT_FreeEdges )
|
||||
aType == SMESH::FACE && aCriterionType == SMESH::FT_FreeEdges ||
|
||||
aType == SMESH::VOLUME && aCriterionType == SMESH::FT_BadOrientedVolume )
|
||||
{
|
||||
if ( aCompareItem->count() > 0 )
|
||||
aCompareItem->setStringList( QStringList() );
|
||||
@ -1298,6 +1300,7 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria( const int theType )
|
||||
aCriteria[ SMESH::FT_RangeOfIds ] = tr( "RANGE_OF_IDS" );
|
||||
aCriteria[ SMESH::FT_BelongToGeom ] = tr( "BELONG_TO_GEOM" );
|
||||
aCriteria[ SMESH::FT_LyingOnGeom ] = tr( "LYING_ON_GEOM" );
|
||||
aCriteria[ SMESH::FT_BadOrientedVolume ] = tr( "BAD_ORIENTED_VOLUME" );
|
||||
}
|
||||
return aCriteria;
|
||||
}
|
||||
|
@ -47,7 +47,9 @@
|
||||
#include "SALOME_ListIteratorOfListIO.hxx"
|
||||
#include "VTKViewer_InteractorStyleSALOME.h"
|
||||
|
||||
#include <vtkCell.h>
|
||||
#include <vtkCell3D.h>
|
||||
#include <vtkQuad.h>
|
||||
#include <vtkTriangle.h>
|
||||
#include <vtkIdList.h>
|
||||
#include <vtkIntArray.h>
|
||||
#include <vtkCellArray.h>
|
||||
@ -69,6 +71,8 @@
|
||||
#include <qlistbox.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qapplication.h>
|
||||
#include <qhbuttongroup.h>
|
||||
#include <qradiobutton.h>
|
||||
|
||||
// IDL Headers
|
||||
#include "SALOMEconfig.h"
|
||||
@ -90,6 +94,7 @@
|
||||
SMESHGUI_MultiEditDlg::SMESHGUI_MultiEditDlg( QWidget* theParent,
|
||||
SALOME_Selection* theSelection,
|
||||
const int theMode,
|
||||
const bool the3d2d,
|
||||
const char* theName )
|
||||
: QDialog( theParent, theName, false,
|
||||
WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
|
||||
@ -98,10 +103,12 @@ SMESHGUI_MultiEditDlg::SMESHGUI_MultiEditDlg( QWidget* theParent,
|
||||
mySubmeshFilter = new SMESH_TypeFilter( SUBMESH );
|
||||
myGroupFilter = new SMESH_TypeFilter( GROUP );
|
||||
|
||||
myEntityType = 0;
|
||||
|
||||
myFilterType = theMode;
|
||||
QVBoxLayout* aDlgLay = new QVBoxLayout( this, MARGIN, SPACING );
|
||||
|
||||
QFrame* aMainFrame = createMainFrame ( this );
|
||||
QFrame* aMainFrame = createMainFrame ( this, the3d2d );
|
||||
QFrame* aBtnFrame = createButtonFrame( this );
|
||||
|
||||
aDlgLay->addWidget( aMainFrame );
|
||||
@ -116,7 +123,7 @@ SMESHGUI_MultiEditDlg::SMESHGUI_MultiEditDlg( QWidget* theParent,
|
||||
// name : SMESHGUI_MultiEditDlg::createMainFrame
|
||||
// Purpose : Create frame containing dialog's input fields
|
||||
//=======================================================================
|
||||
QFrame* SMESHGUI_MultiEditDlg::createMainFrame( QWidget* theParent )
|
||||
QFrame* SMESHGUI_MultiEditDlg::createMainFrame( QWidget* theParent, const bool the3d2d )
|
||||
{
|
||||
QGroupBox* aMainGrp = new QGroupBox( 1, Qt::Horizontal, theParent );
|
||||
aMainGrp->setFrameStyle( QFrame::NoFrame );
|
||||
@ -126,6 +133,15 @@ QFrame* SMESHGUI_MultiEditDlg::createMainFrame( QWidget* theParent )
|
||||
|
||||
// "Selected cells" group
|
||||
mySelGrp = new QGroupBox( 1, Qt::Horizontal, aMainGrp );
|
||||
|
||||
myEntityTypeGrp = 0;
|
||||
if ( the3d2d ) {
|
||||
myEntityTypeGrp = new QHButtonGroup( tr("SMESH_ELEMENTS_TYPE"), mySelGrp );
|
||||
(new QRadioButton( tr("SMESH_FACE"), myEntityTypeGrp ))->setChecked( true );
|
||||
(new QRadioButton( tr("SMESH_VOLUME"), myEntityTypeGrp ));
|
||||
myEntityType = myEntityTypeGrp->id( myEntityTypeGrp->selected() );
|
||||
}
|
||||
|
||||
QFrame* aFrame = new QFrame( mySelGrp );
|
||||
|
||||
myListBox = new QListBox( aFrame );
|
||||
@ -251,6 +267,9 @@ void SMESHGUI_MultiEditDlg::Init( SALOME_Selection* theSelection )
|
||||
connect( myGroupChk , SIGNAL( stateChanged( int ) ), SLOT( onGroupChk() ) );
|
||||
connect( myToAllChk , SIGNAL( stateChanged( int ) ), SLOT( onToAllChk() ) );
|
||||
|
||||
if ( myEntityTypeGrp )
|
||||
connect( myEntityTypeGrp, SIGNAL( clicked(int) ), SLOT( on3d2dChanged(int) ) );
|
||||
|
||||
connect( myListBox, SIGNAL( selectionChanged() ), SLOT( onListSelectionChanged() ) );
|
||||
|
||||
onSelectionDone();
|
||||
@ -293,10 +312,14 @@ SMESH::long_array_var SMESHGUI_MultiEditDlg::getIds()
|
||||
vtkCell* aCell = aGrid->GetCell( i );
|
||||
if ( aCell != 0 )
|
||||
{
|
||||
int nbNodes = aCell->GetNumberOfPoints();
|
||||
if ( nbNodes == 3 && myFilterType == SMESHGUI_TriaFilter ||
|
||||
nbNodes == 4 && myFilterType == SMESHGUI_QuadFilter ||
|
||||
( nbNodes == 4 || nbNodes == 3 ) && myFilterType == SMESHGUI_UnknownFilter )
|
||||
vtkTriangle* aTri = vtkTriangle::SafeDownCast(aCell);
|
||||
vtkQuad* aQua = vtkQuad::SafeDownCast(aCell);
|
||||
vtkCell3D* a3d = vtkCell3D::SafeDownCast(aCell);
|
||||
|
||||
if ( aTri && myFilterType == SMESHGUI_TriaFilter ||
|
||||
aQua && myFilterType == SMESHGUI_QuadFilter ||
|
||||
( aTri || aQua ) && myFilterType == SMESHGUI_FaceFilter ||
|
||||
a3d && myFilterType == SMESHGUI_VolumeFilter )
|
||||
{
|
||||
int anObjId = aVisualObj->GetElemObjId( i );
|
||||
myIds.Add( anObjId );
|
||||
@ -329,6 +352,7 @@ void SMESHGUI_MultiEditDlg::onClose()
|
||||
|
||||
SMESH::RemoveFilter(SMESHGUI_EdgeFilter);
|
||||
SMESH::RemoveFilter(SMESHGUI_FaceFilter);
|
||||
SMESH::RemoveFilter(SMESHGUI_VolumeFilter);
|
||||
SMESH::RemoveFilter(SMESHGUI_QuadFilter);
|
||||
SMESH::RemoveFilter(SMESHGUI_TriaFilter);
|
||||
SMESH::SetPickable();
|
||||
@ -472,11 +496,11 @@ void SMESHGUI_MultiEditDlg::onFilterBtn()
|
||||
{
|
||||
if ( myFilterDlg == 0 )
|
||||
{
|
||||
myFilterDlg = new SMESHGUI_FilterDlg( (QWidget*)parent(), SMESH::FACE );
|
||||
myFilterDlg = new SMESHGUI_FilterDlg( (QWidget*)parent(), entityType() ? SMESH::VOLUME : SMESH::FACE );
|
||||
connect( myFilterDlg, SIGNAL( Accepted() ), SLOT( onFilterAccepted() ) );
|
||||
}
|
||||
else
|
||||
myFilterDlg->Init( SMESH::FACE );
|
||||
myFilterDlg->Init( entityType() ? SMESH::VOLUME : SMESH::FACE );
|
||||
|
||||
myFilterDlg->SetSelection( mySelection );
|
||||
myFilterDlg->SetMesh( myMesh );
|
||||
@ -810,6 +834,13 @@ void SMESHGUI_MultiEditDlg::onToAllChk()
|
||||
//=======================================================================
|
||||
void SMESHGUI_MultiEditDlg::setSelectionMode()
|
||||
{
|
||||
SMESH::RemoveFilter(SMESHGUI_EdgeFilter);
|
||||
SMESH::RemoveFilter(SMESHGUI_FaceFilter);
|
||||
SMESH::RemoveFilter(SMESHGUI_VolumeFilter);
|
||||
SMESH::RemoveFilter(SMESHGUI_QuadFilter);
|
||||
SMESH::RemoveFilter(SMESHGUI_TriaFilter);
|
||||
SMESH::SetPickable();
|
||||
|
||||
mySelection->ClearIObjects();
|
||||
mySelection->ClearFilters();
|
||||
|
||||
@ -825,11 +856,16 @@ void SMESHGUI_MultiEditDlg::setSelectionMode()
|
||||
}
|
||||
else
|
||||
{
|
||||
QAD_Application::getDesktop()->SetSelectionMode( FaceSelection, true );
|
||||
if ( myFilterType == SMESHGUI_TriaFilter )
|
||||
SMESH::SetFilter( new SMESHGUI_TriangleFilter() );
|
||||
else if ( myFilterType == SMESHGUI_QuadFilter )
|
||||
SMESH::SetFilter( new SMESHGUI_QuadrangleFilter() );
|
||||
if ( myFilterType == SMESHGUI_VolumeFilter ) {
|
||||
QAD_Application::getDesktop()->SetSelectionMode( VolumeSelection, true );
|
||||
}
|
||||
else {
|
||||
QAD_Application::getDesktop()->SetSelectionMode( FaceSelection, true );
|
||||
if ( myFilterType == SMESHGUI_TriaFilter )
|
||||
SMESH::SetFilter( new SMESHGUI_TriangleFilter() );
|
||||
else if ( myFilterType == SMESHGUI_QuadFilter )
|
||||
SMESH::SetFilter( new SMESHGUI_QuadrangleFilter() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -870,6 +906,43 @@ bool SMESHGUI_MultiEditDlg::onApply()
|
||||
return aResult;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : SMESHGUI_MultiEditDlg::on3d2dChanged
|
||||
// Purpose :
|
||||
//=======================================================================
|
||||
void SMESHGUI_MultiEditDlg::on3d2dChanged(int type)
|
||||
{
|
||||
if ( myEntityType != type ) {
|
||||
myEntityType = type;
|
||||
|
||||
myListBox->clear();
|
||||
myIds.Clear();
|
||||
|
||||
emit ListContensChanged();
|
||||
|
||||
updateButtons();
|
||||
|
||||
if ( type )
|
||||
myFilterType = SMESHGUI_VolumeFilter;
|
||||
else
|
||||
myFilterType = SMESHGUI_FaceFilter;
|
||||
setSelectionMode();
|
||||
|
||||
if ( myActor )
|
||||
mySelection->AddIObject( myActor->getIO(), true );
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// name : SMESHGUI_MultiEditDlg::entityType
|
||||
// Purpose :
|
||||
//=======================================================================
|
||||
|
||||
int SMESHGUI_MultiEditDlg::entityType()
|
||||
{
|
||||
return myEntityType;
|
||||
}
|
||||
|
||||
/*
|
||||
Class : SMESHGUI_ChangeOrientationDlg
|
||||
Description : Modification of orientation of faces
|
||||
@ -878,7 +951,7 @@ bool SMESHGUI_MultiEditDlg::onApply()
|
||||
SMESHGUI_ChangeOrientationDlg::SMESHGUI_ChangeOrientationDlg( QWidget* theParent,
|
||||
SALOME_Selection* theSelection,
|
||||
const char* theName )
|
||||
: SMESHGUI_MultiEditDlg( theParent, theSelection, SMESHGUI_UnknownFilter, theName )
|
||||
: SMESHGUI_MultiEditDlg( theParent, theSelection, SMESHGUI_FaceFilter, true, theName )
|
||||
{
|
||||
setCaption( tr( "CAPTION" ) );
|
||||
}
|
||||
@ -901,7 +974,7 @@ bool SMESHGUI_ChangeOrientationDlg::process( SMESH::SMESH_MeshEditor_ptr theEdit
|
||||
SMESHGUI_UnionOfTrianglesDlg::SMESHGUI_UnionOfTrianglesDlg( QWidget* theParent,
|
||||
SALOME_Selection* theSelection,
|
||||
const char* theName )
|
||||
: SMESHGUI_MultiEditDlg( theParent, theSelection, SMESHGUI_TriaFilter, theName )
|
||||
: SMESHGUI_MultiEditDlg( theParent, theSelection, SMESHGUI_TriaFilter, false, theName )
|
||||
{
|
||||
setCaption( tr( "CAPTION" ) );
|
||||
}
|
||||
@ -924,7 +997,7 @@ bool SMESHGUI_UnionOfTrianglesDlg::process( SMESH::SMESH_MeshEditor_ptr theEdito
|
||||
SMESHGUI_CuttingOfQuadsDlg::SMESHGUI_CuttingOfQuadsDlg( QWidget* theParent,
|
||||
SALOME_Selection* theSelection,
|
||||
const char* theName )
|
||||
: SMESHGUI_MultiEditDlg( theParent, theSelection, SMESHGUI_QuadFilter, theName )
|
||||
: SMESHGUI_MultiEditDlg( theParent, theSelection, SMESHGUI_QuadFilter, false, theName )
|
||||
{
|
||||
|
||||
setCaption( tr( "CAPTION" ) );
|
||||
|
@ -46,6 +46,7 @@ class QPushButton;
|
||||
class SALOME_Selection;
|
||||
class SMESH_Actor;
|
||||
class SALOME_Actor;
|
||||
class QButtonGroup;
|
||||
|
||||
/*
|
||||
Class : SMESHGUI_MultiEditDlg
|
||||
@ -61,6 +62,7 @@ public:
|
||||
SMESHGUI_MultiEditDlg( QWidget*,
|
||||
SALOME_Selection*,
|
||||
const int,
|
||||
const bool = false,
|
||||
const char* = 0 );
|
||||
virtual ~SMESHGUI_MultiEditDlg();
|
||||
|
||||
@ -87,6 +89,7 @@ protected slots:
|
||||
void onGroupChk();
|
||||
virtual void onToAllChk();
|
||||
void onFilterAccepted();
|
||||
void on3d2dChanged(int);
|
||||
|
||||
protected:
|
||||
|
||||
@ -94,13 +97,14 @@ protected:
|
||||
void enterEvent ( QEvent * ) ;
|
||||
void hideEvent ( QHideEvent * ); /* ESC key */
|
||||
QFrame* createButtonFrame( QWidget* );
|
||||
QFrame* createMainFrame ( QWidget* );
|
||||
QFrame* createMainFrame ( QWidget*, const bool );
|
||||
bool isValid( const bool ) const;
|
||||
SMESH::long_array_var getIds();
|
||||
void updateButtons();
|
||||
void setSelectionMode();
|
||||
virtual bool isIdValid( const int theID ) const;
|
||||
virtual bool process( SMESH::SMESH_MeshEditor_ptr, const SMESH::long_array& ) = 0;
|
||||
int entityType();
|
||||
|
||||
protected:
|
||||
|
||||
@ -120,6 +124,7 @@ protected:
|
||||
QPushButton* mySortBtn;
|
||||
|
||||
QCheckBox* myToAllChk;
|
||||
QButtonGroup* myEntityTypeGrp;
|
||||
|
||||
QCheckBox* mySubmeshChk;
|
||||
QPushButton* mySubmeshBtn;
|
||||
@ -135,6 +140,7 @@ protected:
|
||||
Handle(SMESH_TypeFilter) mySubmeshFilter;
|
||||
Handle(SMESH_TypeFilter) myGroupFilter;
|
||||
bool myBusy;
|
||||
int myEntityType;
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -991,6 +991,9 @@ msgstr "Skew"
|
||||
msgid "SMESHGUI_FilterTable::AREA"
|
||||
msgstr "Area"
|
||||
|
||||
msgid "SMESHGUI_FilterTable::BAD_ORIENTED_VOLUME"
|
||||
msgstr "Bad oriented volume"
|
||||
|
||||
msgid "SMESHGUI_FilterTable::LESS_THAN"
|
||||
msgstr "Less than"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user