Salome HOME
NPAL16716. Compound: To create the groups of initial meshes.
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MeshUtils.cxx
1 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
3 // 
4 //  This library is free software; you can redistribute it and/or 
5 //  modify it under the terms of the GNU Lesser General Public 
6 //  License as published by the Free Software Foundation; either 
7 //  version 2.1 of the License. 
8 // 
9 //  This library is distributed in the hope that it will be useful, 
10 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 //  Lesser General Public License for more details. 
13 // 
14 //  You should have received a copy of the GNU Lesser General Public 
15 //  License along with this library; if not, write to the Free Software 
16 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
17 // 
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19
20
21 #include "SMESHGUI_MeshUtils.h"
22 #include "SMESHGUI_Utils.h"
23 #include "SALOMEDSClient_Study.hxx"
24
25 #include "SALOMEconfig.h"
26 #include CORBA_SERVER_HEADER(SMESH_Group)
27
28 namespace SMESH
29 {
30   
31   SMESH_Mesh_var GetMeshByIO(const Handle(SALOME_InteractiveObject)& theIO)
32   {
33     CORBA::Object_var anObj = IObjectToObject(theIO);
34     if(!CORBA::is_nil(anObj)){
35       SMESH_Mesh_var aMesh = SMESH_Mesh::_narrow(anObj);
36       if(!CORBA::is_nil(aMesh))
37         return aMesh;
38       SMESH_GroupBase_var aGroup = SMESH_GroupBase::_narrow(anObj);
39       if(!CORBA::is_nil(aGroup))
40         return aGroup->GetMesh();
41       SMESH_subMesh_var aSubMesh = SMESH_subMesh::_narrow(anObj);
42       if(!CORBA::is_nil(aSubMesh))
43         return aSubMesh->GetFather();
44     }
45     return SMESH_Mesh::_nil();
46   }
47
48   QString UniqueMeshName(const char* theBaseName, const char* thePostfix)
49   {
50     QString baseName = theBaseName;
51     if ( thePostfix/* && !name.contains( postfix )*/) { // add postfix
52       baseName += "_";
53       baseName += thePostfix;
54     }
55     if(_PTR(Study) aStudy = GetActiveStudyDocument()) {
56       QString name = baseName;
57       while ( !aStudy->FindObjectByName( name.latin1(), "SMESH" ).empty() ) {
58         int nb = 0;
59         if ( name[ name.length()-1 ].isNumber() ) {
60           int nbBeg = name.findRev("_");
61           nb = name.right( name.length() - nbBeg - 1 ).toInt();
62           name = name.left( nbBeg );
63         }
64         name += QString("_%1").arg( nb+1 );
65       }
66       return name;
67     }
68     return QString("");
69   }
70
71 }