X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Mesh_i.hxx;h=0d79c015d74c7a4ec1e912308811e81255ae393c;hp=f4c2cf71bd39102befbf3a2443efac78d45f64ea;hb=6472eab132825fec572beda8276947593f85ffa1;hpb=8a9d91b414c3f26586dea735c22c7700898a0a1e diff --git a/src/SMESH_I/SMESH_Mesh_i.hxx b/src/SMESH_I/SMESH_Mesh_i.hxx index f4c2cf71b..0d79c015d 100644 --- a/src/SMESH_I/SMESH_Mesh_i.hxx +++ b/src/SMESH_I/SMESH_Mesh_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2019 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 @@ -74,6 +74,9 @@ public: GEOM::GEOM_Object_ptr GetShapeToMesh() throw (SALOME::SALOME_Exception); + virtual void ReplaceShape(GEOM::GEOM_Object_ptr theNewGeom) + throw (SALOME::SALOME_Exception); + CORBA::Boolean IsLoaded() throw (SALOME::SALOME_Exception); @@ -167,6 +170,10 @@ public: CORBA::Boolean theUnderlyingOnly ) throw (SALOME::SALOME_Exception); + SMESH::ListOfGroups* FaceGroupsSeparatedByEdges( CORBA::Double theSharpAngle, + CORBA::Boolean theCreateEdges, + CORBA::Boolean theUseExistingEdges ) + throw (SALOME::SALOME_Exception); SMESH::SMESH_Group_ptr ConvertToStandalone( SMESH::SMESH_GroupBase_ptr theGroupOn ) throw (SALOME::SALOME_Exception); @@ -225,21 +232,23 @@ public: * Consider maximum group name length stored in MED file. */ CORBA::Boolean HasDuplicatedGroupNamesMED(); + /*! * Return string representation of a MED file version comprising nbDigits */ - char* GetVersionString(SMESH::MED_VERSION version, CORBA::Short nbDigits); + char* GetVersionString(CORBA::Long minor, CORBA::Short nbDigits); + + /*! + * Return the list of med versions compatibles for write/append, + * encoded in 10*major+minor (for instance, code for med 3.2.1 is 32) + */ + SMESH::long_array* GetMEDVersionsCompatibleForAppend(); - void ExportToMEDX( const char* file, - CORBA::Boolean auto_groups, - SMESH::MED_VERSION version, - CORBA::Boolean overwrite, - CORBA::Boolean autoDimension=true) throw (SALOME::SALOME_Exception); - void ExportToMED ( const char* file, - CORBA::Boolean auto_groups, - SMESH::MED_VERSION version ) throw (SALOME::SALOME_Exception); - void ExportMED ( const char* file, - CORBA::Boolean auto_groups ) throw (SALOME::SALOME_Exception); + void ExportMED( const char* file, + CORBA::Boolean auto_groups, + CORBA::Long version, + CORBA::Boolean overwrite, + CORBA::Boolean autoDimension = true) throw (SALOME::SALOME_Exception); void ExportSAUV( const char* file, CORBA::Boolean auto_groups ) throw (SALOME::SALOME_Exception); @@ -248,7 +257,8 @@ public: void ExportSTL( const char* file, bool isascii ) throw (SALOME::SALOME_Exception); void ExportCGNS(SMESH::SMESH_IDSource_ptr meshPart, const char* file, - CORBA::Boolean overwrite) throw (SALOME::SALOME_Exception); + CORBA::Boolean overwrite, + CORBA::Boolean groupElemsByType) throw (SALOME::SALOME_Exception); void ExportGMF(SMESH::SMESH_IDSource_ptr meshPart, const char* file, CORBA::Boolean withRequiredGroups) throw (SALOME::SALOME_Exception); @@ -256,11 +266,12 @@ public: void ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart, const char* file, CORBA::Boolean auto_groups, - SMESH::MED_VERSION version, + CORBA::Long version, CORBA::Boolean overwrite, CORBA::Boolean autoDim, const GEOM::ListOfFields& fields, - const char* geomAssocFields) throw (SALOME::SALOME_Exception); + const char* geomAssocFields, + CORBA::Double ZTolerance) throw (SALOME::SALOME_Exception); void ExportPartToDAT(SMESH::SMESH_IDSource_ptr meshPart, const char* file) throw (SALOME::SALOME_Exception); void ExportPartToUNV(SMESH::SMESH_IDSource_ptr meshPart, @@ -316,7 +327,7 @@ public: CORBA::Long NbPolygons() throw (SALOME::SALOME_Exception); - CORBA::Long NbPolygonsOfOrder(SMESH::ElementOrder order=SMESH::ORDER_ANY) + CORBA::Long NbPolygonsOfOrder(SMESH::ElementOrder order = SMESH::ORDER_ANY) throw (SALOME::SALOME_Exception); CORBA::Long NbVolumes() @@ -406,8 +417,11 @@ public: const char* theGroupName) throw (SALOME::SALOME_Exception); + // =================================================== // Internal methods not available through CORBA // They are called by corresponding interface methods + // =================================================== + SMESH_Hypothesis::Hypothesis_Status addHypothesis(GEOM::GEOM_Object_ptr aSubShape, SMESH::SMESH_Hypothesis_ptr anHyp, std::string* anErrorText=0); @@ -429,6 +443,7 @@ public: SMESH::SMESH_GroupBase_ptr createGroup(SMESH::ElementType theElemType, const char* theName, + const int theID = -1, const TopoDS_Shape& theShape = TopoDS_Shape(), const SMESH_PredicatePtr& thePred = SMESH_PredicatePtr()); @@ -440,21 +455,19 @@ public: const std::map& getGroups() { return _mapGroups; } // return existing group objects - void onHypothesisModified(); + void onHypothesisModified(int theHypID, bool updateIcons); // callback from _impl to forget not loaded mesh data (issue 0021208) - void checkMeshLoaded(); - /*! * \brief Update data if geometry changes * * Issue 0022501 */ - void CheckGeomModif(); + void CheckGeomModif( bool isBreakLink = false ); /*! * \brief Update hypotheses assigned to geom groups if the latter change * - * NPAL16168: "geometrical group edition from a submesh don't modifiy mesh computation" + * NPAL16168: "geometrical group edition from a submesh don't modify mesh computation" */ void CheckGeomGroupModif(); @@ -465,6 +478,16 @@ public: */ void CreateGroupServants(); + /*! + * \brief Return true if all sub-meshes are computed OK - to update an icon + */ + bool IsComputedOK(); + + + // ==================================== + // SMESH_Mesh interface (continuation) + // ==================================== + /*! * \brief Return groups cantained in _mapGroups by their IDs */ @@ -480,7 +503,8 @@ public: * For given node returns list of IDs of inverse elements * If there is not node for given ID - returns empty list */ - SMESH::long_array* GetNodeInverseElements(CORBA::Long id); + SMESH::long_array* GetNodeInverseElements(CORBA::Long id, + SMESH::ElementType elemType); /*! * \brief Return position of a node on shape @@ -591,6 +615,18 @@ public: */ virtual SMESH::MedFileInfo* GetMEDFileInfo(); + /*! + * Persistence of file info + */ + std::string FileInfoToString(); + void FileInfoFromString(const std::string& info); + + /*! + * Persistence of geometry tick + */ + int& MainShapeTick() { return _mainShapeTick; } + + /*! * Sets list of notebook variables used for Mesh operations separated by ":" symbol */ @@ -659,10 +695,11 @@ public: * happen if mesh data is not yet fully loaded from the file of study. */ bool IsMeshInfoCorrect(); - /*! - * Returns mesh unstructed grid information. - */ - virtual SALOMEDS::TMPFile* GetVtkUgStream(); + /*! + * Returns mesh unstructed grid information. + */ + virtual SALOMEDS::TMPFile* GetVtkUgStream(); + std::map _mapSubMesh_i; //NRI std::map _mapSubMesh; //NRI @@ -694,12 +731,13 @@ private: */ TListOfListOfInt findConcurrentSubMeshes(); -private: + private: static int _idGenerator; ::SMESH_Mesh* _impl; // :: force no namespace here SMESH_Gen_i* _gen_i; int _id; // id given by creator (unique within the creator instance) + int _nbInvalidHypos; std::map _mapSubMeshIor; std::map _mapGroups; std::map _mapHypo; @@ -736,7 +774,7 @@ private: /*! * Return new group contents if it has been changed and update group data */ - TopoDS_Shape newGroupShape( TGeomGroupData & groupData); + TopoDS_Shape newGroupShape( TGeomGroupData & groupData, int how ); };