mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-01 04:10:33 +05:00
0020614: EDF 1133 SMESH : Put new added elements and nodes to group
Additional changes: converting of groups on geometry to standalone group by demand
This commit is contained in:
parent
3ad2a95049
commit
f13c7febf9
@ -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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -78,6 +78,8 @@ private:
|
||||
|
||||
bool isValid();
|
||||
|
||||
typedef QList<SMESH::SMESH_GroupBase_var> 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;
|
||||
|
@ -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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -71,6 +71,8 @@ public:
|
||||
~SMESHGUI_AddQuadraticElementDlg();
|
||||
|
||||
private:
|
||||
typedef QList<SMESH::SMESH_GroupBase_var> 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;
|
||||
|
@ -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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -69,6 +69,8 @@ public:
|
||||
~SMESHGUI_CreatePolyhedralVolumeDlg();
|
||||
|
||||
private:
|
||||
typedef QList<SMESH::SMESH_GroupBase_var> 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;
|
||||
|
@ -51,6 +51,8 @@
|
||||
#include <LightApp_Application.h>
|
||||
#include <LightApp_SelectionMgr.h>
|
||||
|
||||
#include <SalomeApp_Application.h>
|
||||
|
||||
#include <SVTK_ViewWindow.h>
|
||||
#include <VTKViewer_Algorithm.h>
|
||||
#include <VTKViewer_CellLocationsArray.h>
|
||||
@ -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 );
|
||||
}
|
||||
}
|
||||
if( aGroup->_is_nil() ) // create new group
|
||||
aGroup = SMESH::AddGroup( myMesh, SMESH::NODE, 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() ) {
|
||||
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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -66,6 +66,8 @@ public:
|
||||
~SMESHGUI_NodesDlg();
|
||||
|
||||
private:
|
||||
typedef QList<SMESH::SMESH_GroupBase_var> 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;
|
||||
|
@ -761,8 +761,13 @@ Please, select a mesh and try again</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GROUP_NAME_IS_EMPTY</source>
|
||||
<translation>Name of group is empty
|
||||
Please input a name of new group or choose the existing one</translation>
|
||||
<translation>Name of group is not specified.
|
||||
Please enter a name of new group to be created or choose an existing one.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MESH_STANDALONE_GRP_CHOSEN</source>
|
||||
<translation>Group on geometry is chosen: %1.
|
||||
Do you want to convert it to the standalone group?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>NODE_ID</source>
|
||||
|
Loading…
Reference in New Issue
Block a user