Salome HOME
Merge branch 'master' of ssh://git.salome-platform.org/modules/hydro
[modules/hydro.git] / src / HYDROData / HYDROData_CalculationCase.cxx
index 5e0ce79ec10159a36f052a1b24c417a36676baee..27b5294e20ee979189e9cc1616381ccf573b870c 100644 (file)
@@ -1,3 +1,24 @@
+// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 
 #include "HYDROData_CalculationCase.h"
 
@@ -11,6 +32,7 @@
 #include "HYDROData_SplittedShapesGroup.h"
 #include "HYDROData_Region.h"
 #include "HYDROData_Tool.h"
+#include "HYDROData_GeomTool.h"
 
 #include <GEOMBase.h>
 
 
 #define EXPORT_NAME "HYDRO_" + GetName()
 
-#include <SALOME_NamingService.hxx>
-#include <SALOME_LifeCycleCORBA.hxx>
-
-
-
-
-
 IMPLEMENT_STANDARD_HANDLE(HYDROData_CalculationCase, HYDROData_Entity)
 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_CalculationCase, HYDROData_Entity)
 
@@ -180,19 +195,9 @@ QStringList HYDROData_CalculationCase::DumpToPython( MapOfTreatedObjects& theTre
       if ( aRegion.IsNull() )
         continue;
 
-      QString aRegionName = aRegion->GetName();
-
-      HYDROData_SequenceOfObjects aZones = aRegion->GetZones();
-      HYDROData_SequenceOfObjects::Iterator aZonesIter( aZones );
-      for ( ; aZonesIter.More(); aZonesIter.Next() )
-      {
-        Handle(HYDROData_Zone) aRegZone =
-          Handle(HYDROData_Zone)::DownCast( aZonesIter.Value() );
-        if ( aRegZone.IsNull() )
-          continue;
-
-        // TODO
-      }
+      theTreatedObjects.insert( aRegion->GetName(), aRegion );
+      QStringList aRegDump = aRegion->DumpToPython( theTreatedObjects );
+      aResList << aRegDump;
     }
   }
 
@@ -228,6 +233,7 @@ void HYDROData_CalculationCase::DumpSampleMeshing( QStringList& theResList,
   theResList << "# Meshing";
   theResList << "import SMESH, SALOMEDS";
   theResList << "from salome.smesh import smeshBuilder";
+  theResList << "from salome.geom import geomBuilder";
 
   theResList << QString( "smesh = smeshBuilder.New( %1 )" ).arg( theStudyName );
   theResList << QString( "%1 = smesh.Mesh( %2 )" ).arg( theMeshName ).arg( theGeomShapeName );
@@ -244,6 +250,16 @@ void HYDROData_CalculationCase::DumpSampleMeshing( QStringList& theResList,
   theResList << "smesh.SetName( Max_Size_1, 'Max Size_1' )";
   theResList << "smesh.SetName( Max_Element_Area_1, 'Max. Element Area_1' )";
   theResList << QString( "smesh.SetName( %1.GetMesh(), '%1' )" ).arg( theMeshName );
+
+  theResList << "";
+  theResList << "# Greate SMESH groups";
+  theResList << QString( "geompy = geomBuilder.New( %1 )" ).arg( theStudyName );
+  theResList << QString( "geom_groups = geompy.GetGroups( %1 )" ).arg( theGeomShapeName );
+  theResList << QString( "for group in geom_groups:" );
+  theResList << QString( "    smesh_group = %1.GroupOnGeom(group, group.GetName(), SMESH.EDGE)" )
+                .arg( theMeshName );
+  theResList << QString( "    smesh.SetName(smesh_group, group.GetName())" );
+  theResList << QString( "    print \"SMESH group '%s': %s\" % (smesh_group.GetName(), smesh_group)" );
 }
 
 HYDROData_SequenceOfObjects HYDROData_CalculationCase::GetAllReferenceObjects() const
@@ -907,18 +923,9 @@ Handle(HYDROData_SplittedShapesGroup) HYDROData_CalculationCase::addNewSplittedG
 
 QString HYDROData_CalculationCase::Export( int theStudyId ) const
 {
-  int argc = 0;
-  char** argv = 0;
-  CORBA::ORB_var anORB = CORBA::ORB_init( argc, argv, "omniORB4"/*CORBA::ORB_ID*/ );
-  SALOME_NamingService aNameService( anORB );
-  SALOME_LifeCycleCORBA aLCC( &aNameService );
-  Engines::EngineComponent_var aComponent = aLCC.FindOrLoad_Component( "FactoryServer", "GEOM" );
-  GEOM::GEOM_Gen_var aGEOMEngine = GEOM::GEOM_Gen::_narrow( aComponent );
+  GEOM::GEOM_Gen_var aGEOMEngine = HYDROData_GeomTool::GetGeomGen();
+  SALOMEDS::Study_var aDSStudy = HYDROData_GeomTool::GetStudyByID( theStudyId );
   
-  CORBA::Object_var aSMObject = aNameService.Resolve("/myStudyManager");
-  SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(aSMObject);
-  SALOMEDS::Study_var aDSStudy = aStudyManager->GetStudyByID( theStudyId );
-
   QString aGeomObjEntry;
   bool isOK = Export( aGEOMEngine, aDSStudy, aGeomObjEntry );
   return isOK ? aGeomObjEntry : QString();
@@ -1154,7 +1161,7 @@ GEOM::GEOM_Object_ptr HYDROData_CalculationCase::publishShapeInGEOM(
   
   // Puplish the GEOM object
   if ( !aGeomObj->_is_nil() ) {
-    QString aName = GEOMBase::GetDefaultName( theName );
+    QString aName = HYDROData_GeomTool::GetFreeName( theStudy, theName );
 
     SALOMEDS::SObject_var aResultSO = 
       theGeomEngine->PublishInStudy( theStudy, SALOMEDS::SObject::_nil(),