mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-25 08:50:35 +05:00
0020028: EDF 842 SMESH : Can't export to med a mesh with same names
for one group of nodes and one group of faces avoid duplicated group names within one type of elements only
This commit is contained in:
parent
72982ad122
commit
163dc9b8fd
@ -1029,12 +1029,15 @@ bool SMESH_Mesh::GetAutoColor() throw(SALOME_Exception)
|
|||||||
|
|
||||||
bool SMESH_Mesh::HasDuplicatedGroupNamesMED()
|
bool SMESH_Mesh::HasDuplicatedGroupNamesMED()
|
||||||
{
|
{
|
||||||
set<string> aGroupNames;
|
//set<string> aGroupNames; // Corrected for Mantis issue 0020028
|
||||||
for ( map<int, SMESH_Group*>::iterator it = _mapGroup.begin(); it != _mapGroup.end(); it++ ) {
|
map< SMDSAbs_ElementType, set<string> > aGroupNames;
|
||||||
|
for ( map<int, SMESH_Group*>::iterator it = _mapGroup.begin(); it != _mapGroup.end(); it++ )
|
||||||
|
{
|
||||||
SMESH_Group* aGroup = it->second;
|
SMESH_Group* aGroup = it->second;
|
||||||
|
SMDSAbs_ElementType aType = aGroup->GetGroupDS()->GetType();
|
||||||
string aGroupName = aGroup->GetName();
|
string aGroupName = aGroup->GetName();
|
||||||
aGroupName.resize(MAX_MED_GROUP_NAME_LENGTH);
|
aGroupName.resize(MAX_MED_GROUP_NAME_LENGTH);
|
||||||
if (!aGroupNames.insert(aGroupName).second)
|
if (!aGroupNames[aType].insert(aGroupName).second)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1067,17 +1070,19 @@ void SMESH_Mesh::ExportMED(const char *file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pass groups to writer. Provide unique group names.
|
// Pass groups to writer. Provide unique group names.
|
||||||
set<string> aGroupNames;
|
//set<string> aGroupNames; // Corrected for Mantis issue 0020028
|
||||||
|
map< SMDSAbs_ElementType, set<string> > aGroupNames;
|
||||||
char aString [256];
|
char aString [256];
|
||||||
int maxNbIter = 10000; // to guarantee cycle finish
|
int maxNbIter = 10000; // to guarantee cycle finish
|
||||||
for ( map<int, SMESH_Group*>::iterator it = _mapGroup.begin(); it != _mapGroup.end(); it++ ) {
|
for ( map<int, SMESH_Group*>::iterator it = _mapGroup.begin(); it != _mapGroup.end(); it++ ) {
|
||||||
SMESH_Group* aGroup = it->second;
|
SMESH_Group* aGroup = it->second;
|
||||||
SMESHDS_GroupBase* aGroupDS = aGroup->GetGroupDS();
|
SMESHDS_GroupBase* aGroupDS = aGroup->GetGroupDS();
|
||||||
if ( aGroupDS ) {
|
if ( aGroupDS ) {
|
||||||
|
SMDSAbs_ElementType aType = aGroupDS->GetType();
|
||||||
string aGroupName0 = aGroup->GetName();
|
string aGroupName0 = aGroup->GetName();
|
||||||
aGroupName0.resize(MAX_MED_GROUP_NAME_LENGTH);
|
aGroupName0.resize(MAX_MED_GROUP_NAME_LENGTH);
|
||||||
string aGroupName = aGroupName0;
|
string aGroupName = aGroupName0;
|
||||||
for (int i = 1; !aGroupNames.insert(aGroupName).second && i < maxNbIter; i++) {
|
for (int i = 1; !aGroupNames[aType].insert(aGroupName).second && i < maxNbIter; i++) {
|
||||||
sprintf(&aString[0], "GR_%d_%s", i, aGroupName0.c_str());
|
sprintf(&aString[0], "GR_%d_%s", i, aGroupName0.c_str());
|
||||||
aGroupName = aString;
|
aGroupName = aString;
|
||||||
aGroupName.resize(MAX_MED_GROUP_NAME_LENGTH);
|
aGroupName.resize(MAX_MED_GROUP_NAME_LENGTH);
|
||||||
|
Loading…
Reference in New Issue
Block a user