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:
vsr 2010-05-05 15:23:42 +00:00
parent 3ad2a95049
commit f13c7febf9
9 changed files with 246 additions and 115 deletions

View File

@ -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 );
}
}
}
}

View File

@ -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;

View File

@ -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 );
}
}
}
}

View File

@ -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;

View File

@ -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 );
}
}
}

View File

@ -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;

View File

@ -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 );
}
}
}

View File

@ -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;

View File

@ -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>