Salome HOME
in createGroup(), make a unique name if no name is provided
authoreap <eap@opencascade.com>
Mon, 14 Mar 2011 10:28:54 +0000 (10:28 +0000)
committereap <eap@opencascade.com>
Mon, 14 Mar 2011 10:28:54 +0000 (10:28 +0000)
src/SMESH_I/SMESH_Mesh_i.cxx

index a088cce96db094346ec184926c181c892ce13fe8..ad026374c3e1b4a55b3405ae0bce14f4565c3ae2 100644 (file)
@@ -2070,6 +2070,18 @@ SMESH::SMESH_GroupBase_ptr SMESH_Mesh_i::createGroup (SMESH::ElementType theElem
                                                       const char*         theName,
                                                       const TopoDS_Shape& theShape )
 {
+  std::string newName;
+  if ( !theName || strlen( theName ) == 0 )
+  {
+    std::set< std::string > presentNames;
+    std::map<int, SMESH::SMESH_GroupBase_ptr>::const_iterator i_gr = _mapGroups.begin();
+    for ( ; i_gr != _mapGroups.end(); ++i_gr )
+      presentNames.insert( i_gr->second->GetName() );
+    do {
+      newName = "noname_Group_" + SMESH_Comment( presentNames.size() + 1 );
+    } while ( !presentNames.insert( newName ).second );
+    theName = newName.c_str();
+  }
   int anId;
   SMESH::SMESH_GroupBase_var aGroup;
   if ( _impl->AddGroup( (SMDSAbs_ElementType)theElemType, theName, anId, theShape )) {