mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-05 22:30: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
|
else
|
||||||
anArrayOfIndices[i] = aListId[ i ].toInt();
|
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;
|
long anElemId = -1;
|
||||||
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
|
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
|
||||||
switch (myElementType) {
|
switch (myElementType) {
|
||||||
@ -499,34 +523,37 @@ void SMESHGUI_AddMeshElementDlg::ClickOnApply()
|
|||||||
}
|
}
|
||||||
case SMDSAbs_Volume:
|
case SMDSAbs_Volume:
|
||||||
anElemId = aMeshEditor->AddVolume(anArrayOfIndices.inout()); break;
|
anElemId = aMeshEditor->AddVolume(anArrayOfIndices.inout()); break;
|
||||||
default:;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( anElemId != -1 && GroupGroups->isChecked() ) {
|
if ( anElemId != -1 && addToGroup && !aGroupName.isEmpty() ) {
|
||||||
SMESH::SMESH_Group_var aGroup;
|
SMESH::SMESH_Group_var aGroupUsed;
|
||||||
QString aGroupName = ComboBox_GroupName->currentText();
|
if ( aGroup->_is_nil() ) {
|
||||||
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
// create new group
|
||||||
for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
aGroupUsed = SMESH::AddGroup( myMesh, (SMESH::ElementType)myElementType, aGroupName );
|
||||||
SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i];
|
if ( !aGroupUsed->_is_nil() ) {
|
||||||
if( !aGroupBase->_is_nil() ) {
|
myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroupUsed));
|
||||||
SMESH::SMESH_Group_var aRefGroup = SMESH::SMESH_Group::_narrow( aGroupBase );
|
ComboBox_GroupName->addItem( aGroupName );
|
||||||
if( !aRefGroup->_is_nil() ) {
|
|
||||||
QString aRefGroupName( aRefGroup->GetName() );
|
|
||||||
if( aRefGroupName == aGroupName ) {
|
|
||||||
aGroup = aRefGroup; // // add node to existing group
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( aGroup->_is_nil() ) // create new group
|
else
|
||||||
aGroup = SMESH::AddGroup( myMesh, (SMESH::ElementType)myElementType, aGroupName );
|
aGroupUsed = SMESH::SMESH_Group::_narrow( aGroup );
|
||||||
|
}
|
||||||
|
|
||||||
if( !aGroup->_is_nil() ) {
|
if ( !aGroupUsed->_is_nil() ) {
|
||||||
SMESH::long_array_var anIdList = new SMESH::long_array;
|
SMESH::long_array_var anIdList = new SMESH::long_array;
|
||||||
anIdList->length( 1 );
|
anIdList->length( 1 );
|
||||||
anIdList[0] = anElemId;
|
anIdList[0] = anElemId;
|
||||||
aGroup->Add( anIdList.inout() );
|
aGroupUsed->Add( anIdList.inout() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -699,16 +726,16 @@ void SMESHGUI_AddMeshElementDlg::SelectionIntoArgument()
|
|||||||
|
|
||||||
// process groups
|
// process groups
|
||||||
if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) {
|
if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) {
|
||||||
|
myGroups.clear();
|
||||||
ComboBox_GroupName->clear();
|
ComboBox_GroupName->clear();
|
||||||
ComboBox_GroupName->addItem( QString() );
|
ComboBox_GroupName->addItem( QString() );
|
||||||
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
||||||
for ( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
for ( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
||||||
SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i];
|
SMESH::SMESH_GroupBase_var aGroup = aListOfGroups[i];
|
||||||
if ( !aGroupBase->_is_nil() && aGroupBase->GetType() == (SMESH::ElementType)myElementType ) {
|
if ( !aGroup->_is_nil() && aGroup->GetType() == (SMESH::ElementType)myElementType ) {
|
||||||
SMESH::SMESH_Group_var aGroup = SMESH::SMESH_Group::_narrow( aGroupBase );
|
|
||||||
if ( !aGroup->_is_nil() ) {
|
|
||||||
QString aGroupName( aGroup->GetName() );
|
QString aGroupName( aGroup->GetName() );
|
||||||
if ( !aGroupName.isEmpty() )
|
if ( !aGroupName.isEmpty() ) {
|
||||||
|
myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroup));
|
||||||
ComboBox_GroupName->addItem( aGroupName );
|
ComboBox_GroupName->addItem( aGroupName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,6 +78,8 @@ private:
|
|||||||
|
|
||||||
bool isValid();
|
bool isValid();
|
||||||
|
|
||||||
|
typedef QList<SMESH::SMESH_GroupBase_var> GrpList;
|
||||||
|
|
||||||
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
|
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
|
||||||
LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */
|
LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */
|
||||||
int myNbOkNodes; /* to check when arguments is defined */
|
int myNbOkNodes; /* to check when arguments is defined */
|
||||||
@ -94,6 +96,7 @@ private:
|
|||||||
SMESH_Actor* myActor;
|
SMESH_Actor* myActor;
|
||||||
SMESH::TElementSimulation* mySimulation;
|
SMESH::TElementSimulation* mySimulation;
|
||||||
QString myEntry;
|
QString myEntry;
|
||||||
|
GrpList myGroups;
|
||||||
|
|
||||||
QGroupBox* GroupConstructors;
|
QGroupBox* GroupConstructors;
|
||||||
QRadioButton* Constructor1;
|
QRadioButton* Constructor1;
|
||||||
|
@ -720,6 +720,30 @@ void SMESHGUI_AddQuadraticElementDlg::ClickOnApply()
|
|||||||
for (int i = 0; i < aNumberOfIds; i++)
|
for (int i = 0; i < aNumberOfIds; i++)
|
||||||
anArrayOfIdeces[i] = anIds[ 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;
|
SMESH::ElementType anElementType;
|
||||||
long anElemId = -1;
|
long anElemId = -1;
|
||||||
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
|
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
|
||||||
@ -737,33 +761,37 @@ void SMESHGUI_AddQuadraticElementDlg::ClickOnApply()
|
|||||||
case QUAD_HEXAHEDRON:
|
case QUAD_HEXAHEDRON:
|
||||||
anElementType = SMESH::VOLUME;
|
anElementType = SMESH::VOLUME;
|
||||||
anElemId = aMeshEditor->AddVolume(anArrayOfIdeces.inout()); break;
|
anElemId = aMeshEditor->AddVolume(anArrayOfIdeces.inout()); break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( anElemId != -1 && GroupGroups->isChecked() ) {
|
if ( anElemId != -1 && addToGroup && !aGroupName.isEmpty() ) {
|
||||||
SMESH::SMESH_Group_var aGroup;
|
SMESH::SMESH_Group_var aGroupUsed;
|
||||||
QString aGroupName = ComboBox_GroupName->currentText();
|
if ( aGroup->_is_nil() ) {
|
||||||
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
// create new group
|
||||||
for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
aGroupUsed = SMESH::AddGroup( myMesh, anElementType, aGroupName );
|
||||||
SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i];
|
if ( !aGroupUsed->_is_nil() ) {
|
||||||
if( !aGroupBase->_is_nil() ) {
|
myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroupUsed));
|
||||||
SMESH::SMESH_Group_var aRefGroup = SMESH::SMESH_Group::_narrow( aGroupBase );
|
ComboBox_GroupName->addItem( aGroupName );
|
||||||
if( !aRefGroup->_is_nil() ) {
|
|
||||||
QString aRefGroupName( aRefGroup->GetName() );
|
|
||||||
if( aRefGroupName == aGroupName ) {
|
|
||||||
aGroup = aRefGroup; // // add node to existing group
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( aGroup->_is_nil() ) // create new group
|
else
|
||||||
aGroup = SMESH::AddGroup( myMesh, anElementType, aGroupName );
|
aGroupUsed = SMESH::SMESH_Group::_narrow( aGroup );
|
||||||
|
}
|
||||||
|
|
||||||
if( !aGroup->_is_nil() ) {
|
if ( !aGroupUsed->_is_nil() ) {
|
||||||
SMESH::long_array_var anIdList = new SMESH::long_array;
|
SMESH::long_array_var anIdList = new SMESH::long_array;
|
||||||
anIdList->length( 1 );
|
anIdList->length( 1 );
|
||||||
anIdList[0] = anElemId;
|
anIdList[0] = anElemId;
|
||||||
aGroup->Add( anIdList.inout() );
|
aGroupUsed->Add( anIdList.inout() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -936,16 +964,16 @@ void SMESHGUI_AddQuadraticElementDlg::SelectionIntoArgument()
|
|||||||
case QUAD_HEXAHEDRON:
|
case QUAD_HEXAHEDRON:
|
||||||
anElementType = SMESH::VOLUME; break;
|
anElementType = SMESH::VOLUME; break;
|
||||||
}
|
}
|
||||||
|
myGroups.clear();
|
||||||
ComboBox_GroupName->clear();
|
ComboBox_GroupName->clear();
|
||||||
ComboBox_GroupName->addItem( QString() );
|
ComboBox_GroupName->addItem( QString() );
|
||||||
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
||||||
for ( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
for ( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
||||||
SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i];
|
SMESH::SMESH_GroupBase_var aGroup = aListOfGroups[i];
|
||||||
if ( !aGroupBase->_is_nil() && aGroupBase->GetType() == anElementType ) {
|
if ( !aGroup->_is_nil() && aGroup->GetType() == anElementType ) {
|
||||||
SMESH::SMESH_Group_var aGroup = SMESH::SMESH_Group::_narrow( aGroupBase );
|
|
||||||
if ( !aGroup->_is_nil() ) {
|
|
||||||
QString aGroupName( aGroup->GetName() );
|
QString aGroupName( aGroup->GetName() );
|
||||||
if ( !aGroupName.isEmpty() )
|
if ( !aGroupName.isEmpty() ) {
|
||||||
|
myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroup));
|
||||||
ComboBox_GroupName->addItem( aGroupName );
|
ComboBox_GroupName->addItem( aGroupName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,6 +71,8 @@ public:
|
|||||||
~SMESHGUI_AddQuadraticElementDlg();
|
~SMESHGUI_AddQuadraticElementDlg();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
typedef QList<SMESH::SMESH_GroupBase_var> GrpList;
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
void closeEvent( QCloseEvent* );
|
void closeEvent( QCloseEvent* );
|
||||||
void hideEvent( QHideEvent* ); /* ESC key */
|
void hideEvent( QHideEvent* ); /* ESC key */
|
||||||
@ -93,6 +95,7 @@ private:
|
|||||||
SMESH_Actor* myActor;
|
SMESH_Actor* myActor;
|
||||||
SMESH::TElementSimulation* mySimulation;
|
SMESH::TElementSimulation* mySimulation;
|
||||||
QString myEntry;
|
QString myEntry;
|
||||||
|
GrpList myGroups;
|
||||||
|
|
||||||
int myType;
|
int myType;
|
||||||
bool myIsEditCorners;
|
bool myIsEditCorners;
|
||||||
|
@ -449,6 +449,31 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::ClickOnApply()
|
|||||||
if(checkEditLine(false) == -1) {return;}
|
if(checkEditLine(false) == -1) {return;}
|
||||||
busy = true;
|
busy = true;
|
||||||
long anElemId = -1;
|
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)
|
if (GetConstructorId() == 0)
|
||||||
{
|
{
|
||||||
SMESH::long_array_var anIdsOfNodes = new SMESH::long_array;
|
SMESH::long_array_var anIdsOfNodes = new SMESH::long_array;
|
||||||
@ -509,31 +534,34 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::ClickOnApply()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( anElemId != -1 && GroupGroups->isChecked() ) {
|
if ( anElemId != -1 && addToGroup && !aGroupName.isEmpty() ) {
|
||||||
SMESH::SMESH_Group_var aGroup;
|
SMESH::SMESH_Group_var aGroupUsed;
|
||||||
QString aGroupName = ComboBox_GroupName->currentText();
|
if ( aGroup->_is_nil() ) {
|
||||||
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
// create new group
|
||||||
for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
aGroupUsed = SMESH::AddGroup( myMesh, SMESH::VOLUME, aGroupName );
|
||||||
SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i];
|
if ( !aGroupUsed->_is_nil() ) {
|
||||||
if( !aGroupBase->_is_nil() ) {
|
myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroupUsed));
|
||||||
SMESH::SMESH_Group_var aRefGroup = SMESH::SMESH_Group::_narrow( aGroupBase );
|
ComboBox_GroupName->addItem( aGroupName );
|
||||||
if( !aRefGroup->_is_nil() ) {
|
|
||||||
QString aRefGroupName( aRefGroup->GetName() );
|
|
||||||
if( aRefGroupName == aGroupName ) {
|
|
||||||
aGroup = aRefGroup; // // add node to existing group
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( aGroup->_is_nil() ) // create new group
|
else
|
||||||
aGroup = SMESH::AddGroup( myMesh, SMESH::VOLUME, aGroupName );
|
aGroupUsed = SMESH::SMESH_Group::_narrow( aGroup );
|
||||||
|
}
|
||||||
|
|
||||||
if( !aGroup->_is_nil() ) {
|
if ( !aGroupUsed->_is_nil() ) {
|
||||||
SMESH::long_array_var anIdList = new SMESH::long_array;
|
SMESH::long_array_var anIdList = new SMESH::long_array;
|
||||||
anIdList->length( 1 );
|
anIdList->length( 1 );
|
||||||
anIdList[0] = anElemId;
|
anIdList[0] = anElemId;
|
||||||
aGroup->Add( anIdList.inout() );
|
aGroupUsed->Add( anIdList.inout() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -734,16 +762,16 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::SelectionIntoArgument()
|
|||||||
|
|
||||||
// process groups
|
// process groups
|
||||||
if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) {
|
if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) {
|
||||||
|
myGroups.clear();
|
||||||
ComboBox_GroupName->clear();
|
ComboBox_GroupName->clear();
|
||||||
ComboBox_GroupName->addItem( QString() );
|
ComboBox_GroupName->addItem( QString() );
|
||||||
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
||||||
for ( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
for ( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
||||||
SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i];
|
SMESH::SMESH_GroupBase_var aGroup = aListOfGroups[i];
|
||||||
if ( !aGroupBase->_is_nil() && aGroupBase->GetType() == SMESH::VOLUME ) {
|
if ( !aGroup->_is_nil() && aGroup->GetType() == SMESH::VOLUME ) {
|
||||||
SMESH::SMESH_Group_var aGroup = SMESH::SMESH_Group::_narrow( aGroupBase );
|
|
||||||
if ( !aGroup->_is_nil() ) {
|
|
||||||
QString aGroupName( aGroup->GetName() );
|
QString aGroupName( aGroup->GetName() );
|
||||||
if ( !aGroupName.isEmpty() )
|
if ( !aGroupName.isEmpty() ) {
|
||||||
|
myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroup));
|
||||||
ComboBox_GroupName->addItem( aGroupName );
|
ComboBox_GroupName->addItem( aGroupName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,8 @@ public:
|
|||||||
~SMESHGUI_CreatePolyhedralVolumeDlg();
|
~SMESHGUI_CreatePolyhedralVolumeDlg();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
typedef QList<SMESH::SMESH_GroupBase_var> GrpList;
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
void closeEvent( QCloseEvent* );
|
void closeEvent( QCloseEvent* );
|
||||||
void enterEvent( QEvent* ); /* mouse enter the QWidget */
|
void enterEvent( QEvent* ); /* mouse enter the QWidget */
|
||||||
@ -93,6 +95,7 @@ private:
|
|||||||
SMESH_Actor* myActor;
|
SMESH_Actor* myActor;
|
||||||
SMESH::TPolySimulation* mySimulation;
|
SMESH::TPolySimulation* mySimulation;
|
||||||
QString myEntry;
|
QString myEntry;
|
||||||
|
GrpList myGroups;
|
||||||
|
|
||||||
QGroupBox* ConstructorsBox;
|
QGroupBox* ConstructorsBox;
|
||||||
QButtonGroup* GroupConstructors;
|
QButtonGroup* GroupConstructors;
|
||||||
|
@ -51,6 +51,8 @@
|
|||||||
#include <LightApp_Application.h>
|
#include <LightApp_Application.h>
|
||||||
#include <LightApp_SelectionMgr.h>
|
#include <LightApp_SelectionMgr.h>
|
||||||
|
|
||||||
|
#include <SalomeApp_Application.h>
|
||||||
|
|
||||||
#include <SVTK_ViewWindow.h>
|
#include <SVTK_ViewWindow.h>
|
||||||
#include <VTKViewer_Algorithm.h>
|
#include <VTKViewer_Algorithm.h>
|
||||||
#include <VTKViewer_CellLocationsArray.h>
|
#include <VTKViewer_CellLocationsArray.h>
|
||||||
@ -439,35 +441,64 @@ bool SMESHGUI_NodesDlg::ClickOnApply()
|
|||||||
aParameters << SpinBox_Y->text();
|
aParameters << SpinBox_Y->text();
|
||||||
aParameters << SpinBox_Z->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 );
|
mySimulation->SetVisibility( false );
|
||||||
|
|
||||||
long aNodeId = SMESH::AddNode( myMesh, x, y, z, aParameters );
|
long aNodeId = SMESH::AddNode( myMesh, x, y, z, aParameters );
|
||||||
|
|
||||||
SMESH::SetPointRepresentation( true );
|
SMESH::SetPointRepresentation( true );
|
||||||
|
|
||||||
if( aNodeId != -1 && GroupGroups->isChecked() ) {
|
if ( aNodeId != -1 && addToGroup && !aGroupName.isEmpty() ) {
|
||||||
SMESH::SMESH_Group_var aGroup;
|
SMESH::SMESH_Group_var aGroupUsed;
|
||||||
QString aGroupName = ComboBox_GroupName->currentText();
|
if ( aGroup->_is_nil() ){
|
||||||
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
// create new group
|
||||||
for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
aGroupUsed = SMESH::AddGroup( myMesh, SMESH::NODE, aGroupName );
|
||||||
SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i];
|
if ( !aGroupUsed->_is_nil() ) {
|
||||||
if( !aGroupBase->_is_nil() ) {
|
myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroupUsed));
|
||||||
SMESH::SMESH_Group_var aRefGroup = SMESH::SMESH_Group::_narrow( aGroupBase );
|
ComboBox_GroupName->addItem( aGroupName );
|
||||||
if( !aRefGroup->_is_nil() ) {
|
|
||||||
QString aRefGroupName( aRefGroup->GetName() );
|
|
||||||
if( aRefGroupName == aGroupName ) {
|
|
||||||
aGroup = aRefGroup; // // add node to existing group
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( aGroup->_is_nil() ) // create new group
|
else
|
||||||
aGroup = SMESH::AddGroup( myMesh, SMESH::NODE, aGroupName );
|
aGroupUsed = SMESH::SMESH_Group::_narrow( aGroup );
|
||||||
|
}
|
||||||
|
|
||||||
if( !aGroup->_is_nil() ) {
|
if ( !aGroupUsed->_is_nil() ) {
|
||||||
SMESH::long_array_var anIdList = new SMESH::long_array;
|
SMESH::long_array_var anIdList = new SMESH::long_array;
|
||||||
anIdList->length( 1 );
|
anIdList->length( 1 );
|
||||||
anIdList[0] = aNodeId;
|
anIdList[0] = aNodeId;
|
||||||
aGroup->Add( anIdList.inout() );
|
aGroupUsed->Add( anIdList.inout() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -581,16 +612,16 @@ void SMESHGUI_NodesDlg::SelectionIntoArgument()
|
|||||||
|
|
||||||
// process groups
|
// process groups
|
||||||
if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) {
|
if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) {
|
||||||
|
myGroups.clear();
|
||||||
ComboBox_GroupName->clear();
|
ComboBox_GroupName->clear();
|
||||||
ComboBox_GroupName->addItem( QString() );
|
ComboBox_GroupName->addItem( QString() );
|
||||||
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
|
||||||
for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
for( int i = 0, n = aListOfGroups.length(); i < n; i++ ) {
|
||||||
SMESH::SMESH_GroupBase_var aGroupBase = aListOfGroups[i];
|
SMESH::SMESH_GroupBase_var aGroup = aListOfGroups[i];
|
||||||
if ( !aGroupBase->_is_nil() && aGroupBase->GetType() == SMESH::NODE ) {
|
if ( !aGroup->_is_nil() && aGroup->GetType() == SMESH::NODE ) {
|
||||||
SMESH::SMESH_Group_var aGroup = SMESH::SMESH_Group::_narrow( aGroupBase );
|
|
||||||
if ( !aGroup->_is_nil() ) {
|
|
||||||
QString aGroupName( aGroup->GetName() );
|
QString aGroupName( aGroup->GetName() );
|
||||||
if ( !aGroupName.isEmpty() )
|
if ( !aGroupName.isEmpty() ) {
|
||||||
|
myGroups.append(SMESH::SMESH_GroupBase::_duplicate(aGroup));
|
||||||
ComboBox_GroupName->addItem( aGroupName );
|
ComboBox_GroupName->addItem( aGroupName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,6 +66,8 @@ public:
|
|||||||
~SMESHGUI_NodesDlg();
|
~SMESHGUI_NodesDlg();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
typedef QList<SMESH::SMESH_GroupBase_var> GrpList;
|
||||||
|
|
||||||
LightApp_SelectionMgr* mySelectionMgr;
|
LightApp_SelectionMgr* mySelectionMgr;
|
||||||
SVTK_Selector* mySelector;
|
SVTK_Selector* mySelector;
|
||||||
SMESHGUI* mySMESHGUI;
|
SMESHGUI* mySMESHGUI;
|
||||||
@ -73,6 +75,7 @@ private:
|
|||||||
SMESH::SMESH_Mesh_var myMesh;
|
SMESH::SMESH_Mesh_var myMesh;
|
||||||
SMESH::TNodeSimulation* mySimulation;
|
SMESH::TNodeSimulation* mySimulation;
|
||||||
QString myEntry;
|
QString myEntry;
|
||||||
|
GrpList myGroups;
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
void enterEvent( QEvent* );
|
void enterEvent( QEvent* );
|
||||||
|
@ -761,8 +761,13 @@ Please, select a mesh and try again</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GROUP_NAME_IS_EMPTY</source>
|
<source>GROUP_NAME_IS_EMPTY</source>
|
||||||
<translation>Name of group is empty
|
<translation>Name of group is not specified.
|
||||||
Please input a name of new group or choose the existing one</translation>
|
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>
|
||||||
<message>
|
<message>
|
||||||
<source>NODE_ID</source>
|
<source>NODE_ID</source>
|
||||||
|
Loading…
Reference in New Issue
Block a user