X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Gen_i.hxx;h=fb16909b89743ceb7c0822599a0afd0ef66409a9;hp=2360fd4d17ea482d0307e8326fd7871056dfebac;hb=HEAD;hpb=3785fda32c59dfa7cf1ac7c680cc185be0bdcdfc diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index 2360fd4d1..1b3af8ad5 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -35,6 +35,7 @@ #include CORBA_CLIENT_HEADER(GEOM_Gen) #include CORBA_CLIENT_HEADER(SALOMEDS) #include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) +#include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog) #include "SMESH_Gen.hxx" #include "SMESH_Mesh_i.hxx" @@ -45,6 +46,7 @@ #include #include +#include #include #include @@ -79,6 +81,8 @@ public: void mapOldToNew( const int oldId, const int newId ); // get old id by a new one int getOldId( const int newId ); + // clear data + void Clear(); private: // get next free object identifier @@ -91,9 +95,7 @@ private: // =========================================================== // SMESH module's engine // ========================================================== -class SMESH_I_EXPORT SMESH_Gen_i: - public virtual POA_SMESH::SMESH_Gen, - public virtual Engines_Component_i +class SMESH_I_EXPORT SMESH_Gen_i : public POA_SMESH::SMESH_Gen, public Engines_Component_i { public: // Get last created instance of the class @@ -102,24 +104,36 @@ public: static CORBA::ORB_var GetORB() { return myOrb;} // Get SMESH module's POA object static PortableServer::POA_var GetPOA() { return myPoa;} + // Set Naming Service object + static void SetNS(SALOME_NamingService_Abstract *ns); // Get Naming Service object - static SALOME_NamingService* GetNS(); + static SALOME_NamingService_Abstract* GetNS(); // Get SALOME_LifeCycleCORBA object static SALOME_LifeCycleCORBA* GetLCC(); // Retrieve and get GEOM engine reference - static GEOM::GEOM_Gen_var GetGeomEngine(); + static GEOM::GEOM_Gen_var GetGeomEngine( GEOM::GEOM_Object_ptr ); + // Retrieve Study depending on Session / Standalone mode + virtual GEOM::GEOM_Gen_var GetGeomEngine( bool isShaper ) = 0; + SALOMEDS::Study_var getStudyServant() const { return this->getStudyServantVirtual(); } + virtual SALOMEDS::Study_var getStudyServantVirtual() const = 0 ; + virtual SALOME_ModuleCatalog::ModuleCatalog_var getModuleCatalog() const = 0; + SALOMEDS::SObject_ptr publish(CORBA::Object_ptr theIOR, + SALOMEDS::SObject_ptr theFatherObject, + const int theTag = 0, + const char* thePixMap = 0, + const bool theSelectable = true); // Get object of the CORBA reference 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(CORBA::Object_ptr theObject); - // Get the SALOMEDS::Study from naming service - static SALOMEDS::Study_var getStudyServant(); + SALOMEDS::SObject_ptr ObjectToSObject( CORBA::Object_ptr theObject ); // Get GEOM Object corresponding to TopoDS_Shape - GEOM::GEOM_Object_ptr ShapeToGeomObject (const TopoDS_Shape& theShape ); + static GEOM::GEOM_Object_ptr ShapeToGeomObject( const TopoDS_Shape& theShape ); // Get TopoDS_Shape corresponding to GEOM_Object - TopoDS_Shape GeomObjectToShape(GEOM::GEOM_Object_ptr theGeomObject); + static TopoDS_Shape GeomObjectToShape( GEOM::GEOM_Object_ptr theGeomObject ); + // Get GEOM Object by its study entry + static GEOM::GEOM_Object_ptr GetGeomObjectByEntry( const std::string& entry ); // Default constructor SMESH_Gen_i(); @@ -128,7 +142,8 @@ public: PortableServer::POA_ptr poa, PortableServer::ObjectId* contId, const char* instanceName, - const char* interfaceName ); + const char* interfaceName, + bool checkNS = true); // Destructor virtual ~SMESH_Gen_i(); @@ -156,18 +171,28 @@ public: // Update study void UpdateStudy(); - // Create hypothesis/algorothm of given type + // Do provide info on objects + bool hasObjectInfo(); + + // Return an information for a given object + char* getObjectInfo(const char* entry); + + // Create hypothesis/algorithm of given type SMESH::SMESH_Hypothesis_ptr CreateHypothesis (const char* theHypType, - const char* theLibName) - throw ( SALOME::SALOME_Exception ); + const char* theLibName); + + SMESH::SMESH_Hypothesis_ptr CreateHypothesisByAverageLength( const char* theHypType, + const char* theLibName, + CORBA::Double theAverageLength, + CORBA::Boolean theQuadDominated); // 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, - CORBA::Boolean byMesh) - throw ( SALOME::SALOME_Exception ); + SMESH::SMESH_Hypothesis_ptr + GetHypothesisParameterValues (const char* theHypType, + const char* theLibName, + SMESH::SMESH_Mesh_ptr theMesh, + GEOM::GEOM_Object_ptr theGeom, + const SMESH::HypInitParams& theWay); /* * Returns True if a hypothesis is assigned to a sole sub-mesh in a current Study @@ -182,11 +207,11 @@ public: * Sets number of segments per diagonal of boundary box of geometry by which * default segment length of appropriate 1D hypotheses is defined */ - void SetBoundaryBoxSegmentation( CORBA::Long theNbSegments ) throw ( SALOME::SALOME_Exception ); + void SetBoundaryBoxSegmentation( CORBA::Long theNbSegments ); /*! * \brief Sets default number of segments per edge */ - void SetDefaultNbSegments(CORBA::Long theNbSegments) throw ( SALOME::SALOME_Exception ); + void SetDefaultNbSegments(CORBA::Long theNbSegments); /*! Set an option value @@ -204,41 +229,41 @@ public: // Create empty mesh on a shape - SMESH::SMESH_Mesh_ptr CreateMesh( GEOM::GEOM_Object_ptr theShapeObject ) - throw ( SALOME::SALOME_Exception ); + SMESH::SMESH_Mesh_ptr CreateMesh( GEOM::GEOM_Object_ptr theShapeObject ); + + // Create empty parallel mesh on a shape + SMESH::SMESH_ParallelMesh_ptr CreateParallelMesh( GEOM::GEOM_Object_ptr theShapeObject ); // Create empty mesh - SMESH::SMESH_Mesh_ptr CreateEmptyMesh() - throw ( SALOME::SALOME_Exception ); + SMESH::SMESH_Mesh_ptr CreateEmptyMesh(); // Create a mesh and import data from an UNV file - SMESH::SMESH_Mesh_ptr CreateMeshesFromUNV( const char* theFileName ) - throw ( SALOME::SALOME_Exception ); + SMESH::SMESH_Mesh_ptr CreateMeshesFromUNV( const char* theFileName ); // Create mesh(es) and import data from MED file SMESH::mesh_array* CreateMeshesFromMED( const char* theFileName, - SMESH::DriverMED_ReadStatus& theStatus ) - throw ( SALOME::SALOME_Exception ); - - // Create mesh(es) and import data from MED file - SMESH::mesh_array* CreateMeshesFromSAUV( const char* theFileName, - SMESH::DriverMED_ReadStatus& theStatus ) - throw ( SALOME::SALOME_Exception ); + SMESH::DriverMED_ReadStatus& theStatus ); // Create a mesh and import data from a STL file - SMESH::SMESH_Mesh_ptr CreateMeshesFromSTL( const char* theFileName ) - throw ( SALOME::SALOME_Exception ); + SMESH::SMESH_Mesh_ptr CreateMeshesFromSTL( const char* theFileName ); // Create mesh(es) and import data from CGNS file SMESH::mesh_array* CreateMeshesFromCGNS( const char* theFileName, - SMESH::DriverMED_ReadStatus& theStatus ) - throw ( SALOME::SALOME_Exception ); + SMESH::DriverMED_ReadStatus& theStatus ); // Create a mesh and import data from a GMF file SMESH::SMESH_Mesh_ptr CreateMeshesFromGMF( const char* theFileName, CORBA::Boolean theMakeRequiredGroups, - SMESH::ComputeError_out theError) - throw ( SALOME::SALOME_Exception ); + SMESH::ComputeError_out theError); + + // Create a mesh and import data from any file supported by meshio library + SMESH::mesh_array* CreateMeshesFromMESHIO(const char* theFileName, + SMESH::DriverMED_ReadStatus& theStatus); + + // Create dual mesh of a tetrahedron mesh + SMESH::SMESH_Mesh_ptr CreateDualMesh(SMESH::SMESH_IDSource_ptr meshPart, + const char* meshName, + CORBA::Boolean adapt_to_shape); // Copy a part of mesh SMESH::SMESH_Mesh_ptr CopyMesh(SMESH::SMESH_IDSource_ptr meshPart, @@ -246,10 +271,22 @@ public: CORBA::Boolean toCopyGroups, CORBA::Boolean toKeepIDs); - // Compute mesh on a shape + // Create a mesh by copying definitions of another mesh to a given geometry + CORBA::Boolean CopyMeshWithGeom( SMESH::SMESH_Mesh_ptr sourceMesh, + GEOM::GEOM_Object_ptr newGeometry, + const char* meshName, + CORBA::Boolean toCopyGroups, + CORBA::Boolean toReuseHypotheses, + CORBA::Boolean toCopyElements, + SMESH::SMESH_Mesh_out newMesh, + SMESH::ListOfGroups_out newGroups, + SMESH::submesh_array_out newSubmeshes, + SMESH::ListOfHypothesis_out newHypotheses, + SMESH::string_array_out invalidEntries); + + // Compute mesh on a shape CORBA::Boolean Compute( SMESH::SMESH_Mesh_ptr theMesh, - GEOM::GEOM_Object_ptr theShapeObject ) - throw ( SALOME::SALOME_Exception ); + GEOM::GEOM_Object_ptr theShapeObject ); // Cancel Compute mesh on a shape void CancelCompute( SMESH::SMESH_Mesh_ptr theMesh, @@ -259,22 +296,19 @@ public: * \brief Return errors of mesh computation */ SMESH::compute_error_array* GetComputeErrors(SMESH::SMESH_Mesh_ptr theMesh, - GEOM::GEOM_Object_ptr theShapeObject ) - throw ( SALOME::SALOME_Exception ); + GEOM::GEOM_Object_ptr theShapeObject ); /*! * Evaluate mesh on a shape and * returns statistic of mesh elements * Result array of number enityties */ - SMESH::long_array* Evaluate(SMESH::SMESH_Mesh_ptr theMesh, - GEOM::GEOM_Object_ptr theShapeObject) - throw ( SALOME::SALOME_Exception ); + SMESH::smIdType_array* Evaluate(SMESH::SMESH_Mesh_ptr theMesh, + GEOM::GEOM_Object_ptr theShapeObject); // Returns true if mesh contains enough data to be computed CORBA::Boolean IsReadyToCompute( SMESH::SMESH_Mesh_ptr theMesh, - GEOM::GEOM_Object_ptr theShapeObject ) - throw ( SALOME::SALOME_Exception ); + GEOM::GEOM_Object_ptr theShapeObject ); /*! * Calculate Mesh as preview till indicated dimension on shape @@ -284,63 +318,56 @@ public: SMESH::MeshPreviewStruct* Precompute( SMESH::SMESH_Mesh_ptr theMesh, GEOM::GEOM_Object_ptr theSubObject, SMESH::Dimension theDimension, - SMESH::long_array& theShapesId ) - throw ( SALOME::SALOME_Exception ); + SMESH::long_array& theShapesId ); // Returns errors of hypotheses definition SMESH::algo_error_array* GetAlgoState( SMESH::SMESH_Mesh_ptr theMesh, - GEOM::GEOM_Object_ptr theSubObject ) - throw ( SALOME::SALOME_Exception ); + GEOM::GEOM_Object_ptr theSubObject ); // Return mesh elements preventing computation of a subshape SMESH::MeshPreviewStruct* GetBadInputElements( SMESH::SMESH_Mesh_ptr theMesh, - CORBA::Short theSubShapeID ) - throw ( SALOME::SALOME_Exception ); + CORBA::Short theSubShapeID ); // Create groups of elements preventing computation of a sub-shape SMESH::ListOfGroups* MakeGroupsOfBadInputElements( SMESH::SMESH_Mesh_ptr theMesh, CORBA::Short theSubShapeID, - const char* theGroupName) - throw ( SALOME::SALOME_Exception ); + const char* theGroupName); // Get sub-shapes unique ID's list SMESH::long_array* GetSubShapesId( GEOM::GEOM_Object_ptr theMainShapeObject, - const SMESH::object_array& theListOfSubShape ) - throw ( SALOME::SALOME_Exception ); + const SMESH::object_array& theListOfSubShape ); // Return geometrical object the given element is built on. Publish it in study. GEOM::GEOM_Object_ptr GetGeometryByMeshElement( SMESH::SMESH_Mesh_ptr theMesh, - CORBA::Long theElementID, - const char* theGeomName) - throw ( SALOME::SALOME_Exception ); + SMESH::smIdType theElementID, + const char* theGeomName); // Return geometrical object the given element is built on. Don't publish it in study. GEOM::GEOM_Object_ptr FindGeometryByMeshElement( SMESH::SMESH_Mesh_ptr theMesh, - CORBA::Long theElementID) - throw ( SALOME::SALOME_Exception ); + SMESH::smIdType theElementID); // Concatenate the given meshes into one mesh SMESH::SMESH_Mesh_ptr ConcatenateCommon(const SMESH::ListOfIDSources& meshesArray, CORBA::Boolean uniteIdenticalGroups, CORBA::Boolean mergeNodesAndElements, CORBA::Double mergeTolerance, - CORBA::Boolean commonGroups) - throw ( SALOME::SALOME_Exception ); + CORBA::Boolean commonGroups, + SMESH::SMESH_Mesh_ptr meshToAppendTo); // Concatenate the given meshes into one mesh SMESH::SMESH_Mesh_ptr Concatenate(const SMESH::ListOfIDSources& meshesArray, CORBA::Boolean uniteIdenticalGroups, CORBA::Boolean mergeNodesAndElements, - CORBA::Double mergeTolerance) - throw ( SALOME::SALOME_Exception ); + CORBA::Double mergeTolerance, + SMESH::SMESH_Mesh_ptr meshToAppendTo); // Concatenate the given meshes into one mesh // Create the groups of all elements from initial meshes SMESH::SMESH_Mesh_ptr ConcatenateWithGroups(const SMESH::ListOfIDSources& meshesArray, CORBA::Boolean uniteIdenticalGroups, CORBA::Boolean mergeNodesAndElements, - CORBA::Double mergeTolerance) - throw ( SALOME::SALOME_Exception ); + CORBA::Double mergeTolerance, + SMESH::SMESH_Mesh_ptr meshToAppendTo); // Get version of MED format being used. char* GetMEDFileVersion(); @@ -411,19 +438,18 @@ public: // Publish object in the study SALOMEDS::SObject_ptr PublishInStudy( SALOMEDS::SObject_ptr theSObject, CORBA::Object_ptr theObject, - const char* theName ) - throw ( SALOME::SALOME_Exception ); + const char* theName ); // Copy-paste methods - returns true if object can be copied to the clipboard - CORBA::Boolean CanCopy( SALOMEDS::SObject_ptr theObject ) { return false; } + CORBA::Boolean CanCopy( SALOMEDS::SObject_ptr /*theObject*/ ) { return false; } // Copy-paste methods - copy object to the clipboard - SALOMEDS::TMPFile* CopyFrom( SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID ) { return NULL; } + SALOMEDS::TMPFile* CopyFrom( SALOMEDS::SObject_ptr /*theObject*/, CORBA::Long& /*theObjectID*/ ) { return NULL; } // Copy-paste methods - returns true if object can be pasted from the clipboard - CORBA::Boolean CanPaste( const char* theComponentName, CORBA::Long theObjectID ) { return false; } + CORBA::Boolean CanPaste( const char* /*theComponentName*/, CORBA::Long /*theObjectID*/ ) { return false; } // Copy-paste methods - paste object from the clipboard - SALOMEDS::SObject_ptr PasteInto( const SALOMEDS::TMPFile& theStream, - CORBA::Long theObjectID, - SALOMEDS::SObject_ptr theObject ) { + SALOMEDS::SObject_ptr PasteInto( const SALOMEDS::TMPFile& /*theStream*/, + CORBA::Long /*theObjectID*/, + SALOMEDS::SObject_ptr /*theObject*/ ) { SALOMEDS::SObject_var aResultSO; return aResultSO._retn(); } @@ -460,6 +486,14 @@ public: void CleanPythonTrace(); + int CountInPyDump(const TCollection_AsciiString& text); + + SMESH::MG_ADAPT_ptr CreateMG_ADAPT(); + SMESHHOMARD::HOMARD_Gen_ptr CreateHOMARD_ADAPT(); + SMESH::MG_ADAPT_ptr CreateAdaptationHypothesis(); + //SMESH::MG_ADAPT_OBJECT_ptr Adaptation( const char* adaptationType); + SALOME::GenericObj_ptr Adaptation( const char* adaptationType); + // ***************************************** // Internal methods // ***************************************** @@ -502,6 +536,8 @@ public: GEOM::GEOM_Object_ptr theShapeObject, const char* theName = 0); void UpdateIcons(SMESH::SMESH_Mesh_ptr theMesh); + void HighLightInvalid(CORBA::Object_ptr theObject, bool isInvalid); + bool IsInvalid(SALOMEDS::SObject_ptr theObject); bool AddHypothesisToShape(SMESH::SMESH_Mesh_ptr theMesh, GEOM::GEOM_Object_ptr theShapeObject, SMESH::SMESH_Hypothesis_ptr theHyp); @@ -510,12 +546,12 @@ public: SMESH::SMESH_Hypothesis_ptr theHyp); SALOMEDS::SObject_ptr GetMeshOrSubmeshByShape (SMESH::SMESH_Mesh_ptr theMesh, GEOM::GEOM_Object_ptr theShape); - static void SetName(SALOMEDS::SObject_ptr theSObject, - const char* theName, - const char* theDefaultName = 0); + void SetName(SALOMEDS::SObject_ptr theSObject, + const char* theName, + const char* theDefaultName = 0); - static void SetPixMap(SALOMEDS::SObject_ptr theSObject, - const char* thePixMap); + void SetPixMap(SALOMEDS::SObject_ptr theSObject, const char *thePixMap); + void addReference (SALOMEDS::SObject_ptr theSObject, CORBA::Object_ptr theToObject, int theTag = 0); // Get study context StudyContext* GetStudyContext(); @@ -597,32 +633,36 @@ private: // Get hypothesis creator GenericHypothesisCreator_i* getHypothesisCreator( const char* theHypName, const char* theLibName, - std::string& thePlatformLibName) - throw ( SALOME::SALOME_Exception ); + std::string& thePlatformLibName); // Create hypothesis of given type SMESH::SMESH_Hypothesis_ptr createHypothesis( const char* theHypName, const char* theLibName); // Create empty mesh on shape - SMESH::SMESH_Mesh_ptr createMesh() - throw ( SALOME::SALOME_Exception ); + SMESH::SMESH_Mesh_ptr createMesh(); + SMESH::SMESH_ParallelMesh_ptr createParallelMesh(); - static void loadGeomData( SALOMEDS::SComponent_ptr theCompRoot ); + // Check mesh icon + bool isGeomModifIcon( SMESH::SMESH_Mesh_ptr mesh ); - SMESH::mesh_array* CreateMeshesFromMEDorSAUV( const char* theFileName, - SMESH::DriverMED_ReadStatus& theStatus, - const char* theCommandNameForPython, - const char* theFileNameForPython); + // Create a sub-mesh on a geometry that is not a sub-shape of the main shape + // for the case where a valid sub-shape not found by CopyMeshWithGeom() + SMESH::SMESH_subMesh_ptr createInvalidSubMesh( SMESH::SMESH_Mesh_ptr mesh, + GEOM::GEOM_Object_ptr strangerGeom, + const char* name ); + + void highLightInvalid( SALOMEDS::SObject_ptr theSObject, bool isInvalid ); std::vector _GetInside(SMESH::SMESH_IDSource_ptr meshPart, - SMESH::ElementType theElemType, - TopoDS_Shape& aShape, - double* theTolerance = NULL); + SMESH::ElementType ElemType, + const TopoDS_Shape& Shape, + double* Tolerance = NULL); -private: +protected: static GEOM::GEOM_Gen_var myGeomGen; + static SALOME_NamingService_Abstract* myNS; // Naming Service +private: static CORBA::ORB_var myOrb; // ORB reference 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