Salome HOME
Undo mistaken commit
[modules/smesh.git] / src / SMESH_I / SMESH_Gen_i.hxx
index 77e3adf43dd87d6c721b48507ffe3041212d2a28..a9330165364c232e7c74da62819508ca51d88957 100644 (file)
@@ -34,7 +34,6 @@
 #include CORBA_SERVER_HEADER(SMESH_Mesh)
 #include CORBA_SERVER_HEADER(SMESH_Hypothesis)
 #include CORBA_CLIENT_HEADER(GEOM_Gen)
-#include CORBA_CLIENT_HEADER(GEOM_Shape)
 #include CORBA_CLIENT_HEADER(SALOMEDS)
 #include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
 
@@ -44,7 +43,6 @@
 #include "SALOME_NamingService.hxx"
 
 #include "SMESH_Gen.hxx"
-#include "SMESH_topo.hxx"
 #include "GEOM_Client.hxx"
 
 #include <map>
@@ -124,6 +122,8 @@ class SMESH_Gen_i:
   public virtual Engines_Component_i 
 {
 public:
+  // Get last created instance of the class
+  static SMESH_Gen_i* GetSMESHGen() { return mySMESHGen;}
   // Get ORB object
   static CORBA::ORB_var GetORB() { return myOrb;}
   // Get SMESH module's POA object
@@ -138,7 +138,14 @@ public:
   static PortableServer::ServantBase_var GetServant( CORBA::Object_ptr theObject );
   // Get CORBA object corresponding to the SALOMEDS::SObject
   static CORBA::Object_var SObjectToObject( SALOMEDS::SObject_ptr theSObject );
-
+  // Get the SALOMEDS::SObject corresponding to a CORBA object
+  static SALOMEDS::SObject_ptr ObjectToSObject(SALOMEDS::Study_ptr theStudy,
+                                               CORBA::Object_ptr   theObject);
+  // Get GEOM Object correspoding to TopoDS_Shape
+  GEOM::GEOM_Object_ptr ShapeToGeomObject (const TopoDS_Shape& theShape );
+  // Get TopoDS_Shape correspoding to GEOM_Object
+  TopoDS_Shape GeomObjectToShape(GEOM::GEOM_Object_ptr theGeomObject);
+  
   // Default constructor
   SMESH_Gen_i();
   // Standard constructor
@@ -165,7 +172,11 @@ public:
     throw ( SALOME::SALOME_Exception );
   
   // Create empty mesh on a shape
-  SMESH::SMESH_Mesh_ptr CreateMesh( GEOM::GEOM_Shape_ptr theShape )
+  SMESH::SMESH_Mesh_ptr CreateMesh( GEOM::GEOM_Object_ptr theShapeObject )
+    throw ( SALOME::SALOME_Exception );
+
+  //  Create mesh(es) and import data from UNV file
+  SMESH::SMESH_Mesh_ptr CreateMeshesFromUNV( const char* theFileName )
     throw ( SALOME::SALOME_Exception );
 
   //  Create mesh(es) and import data from MED file
@@ -173,19 +184,23 @@ public:
                                           SMESH::DriverMED_ReadStatus& theStatus )
     throw ( SALOME::SALOME_Exception );
 
+  //  Create mesh(es) and import data from STL file
+  SMESH::SMESH_Mesh_ptr CreateMeshesFromSTL( const char* theFileName )
+    throw ( SALOME::SALOME_Exception );
+
   // Compute mesh on a shape
   CORBA::Boolean Compute( SMESH::SMESH_Mesh_ptr theMesh,
-                          GEOM::GEOM_Shape_ptr  theShape )
+                          GEOM::GEOM_Object_ptr  theShapeObject )
     throw ( SALOME::SALOME_Exception );
 
   // Returns true if mesh contains enough data to be computed
   CORBA::Boolean IsReadyToCompute( SMESH::SMESH_Mesh_ptr theMesh,
-                                   GEOM::GEOM_Shape_ptr  theShape )
+                                   GEOM::GEOM_Object_ptr theShapeObject )
     throw ( SALOME::SALOME_Exception );
 
   // Get sub-shapes unique ID's list
-  SMESH::long_array* GetSubShapesId( GEOM::GEOM_Shape_ptr      theMainShape,
-                                     const SMESH::shape_array& theListOfSubShape )
+  SMESH::long_array* GetSubShapesId( GEOM::GEOM_Object_ptr      theMainShapeObject,
+                                     const SMESH::object_array& theListOfSubShape )
     throw ( SALOME::SALOME_Exception );
 
 
