X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_FilterDlg.cxx;h=6c6987c399701ee75f41b78625744014389a09c4;hp=97f1df847d47671462c6830e5880de2cc680197a;hb=2077baef82667760cb5fdc79454203a10d457d38;hpb=193c49c87753b6ccabb2b5e6dc935aa480d2d43e diff --git a/src/SMESHGUI/SMESHGUI_FilterDlg.cxx b/src/SMESHGUI/SMESHGUI_FilterDlg.cxx index 97f1df847..6c6987c39 100755 --- a/src/SMESHGUI/SMESHGUI_FilterDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_FilterDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 @@ -870,8 +870,8 @@ SMESHGUI_FilterTable::SMESHGUI_FilterTable( SMESHGUI* theModule, QWidget* parent, const int type ) : QWidget( parent ), - myIsLocked( false ), - mySMESHGUI( theModule ) + mySMESHGUI( theModule ), + myIsLocked( false ) { myEntityType = -1; @@ -888,8 +888,8 @@ SMESHGUI_FilterTable::SMESHGUI_FilterTable( SMESHGUI* theModule, QWidget* parent, const QList& types ) : QWidget( parent ), - myIsLocked( false ), - mySMESHGUI( theModule ) + mySMESHGUI( theModule ), + myIsLocked( false ) { myEntityType = -1; Init(types); @@ -1155,7 +1155,7 @@ bool SMESHGUI_FilterTable::IsValid (const bool theMess, const int theEntityType) bool aRes = false; bool isSignalsBlocked = aTable->signalsBlocked(); aTable->blockSignals(true); - double aThreshold = (int)aTable->text(i, 2).toDouble(&aRes); + /*double aThreshold =*/ aTable->text(i, 2).toDouble( &aRes ); aTable->blockSignals(isSignalsBlocked); if (!aRes && aTable->isEditable(i, 2)) @@ -1546,7 +1546,7 @@ void SMESHGUI_FilterTable::onRemoveBtn() //======================================================================= // name : SMESHGUI_FilterTable::updateAdditionalWidget -// Purpose : Enable/Disable widget with additonal parameters +// Purpose : Enable/Disable widget with additional parameters //======================================================================= void SMESHGUI_FilterTable::updateAdditionalWidget() { @@ -1753,6 +1753,7 @@ static QList entityTypes( const int theType ) typeIds.append( SMDSEntity_TriQuad_Hexa ); typeIds.append( SMDSEntity_Penta ); typeIds.append( SMDSEntity_Quad_Penta ); + typeIds.append( SMDSEntity_BiQuad_Penta ); typeIds.append( SMDSEntity_Hexagonal_Prism ); typeIds.append( SMDSEntity_Polyhedra ); //typeIds.append( SMDSEntity_Quad_Polyhedra ); @@ -1823,6 +1824,7 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con case SMESH::FT_EqualFaces: case SMESH::FT_EqualVolumes: break; + case SMESH::FT_NodeConnectivityNumber: case SMESH::FT_MultiConnection: case SMESH::FT_MultiConnection2D: anIsIntCriterion = true; nbCompareSigns = 3; break; @@ -2115,7 +2117,7 @@ QTableWidgetItem* SMESHGUI_FilterTable::getCriterionItem (const int theType) con //======================================================================= // name : SMESHGUI_FilterTable::getCompareItem -// Purpose : Get combo table item for operation of comparision +// Purpose : Get combo table item for operation of comparison //======================================================================= QTableWidgetItem* SMESHGUI_FilterTable::getCompareItem () const { @@ -2190,6 +2192,7 @@ const QMap& SMESHGUI_FilterTable::getCriteria (const int theType) aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR"); aCriteria[ SMESH::FT_EqualNodes ] = tr("EQUAL_NODE"); aCriteria[ SMESH::FT_ConnectedElements ] = tr("CONNECTED_ELEMS"); + aCriteria[ SMESH::FT_NodeConnectivityNumber ] = tr("NODE_CONN_NUMBER"); } return aCriteria; } @@ -3365,7 +3368,7 @@ bool SMESHGUI_FilterDlg::onApply() if (!myFilter[ aCurrType ]->GetPredicate()->_is_nil()) { // - bool toFilter = (( SMESH::FindActorByObject( myMesh )) || + bool toFilter = (( getActor() ) || ( myInitSourceWgOnApply && mySourceWg ) || ( mySourceGrp->checkedId() == Dialog && mySourceWg )); if ( toFilter ) { @@ -3416,7 +3419,7 @@ bool SMESHGUI_FilterDlg::createFilter (const int theType) if ( mgr && mgr->booleanValue( "SMESH", "use_precision", false ) ) aPrecision = mgr->integerValue( "SMESH", "controls_precision", aPrecision ); - for (CORBA::ULong i = 0; i < n; i++) { + for ( int i = 0; i < n; i++) { SMESH::Filter::Criterion aCriterion = createCriterion(); myTable->GetCriterion(i, aCriterion); aCriterion.Precision = aPrecision; @@ -3487,7 +3490,8 @@ void SMESHGUI_FilterDlg::UnRegisterFilters() //======================================================================= void SMESHGUI_FilterDlg::insertFilterInViewer() { - if (SVTK_Selector* aSelector = SMESH::GetSelector()) { + if (SVTK_Selector* aSelector = SMESH::GetSelector()) + { SMESH::ElementType anEntType = (SMESH::ElementType)myTable->GetType(); if (myFilter[ myTable->GetType() ]->_is_nil() || @@ -3497,7 +3501,8 @@ void SMESHGUI_FilterDlg::insertFilterInViewer() { SMESH::RemoveFilter(getFilterId(anEntType), aSelector); } - else { + else + { Handle(SMESHGUI_PredicateFilter) aFilter = new SMESHGUI_PredicateFilter(); aFilter->SetPredicate(myFilter[ myTable->GetType() ]->GetPredicate()); SMESH::RemoveFilter(getFilterId(anEntType), aSelector); //skl for IPAL12631 @@ -3622,13 +3627,42 @@ void SMESHGUI_FilterDlg::filterSelectionSource (const int theType, theResIds.append(aResIter.Key()); } +//======================================================================= +//function : getActor +//purpose : Returns an actor to show filtered entities +//======================================================================= + +SMESH_Actor* SMESHGUI_FilterDlg::getActor() +{ + SMESH_Actor* meshActor = SMESH::FindActorByObject( myMesh ); + if ( meshActor && meshActor->GetVisibility() ) + return meshActor; + + SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger anIter(myIObjects); + for ( ; anIter.More(); anIter.Next()) + { + Handle(SALOME_InteractiveObject) io = anIter.Key(); + if ( io->hasEntry() ) + { + SMESH_Actor* actor = SMESH::FindActorByEntry( io->getEntry() ); + if ( !actor ) + continue; + if ( actor->GetVisibility() ) + return actor; + if ( !meshActor ) + meshActor = actor; + } + } + return meshActor; +} + //======================================================================= // name : SMESHGUI_FilterDlg::selectInViewer // Purpose : Select given entities in viewer //======================================================================= void SMESHGUI_FilterDlg::selectInViewer (const int theType, const QList& theIds) { - if (mySelectionMgr == 0 || myMesh->_is_nil()) + if (mySelectionMgr == 0 || myMesh->_is_nil() ) return; mySelectionMgr->clearFilters(); @@ -3636,7 +3670,8 @@ void SMESHGUI_FilterDlg::selectInViewer (const int theType, const QList& th // Set new selection mode if necessary Selection_Mode aSelMode = getSelMode(theType); SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ); - if ( aViewWindow && aViewWindow->SelectionMode()!=aSelMode) { + if ( aViewWindow && aViewWindow->SelectionMode() != aSelMode ) + { mySelectionMgr->clearSelected(); mySelectionMgr->clearFilters(); SMESH::SetPointRepresentation( aSelMode == NodeSelection ); @@ -3644,13 +3679,11 @@ void SMESHGUI_FilterDlg::selectInViewer (const int theType, const QList& th } // Clear selection - SMESH_Actor* anActor = SMESH::FindActorByObject(myMesh); - if (!anActor || !anActor->hasIO()) + SMESH_Actor* anActor = getActor(); + if ( !anActor || !anActor->hasIO() ) return; Handle(SALOME_InteractiveObject) anIO = anActor->getIO(); - //mySelectionMgr->clearSelected(); - //mySelectionMgr->AddIObject(anIO, false); SALOME_ListIO aList; aList.Append(anIO); mySelectionMgr->setSelectedObjects(aList, false);