X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Gen_i.hxx;h=f1cce14532e39807622b9cc37fa4ab113f6b83e6;hb=d0f366c4a3a66a71b0be94f7a6e2d146f80a94c4;hp=77e3adf43dd87d6c721b48507ffe3041212d2a28;hpb=c3bf92bd87b770fd81631a3853f7f5bb1ac6a4e8;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index 77e3adf43..f1cce1453 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -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,10 +43,14 @@ #include "SALOME_NamingService.hxx" #include "SMESH_Gen.hxx" -#include "SMESH_topo.hxx" #include "GEOM_Client.hxx" +#include +#include +#include + #include +#include class SMESH_Mesh_i; class SALOME_LifeCycleCORBA; @@ -124,6 +127,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 +143,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 @@ -164,8 +176,19 @@ public: const char* theLibName) throw ( SALOME::SALOME_Exception ); + // Return hypothesis of given type holding parameter values of the existing mesh + SMESH::SMESH_Hypothesis_ptr GetHypothesisParameterValues (const char* theHypType, + const char* theLibName, + SMESH::SMESH_Mesh_ptr theMesh, + GEOM::GEOM_Object_ptr theGeom) + 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,21 +196,35 @@ 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 ); + // Returns errors of hypotheses definintion + SMESH::algo_error_array* GetAlgoState( SMESH::SMESH_Mesh_ptr theMesh, + GEOM::GEOM_Object_ptr theSubObject ) + 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 ); + // Return geometrical object the given element is built on + GEOM::GEOM_Object_ptr GetGeometryByMeshElement( SMESH::SMESH_Mesh_ptr theMesh, + CORBA::Long theElementID, + const char* theGeomName) + throw ( SALOME::SALOME_Exception ); // **************************************************** // Interface inherited methods (from SALOMEDS::Driver) @@ -195,8 +232,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 +252,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 ); @@ -255,6 +295,32 @@ public: return aResultSO._retn(); } + // ============ + // Dump python + // ============ + + virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy, + CORBA::Boolean isPublished, + CORBA::Boolean& isValidScript); + + void AddToPythonScript (int theStudyID, const TCollection_AsciiString& theString); + + void RemoveLastFromPythonScript (int theStudyID); + + void SavePython (SALOMEDS::Study_ptr theStudy); + + TCollection_AsciiString DumpPython_impl (int theStudyID, + Resource_DataMapOfAsciiStringAsciiString& theObjectNames, + Resource_DataMapOfAsciiStringAsciiString& theNames, + bool isPublished, + bool& aValidScript, + const TCollection_AsciiString& theSavedTrace); + + TCollection_AsciiString GetNewPythonLines (int theStudyID); + + void CleanPythonTrace (int theStudyID); + + // ***************************************** // Internal methods // ***************************************** @@ -273,14 +339,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 +407,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 @@ -309,6 +417,21 @@ private: GEOM_Client* myShapeReader; // Shape reader SALOMEDS::Study_var myCurrentStudy; // Current study + + // Dump Python: trace of API methods calls + std::map < int, Handle(TColStd_HSequenceOfAsciiString) > myPythonScripts; }; + +namespace SMESH +{ + template + T + DownCast(CORBA::Object_ptr theArg) + { + return dynamic_cast(SMESH_Gen_i::GetServant(theArg).in()); + } +} + + #endif