From: vsr Date: Wed, 5 May 2010 15:23:42 +0000 (+0000) Subject: 0020614: EDF 1133 SMESH : Put new added elements and nodes to group X-Git-Tag: V5_1_4rc1~4 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=f13c7febf9a84c5df3e214e62cef525fd128551d;p=modules%2Fsmesh.git 0020614: EDF 1133 SMESH : Put new added elements and nodes to group Additional changes: converting of groups on geometry to standalone group by demand --- diff --git a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx index 00d8b532b..03ade25cb 100644 --- a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx @@ -483,6 +483,30 @@ void SMESHGUI_AddMeshElementDlg::ClickOnApply() else anArrayOfIndices[i] = aListId[ i ].toInt(); + bool addToGroup = GroupGroups->isChecked(); + QString aGroupName; + + SMESH::SMESH_GroupBase_var aGroup; + int idx = 0; + if( addToGroup ) { + aGroupName = ComboBox_GroupName->currentText(); + for ( int i = 1; i < ComboBox_GroupName->count(); i++ ) { + QString aName = ComboBox_GroupName->itemText( i ); + if ( aGroupName == aName && ( i == ComboBox_GroupName->currentIndex() || idx == 0 ) ) + idx = i; + } + if ( idx > 0 ) { + SMESH::SMESH_GroupOnGeom_var aGeomGroup = SMESH::SMESH_GroupOnGeom::_narrow( myGroups[idx-1] ); + if ( !aGeomGroup->_is_nil() ) { + int res = SUIT_MessageBox::question( this, tr( "SMESH_WRN_WARNING" ), + tr( "MESH_STANDALONE_GRP_CHOSEN" ).arg( aGroupName ), + tr( "SMESH_BUT_YES" ), tr( "SMESH_BUT_NO" ), 0, 1 ); + if ( res == 1 ) return; + } + aGroup = myGroups[idx-1]; + } + } + long anElemId = -1; SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); switch (myElementType) { @@ -499,34 +523,37 @@ void SMESHGUI_AddMeshElementDlg::ClickOnApply() } case SMDSAbs_Volume: anElemId = aMeshEditor->AddVolume(anArrayOfIndices.inout()); break; - default:; + default: break; } - if( anElemId != -1 && GroupGroups->isChecked() ) { - SMESH::SMESH_Group_var aGroup; - QString aGroupName = ComboBox_GroupName->currentText(); - SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups(); - for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) { - SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i]; - if( !aGroupBase->_is_nil() ) { - SMESH::SMESH_Group_var aRefGroup = SMESH::SMESH_Group::_narrow( aGroupBase ); - if( !aRefGroup->_is_nil() ) { - QString aRefGroupName( aRefGroup->GetName() ); - if( aRefGroupName == aGroupName ) { - aGroup = aRefGroup; // // add node to existing group - break; - } - } - } + if ( anElemId != -1 && addToGroup && !aGroupName.isEmpty() ) { + SMESH::SMESH_Group_var aGroupUsed; + if ( aGroup->_is_nil() ) { + // create new group + aGroupUsed = SMESH::AddGroup( myMesh, (SMESH::ElementType)myElementType, aGroupName ); + if ( !aGroupUsed->_is_nil() ) { + myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroupUsed)); + ComboBox_GroupName->addItem( aGroupName ); + } + } + else { + SMESH::SMESH_GroupOnGeom_var aGeomGroup = SMESH::SMESH_GroupOnGeom::_narrow( aGroup ); + if ( !aGeomGroup->_is_nil() ) { + aGroupUsed = myMesh->ConvertToStandalone( aGeomGroup ); + if ( !aGroupUsed->_is_nil() && idx > 0 ) { + myGroups[idx-1] = SMESH::SMESH_GroupBase::_duplicate(aGroupUsed); + SMESHGUI::GetSMESHGUI()->getApp()->updateObjectBrowser(); + } + } + else + aGroupUsed = SMESH::SMESH_Group::_narrow( aGroup ); } - if( aGroup->_is_nil() ) // create new group - aGroup = SMESH::AddGroup( myMesh, (SMESH::ElementType)myElementType, aGroupName ); - if( !aGroup->_is_nil() ) { + if ( !aGroupUsed->_is_nil() ) { SMESH::long_array_var anIdList = new SMESH::long_array; anIdList->length( 1 ); anIdList[0] = anElemId; - aGroup->Add( anIdList.inout() ); + aGroupUsed->Add( anIdList.inout() ); } } @@ -699,18 +726,18 @@ void SMESHGUI_AddMeshElementDlg::SelectionIntoArgument() // process groups if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) { + myGroups.clear(); ComboBox_GroupName->clear(); ComboBox_GroupName->addItem( QString() ); SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups(); for ( int i = 0, n = aListOfGroups.length(); i < n; i++ ) { - SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i]; - if ( !aGroupBase->_is_nil() && aGroupBase->GetType() == (SMESH::ElementType)myElementType ) { - SMESH::SMESH_Group_var aGroup = SMESH::SMESH_Group::_narrow( aGroupBase ); - if ( !aGroup->_is_nil() ) { - QString aGroupName( aGroup->GetName() ); - if ( !aGroupName.isEmpty() ) - ComboBox_GroupName->addItem( aGroupName ); - } + SMESH::SMESH_GroupBase_var aGroup = aListOfGroups[i]; + if ( !aGroup->_is_nil() && aGroup->GetType() == (SMESH::ElementType)myElementType ) { + QString aGroupName( aGroup->GetName() ); + if ( !aGroupName.isEmpty() ) { + myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroup)); + ComboBox_GroupName->addItem( aGroupName ); + } } } } diff --git a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h index f4a6016ff..6c95a37cb 100644 --- a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h +++ b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h @@ -78,6 +78,8 @@ private: bool isValid(); + typedef QList GrpList; + SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */ LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */ int myNbOkNodes; /* to check when arguments is defined */ @@ -94,6 +96,7 @@ private: SMESH_Actor* myActor; SMESH::TElementSimulation* mySimulation; QString myEntry; + GrpList myGroups; QGroupBox* GroupConstructors; QRadioButton* Constructor1; diff --git a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx index 538e78a84..601006b70 100644 --- a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx @@ -720,6 +720,30 @@ void SMESHGUI_AddQuadraticElementDlg::ClickOnApply() for (int i = 0; i < aNumberOfIds; i++) anArrayOfIdeces[i] = anIds[ i ]; + bool addToGroup = GroupGroups->isChecked(); + QString aGroupName; + + SMESH::SMESH_GroupBase_var aGroup; + int idx = 0; + if( addToGroup ) { + aGroupName = ComboBox_GroupName->currentText(); + for ( int i = 1; i < ComboBox_GroupName->count(); i++ ) { + QString aName = ComboBox_GroupName->itemText( i ); + if ( aGroupName == aName && ( i == ComboBox_GroupName->currentIndex() || idx == 0 ) ) + idx = i; + } + if ( idx > 0 ) { + SMESH::SMESH_GroupOnGeom_var aGeomGroup = SMESH::SMESH_GroupOnGeom::_narrow( myGroups[idx-1] ); + if ( !aGeomGroup->_is_nil() ) { + int res = SUIT_MessageBox::question( this, tr( "SMESH_WRN_WARNING" ), + tr( "MESH_STANDALONE_GRP_CHOSEN" ).arg( aGroupName ), + tr( "SMESH_BUT_YES" ), tr( "SMESH_BUT_NO" ), 0, 1 ); + if ( res == 1 ) return; + } + aGroup = myGroups[idx-1]; + } + } + SMESH::ElementType anElementType; long anElemId = -1; SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); @@ -737,33 +761,37 @@ void SMESHGUI_AddQuadraticElementDlg::ClickOnApply() case QUAD_HEXAHEDRON: anElementType = SMESH::VOLUME; anElemId = aMeshEditor->AddVolume(anArrayOfIdeces.inout()); break; + default: break; } - if( anElemId != -1 && GroupGroups->isChecked() ) { - SMESH::SMESH_Group_var aGroup; - QString aGroupName = ComboBox_GroupName->currentText(); - SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups(); - for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) { - SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i]; - if( !aGroupBase->_is_nil() ) { - SMESH::SMESH_Group_var aRefGroup = SMESH::SMESH_Group::_narrow( aGroupBase ); - if( !aRefGroup->_is_nil() ) { - QString aRefGroupName( aRefGroup->GetName() ); - if( aRefGroupName == aGroupName ) { - aGroup = aRefGroup; // // add node to existing group - break; - } - } + if ( anElemId != -1 && addToGroup && !aGroupName.isEmpty() ) { + SMESH::SMESH_Group_var aGroupUsed; + if ( aGroup->_is_nil() ) { + // create new group + aGroupUsed = SMESH::AddGroup( myMesh, anElementType, aGroupName ); + if ( !aGroupUsed->_is_nil() ) { + myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroupUsed)); + ComboBox_GroupName->addItem( aGroupName ); } } - if( aGroup->_is_nil() ) // create new group - aGroup = SMESH::AddGroup( myMesh, anElementType, aGroupName ); - - if( !aGroup->_is_nil() ) { + else { + SMESH::SMESH_GroupOnGeom_var aGeomGroup = SMESH::SMESH_GroupOnGeom::_narrow( aGroup ); + if ( !aGeomGroup->_is_nil() ) { + aGroupUsed = myMesh->ConvertToStandalone( aGeomGroup ); + if ( !aGroupUsed->_is_nil() && idx > 0 ) { + myGroups[idx-1] = SMESH::SMESH_GroupBase::_duplicate(aGroupUsed); + SMESHGUI::GetSMESHGUI()->getApp()->updateObjectBrowser(); + } + } + else + aGroupUsed = SMESH::SMESH_Group::_narrow( aGroup ); + } + + if ( !aGroupUsed->_is_nil() ) { SMESH::long_array_var anIdList = new SMESH::long_array; anIdList->length( 1 ); anIdList[0] = anElemId; - aGroup->Add( anIdList.inout() ); + aGroupUsed->Add( anIdList.inout() ); } } @@ -936,18 +964,18 @@ void SMESHGUI_AddQuadraticElementDlg::SelectionIntoArgument() case QUAD_HEXAHEDRON: anElementType = SMESH::VOLUME; break; } + myGroups.clear(); ComboBox_GroupName->clear(); ComboBox_GroupName->addItem( QString() ); SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups(); for ( int i = 0, n = aListOfGroups.length(); i < n; i++ ) { - SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i]; - if ( !aGroupBase->_is_nil() && aGroupBase->GetType() == anElementType ) { - SMESH::SMESH_Group_var aGroup = SMESH::SMESH_Group::_narrow( aGroupBase ); - if ( !aGroup->_is_nil() ) { - QString aGroupName( aGroup->GetName() ); - if ( !aGroupName.isEmpty() ) - ComboBox_GroupName->addItem( aGroupName ); - } + SMESH::SMESH_GroupBase_var aGroup = aListOfGroups[i]; + if ( !aGroup->_is_nil() && aGroup->GetType() == anElementType ) { + QString aGroupName( aGroup->GetName() ); + if ( !aGroupName.isEmpty() ) { + myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroup)); + ComboBox_GroupName->addItem( aGroupName ); + } } } } diff --git a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h index 37d5f12d0..30b4d9f01 100644 --- a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h +++ b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h @@ -71,6 +71,8 @@ public: ~SMESHGUI_AddQuadraticElementDlg(); private: + typedef QList GrpList; + void Init(); void closeEvent( QCloseEvent* ); void hideEvent( QHideEvent* ); /* ESC key */ @@ -93,6 +95,7 @@ private: SMESH_Actor* myActor; SMESH::TElementSimulation* mySimulation; QString myEntry; + GrpList myGroups; int myType; bool myIsEditCorners; diff --git a/src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.cxx b/src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.cxx index 8a97c4302..1501f0825 100644 --- a/src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.cxx @@ -449,6 +449,31 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::ClickOnApply() if(checkEditLine(false) == -1) {return;} busy = true; long anElemId = -1; + + bool addToGroup = GroupGroups->isChecked(); + QString aGroupName; + + SMESH::SMESH_GroupBase_var aGroup; + int idx = 0; + if( addToGroup ) { + aGroupName = ComboBox_GroupName->currentText(); + for ( int i = 1; i < ComboBox_GroupName->count(); i++ ) { + QString aName = ComboBox_GroupName->itemText( i ); + if ( aGroupName == aName && ( i == ComboBox_GroupName->currentIndex() || idx == 0 ) ) + idx = i; + } + if ( idx > 0 ) { + SMESH::SMESH_GroupOnGeom_var aGeomGroup = SMESH::SMESH_GroupOnGeom::_narrow( myGroups[idx-1] ); + if ( !aGeomGroup->_is_nil() ) { + int res = SUIT_MessageBox::question( this, tr( "SMESH_WRN_WARNING" ), + tr( "MESH_STANDALONE_GRP_CHOSEN" ).arg( aGroupName ), + tr( "SMESH_BUT_YES" ), tr( "SMESH_BUT_NO" ), 0, 1 ); + if ( res == 1 ) return; + } + aGroup = myGroups[idx-1]; + } + } + if (GetConstructorId() == 0) { SMESH::long_array_var anIdsOfNodes = new SMESH::long_array; @@ -509,31 +534,34 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::ClickOnApply() } } - if( anElemId != -1 && GroupGroups->isChecked() ) { - SMESH::SMESH_Group_var aGroup; - QString aGroupName = ComboBox_GroupName->currentText(); - SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups(); - for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) { - SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i]; - if( !aGroupBase->_is_nil() ) { - SMESH::SMESH_Group_var aRefGroup = SMESH::SMESH_Group::_narrow( aGroupBase ); - if( !aRefGroup->_is_nil() ) { - QString aRefGroupName( aRefGroup->GetName() ); - if( aRefGroupName == aGroupName ) { - aGroup = aRefGroup; // // add node to existing group - break; - } - } - } - } - if( aGroup->_is_nil() ) // create new group - aGroup = SMESH::AddGroup( myMesh, SMESH::VOLUME, aGroupName ); - - if( !aGroup->_is_nil() ) { + if ( anElemId != -1 && addToGroup && !aGroupName.isEmpty() ) { + SMESH::SMESH_Group_var aGroupUsed; + if ( aGroup->_is_nil() ) { + // create new group + aGroupUsed = SMESH::AddGroup( myMesh, SMESH::VOLUME, aGroupName ); + if ( !aGroupUsed->_is_nil() ) { + myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroupUsed)); + ComboBox_GroupName->addItem( aGroupName ); + } + } + else { + SMESH::SMESH_GroupOnGeom_var aGeomGroup = SMESH::SMESH_GroupOnGeom::_narrow( aGroup ); + if ( !aGeomGroup->_is_nil() ) { + aGroupUsed = myMesh->ConvertToStandalone( aGeomGroup ); + if ( !aGroupUsed->_is_nil() && idx > 0 ) { + myGroups[idx-1] = SMESH::SMESH_GroupBase::_duplicate(aGroupUsed); + SMESHGUI::GetSMESHGUI()->getApp()->updateObjectBrowser(); + } + } + else + aGroupUsed = SMESH::SMESH_Group::_narrow( aGroup ); + } + + if ( !aGroupUsed->_is_nil() ) { SMESH::long_array_var anIdList = new SMESH::long_array; anIdList->length( 1 ); anIdList[0] = anElemId; - aGroup->Add( anIdList.inout() ); + aGroupUsed->Add( anIdList.inout() ); } } @@ -734,17 +762,17 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::SelectionIntoArgument() // process groups if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) { + myGroups.clear(); ComboBox_GroupName->clear(); ComboBox_GroupName->addItem( QString() ); SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups(); for ( int i = 0, n = aListOfGroups.length(); i < n; i++ ) { - SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i]; - if ( !aGroupBase->_is_nil() && aGroupBase->GetType() == SMESH::VOLUME ) { - SMESH::SMESH_Group_var aGroup = SMESH::SMESH_Group::_narrow( aGroupBase ); - if ( !aGroup->_is_nil() ) { - QString aGroupName( aGroup->GetName() ); - if ( !aGroupName.isEmpty() ) - ComboBox_GroupName->addItem( aGroupName ); + SMESH::SMESH_GroupBase_var aGroup = aListOfGroups[i]; + if ( !aGroup->_is_nil() && aGroup->GetType() == SMESH::VOLUME ) { + QString aGroupName( aGroup->GetName() ); + if ( !aGroupName.isEmpty() ) { + myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroup)); + ComboBox_GroupName->addItem( aGroupName ); } } } diff --git a/src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.h b/src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.h index 2a6ee3735..33415c5ac 100644 --- a/src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.h +++ b/src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.h @@ -69,6 +69,8 @@ public: ~SMESHGUI_CreatePolyhedralVolumeDlg(); private: + typedef QList GrpList; + void Init(); void closeEvent( QCloseEvent* ); void enterEvent( QEvent* ); /* mouse enter the QWidget */ @@ -93,6 +95,7 @@ private: SMESH_Actor* myActor; SMESH::TPolySimulation* mySimulation; QString myEntry; + GrpList myGroups; QGroupBox* ConstructorsBox; QButtonGroup* GroupConstructors; diff --git a/src/SMESHGUI/SMESHGUI_NodesDlg.cxx b/src/SMESHGUI/SMESHGUI_NodesDlg.cxx index 71c66f23d..d12100ca2 100644 --- a/src/SMESHGUI/SMESHGUI_NodesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_NodesDlg.cxx @@ -51,6 +51,8 @@ #include #include +#include + #include #include #include @@ -439,35 +441,64 @@ bool SMESHGUI_NodesDlg::ClickOnApply() aParameters << SpinBox_Y->text(); aParameters << SpinBox_Z->text(); + bool addToGroup = GroupGroups->isChecked(); + QString aGroupName; + + SMESH::SMESH_GroupBase_var aGroup; + int idx = 0; + if( addToGroup ) { + aGroupName = ComboBox_GroupName->currentText(); + for ( int i = 1; i < ComboBox_GroupName->count(); i++ ) { + QString aName = ComboBox_GroupName->itemText( i ); + if ( aGroupName == aName && ( i == ComboBox_GroupName->currentIndex() || idx == 0 ) ) + idx = i; + } + if ( idx > 0 ) { + SMESH::SMESH_GroupOnGeom_var aGeomGroup = SMESH::SMESH_GroupOnGeom::_narrow( myGroups[idx-1] ); + if ( !aGeomGroup->_is_nil() ) { + int res = SUIT_MessageBox::question( this, tr( "SMESH_WRN_WARNING" ), + tr( "MESH_STANDALONE_GRP_CHOSEN" ).arg( aGroupName ), + tr( "SMESH_BUT_YES" ), tr( "SMESH_BUT_NO" ), 0, 1 ); + if ( res == 1 ) return false; + } + aGroup = myGroups[idx-1]; + } + } + mySimulation->SetVisibility( false ); + long aNodeId = SMESH::AddNode( myMesh, x, y, z, aParameters ); + SMESH::SetPointRepresentation( true ); - if( aNodeId != -1 && GroupGroups->isChecked() ) { - SMESH::SMESH_Group_var aGroup; - QString aGroupName = ComboBox_GroupName->currentText(); - SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups(); - for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) { - SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i]; - if( !aGroupBase->_is_nil() ) { - SMESH::SMESH_Group_var aRefGroup = SMESH::SMESH_Group::_narrow( aGroupBase ); - if( !aRefGroup->_is_nil() ) { - QString aRefGroupName( aRefGroup->GetName() ); - if( aRefGroupName == aGroupName ) { - aGroup = aRefGroup; // // add node to existing group - break; - } - } + if ( aNodeId != -1 && addToGroup && !aGroupName.isEmpty() ) { + SMESH::SMESH_Group_var aGroupUsed; + if ( aGroup->_is_nil() ){ + // create new group + aGroupUsed = SMESH::AddGroup( myMesh, SMESH::NODE, aGroupName ); + if ( !aGroupUsed->_is_nil() ) { + myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroupUsed)); + ComboBox_GroupName->addItem( aGroupName ); + } + } + else { + SMESH::SMESH_GroupOnGeom_var aGeomGroup = SMESH::SMESH_GroupOnGeom::_narrow( aGroup ); + if ( !aGeomGroup->_is_nil() ) { + aGroupUsed = myMesh->ConvertToStandalone( aGeomGroup ); + if ( !aGroupUsed->_is_nil() && idx > 0 ) { + myGroups[idx-1] = SMESH::SMESH_GroupBase::_duplicate(aGroupUsed); + SMESHGUI::GetSMESHGUI()->getApp()->updateObjectBrowser(); + } } + else + aGroupUsed = SMESH::SMESH_Group::_narrow( aGroup ); } - if( aGroup->_is_nil() ) // create new group - aGroup = SMESH::AddGroup( myMesh, SMESH::NODE, aGroupName ); - if( !aGroup->_is_nil() ) { + if ( !aGroupUsed->_is_nil() ) { SMESH::long_array_var anIdList = new SMESH::long_array; anIdList->length( 1 ); anIdList[0] = aNodeId; - aGroup->Add( anIdList.inout() ); + aGroupUsed->Add( anIdList.inout() ); } } @@ -581,17 +612,17 @@ void SMESHGUI_NodesDlg::SelectionIntoArgument() // process groups if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) { + myGroups.clear(); ComboBox_GroupName->clear(); ComboBox_GroupName->addItem( QString() ); SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups(); for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) { - SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i]; - if ( !aGroupBase->_is_nil() && aGroupBase->GetType() == SMESH::NODE ) { - SMESH::SMESH_Group_var aGroup = SMESH::SMESH_Group::_narrow( aGroupBase ); - if ( !aGroup->_is_nil() ) { - QString aGroupName( aGroup->GetName() ); - if ( !aGroupName.isEmpty() ) - ComboBox_GroupName->addItem( aGroupName ); + SMESH::SMESH_GroupBase_var aGroup = aListOfGroups[i]; + if ( !aGroup->_is_nil() && aGroup->GetType() == SMESH::NODE ) { + QString aGroupName( aGroup->GetName() ); + if ( !aGroupName.isEmpty() ) { + myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroup)); + ComboBox_GroupName->addItem( aGroupName ); } } } diff --git a/src/SMESHGUI/SMESHGUI_NodesDlg.h b/src/SMESHGUI/SMESHGUI_NodesDlg.h index 3ba529b6c..0c3c8274b 100644 --- a/src/SMESHGUI/SMESHGUI_NodesDlg.h +++ b/src/SMESHGUI/SMESHGUI_NodesDlg.h @@ -66,6 +66,8 @@ public: ~SMESHGUI_NodesDlg(); private: + typedef QList GrpList; + LightApp_SelectionMgr* mySelectionMgr; SVTK_Selector* mySelector; SMESHGUI* mySMESHGUI; @@ -73,6 +75,7 @@ private: SMESH::SMESH_Mesh_var myMesh; SMESH::TNodeSimulation* mySimulation; QString myEntry; + GrpList myGroups; void Init(); void enterEvent( QEvent* ); @@ -81,7 +84,7 @@ private: void keyPressEvent( QKeyEvent* ); bool isValid(); - + QGroupBox* GroupConstructors; QRadioButton* Constructor1; QGroupBox* GroupCoordinates; diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index 3f86b72dd..18a50ace6 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -761,8 +761,13 @@ Please, select a mesh and try again GROUP_NAME_IS_EMPTY - Name of group is empty -Please input a name of new group or choose the existing one + Name of group is not specified. +Please enter a name of new group to be created or choose an existing one. + + + MESH_STANDALONE_GRP_CHOSEN + Group on geometry is chosen: %1. +Do you want to convert it to the standalone group? NODE_ID