@@ -195,8 +210,8 @@ public:
 
   // Save SMESH data
   SALOMEDS::TMPFile* Save( SALOMEDS::SComponent_ptr theComponent,
-                          const char*              theURL,
-                          bool                     isMultiFile );
+                        const char*              theURL,
+                        bool                     isMultiFile );
   // Load SMESH data
   bool Load( SALOMEDS::SComponent_ptr theComponent,
             const SALOMEDS::TMPFile& theStream,
@@ -215,6 +230,9 @@ public:
   // Create filter manager
   SMESH::FilterManager_ptr CreateFilterManager();
 
+  // Return a pattern mesher
+  SMESH::SMESH_Pattern_ptr GetPattern();
+
   // Clears study-connected data when it is closed
   void Close( SALOMEDS::SComponent_ptr theComponent );
   
@@ -273,14 +291,56 @@ public:
   static long GetSubMeshOnFaceTag();
   static long GetSubMeshOnSolidTag();
   static long GetSubMeshOnCompoundTag();
+  static long GetSubMeshOnWireTag();
+  static long GetSubMeshOnShellTag();
   static long GetNodeGroupsTag();
   static long GetEdgeGroupsTag();
   static long GetFaceGroupsTag();
   static long GetVolumeGroupsTag();
 
+  // publishing methods
+  SALOMEDS::SComponent_ptr PublishComponent(SALOMEDS::Study_ptr theStudy);
+  SALOMEDS::SObject_ptr PublishMesh (SALOMEDS::Study_ptr   theStudy,
+                                     SMESH::SMESH_Mesh_ptr theMesh,
+                                     const char*           theName = 0);
+  SALOMEDS::SObject_ptr PublishHypothesis (SALOMEDS::Study_ptr         theStudy,
+                                           SMESH::SMESH_Hypothesis_ptr theHyp,
+                                           const char*                 theName = 0);
+  SALOMEDS::SObject_ptr PublishSubMesh (SALOMEDS::Study_ptr      theStudy,
+                                        SMESH::SMESH_Mesh_ptr    theMesh,
+                                        SMESH::SMESH_subMesh_ptr theSubMesh,
+                                        GEOM::GEOM_Object_ptr    theShapeObject,
+                                       const char*              theName = 0);
+  SALOMEDS::SObject_ptr PublishGroup (SALOMEDS::Study_ptr    theStudy,
+                                      SMESH::SMESH_Mesh_ptr  theMesh,
+                                      SMESH::SMESH_GroupBase_ptr theGroup,
+                                      GEOM::GEOM_Object_ptr  theShapeObject,
+                                      const char*            theName = 0);
+  bool AddHypothesisToShape(SALOMEDS::Study_ptr         theStudy,
+                            SMESH::SMESH_Mesh_ptr       theMesh,
+                            GEOM::GEOM_Object_ptr       theShapeObject,
+                            SMESH::SMESH_Hypothesis_ptr theHyp);
+  bool RemoveHypothesisFromShape(SALOMEDS::Study_ptr         theStudy,
+                                 SMESH::SMESH_Mesh_ptr       theMesh,
+                                 GEOM::GEOM_Object_ptr       theShapeObject,
+                                 SMESH::SMESH_Hypothesis_ptr theHyp);
+  SALOMEDS::SObject_ptr GetMeshOrSubmeshByShape (SALOMEDS::Study_ptr   theStudy,
+                                                 SMESH::SMESH_Mesh_ptr theMesh,
+                                                 GEOM::GEOM_Object_ptr theShape);
+  static void SetName(SALOMEDS::SObject_ptr theSObject,
+                      const char*           theName,
+                      const char*           theDefaultName = 0);
+
   //  Get study context
   StudyContext* GetCurrentStudyContext();
-  
+
+  // Register an object in a StudyContext; return object id
+  int RegisterObject(CORBA::Object_ptr theObject);
+
+  // Get current study ID
+  int GetCurrentStudyID()
+  { return myCurrentStudy->_is_nil() ? -1 : myCurrentStudy->StudyId(); }
 private:
   // Create hypothesis of given type
   SMESH::SMESH_Hypothesis_ptr createHypothesis( const char* theHypName,
@@ -299,7 +359,7 @@ private:
   static PortableServer::POA_var myPoa;         // POA reference
   static SALOME_NamingService*   myNS;          // Naming Service
   static SALOME_LifeCycleCORBA*  myLCC;         // Life Cycle CORBA
-
+  static SMESH_Gen_i*            mySMESHGen;    // Point to last created instance of the class
   ::SMESH_Gen               myGen;              // SMESH_Gen local implementation
 
   // hypotheses managing