X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_Mesh.hxx;h=2b926f5dd8804c68f42a1ebe4d8dbd1bcefdd8bb;hb=22f2cb0c9596d27f8079dceca3cf6f5422de95f6;hp=fc607868f604a4b6d0476da9419fbc48c65aeeac;hpb=da68d59ab6481e3e419f836622c730a954e619a2;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_Mesh.hxx b/src/SMESH/SMESH_Mesh.hxx index fc607868f..2b926f5dd 100644 --- a/src/SMESH/SMESH_Mesh.hxx +++ b/src/SMESH/SMESH_Mesh.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -20,7 +20,6 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions // File : SMESH_Mesh.hxx // Author : Paul RASCLE, EDF // Module : SMESH @@ -30,12 +29,12 @@ #include "SMESH_SMESH.hxx" -#include "SMESH_Hypothesis.hxx" -#include "SMESH_Controls.hxx" - -#include "SMESHDS_Mesh.hxx" -#include "SMESHDS_Command.hxx" #include "SMDSAbs_ElementType.hxx" +#include "SMESHDS_Command.hxx" +#include "SMESHDS_Mesh.hxx" +#include "SMESH_ComputeError.hxx" +#include "SMESH_Controls.hxx" +#include "SMESH_Hypothesis.hxx" #include "Utils_SALOME_Exception.hxx" @@ -45,6 +44,7 @@ #include #include + #ifdef WNT #pragma warning(disable:4251) // Warning DLL Interface ... #pragma warning(disable:4290) // Warning Exception ... @@ -98,11 +98,14 @@ public: */ static const TopoDS_Solid& PseudoShape(); + /*! + * \brief Load mesh from study file + */ + void Load(); /*! * \brief Remove all nodes and elements */ void Clear(); - /*! * \brief Remove all nodes and elements of indicated shape */ @@ -119,6 +122,9 @@ public: int CGNSToMesh(const char* theFileName, const int theMeshIndex, std::string& theMeshName); + SMESH_ComputeErrorPtr GMFToMesh(const char* theFileName, + bool theMakeRequiredGroups = true ); + SMESH_Hypothesis::Hypothesis_Status AddHypothesis(const TopoDS_Shape & aSubShape, int anHypId) throw(SALOME_Exception); @@ -147,6 +153,8 @@ public: int GetId() const { return _id; } + bool MeshExists( int meshId ) const; + SMESHDS_Mesh * GetMeshDS() { return _myMeshDS; } const SMESHDS_Mesh * GetMeshDS() const { return _myMeshDS; } @@ -236,6 +244,9 @@ public: const SMESHDS_Mesh* meshPart = 0) throw(SALOME_Exception); void ExportCGNS(const char * file, const SMESHDS_Mesh* mesh); + void ExportGMF(const char * file, + const SMESHDS_Mesh* mesh, + bool withRequiredGroups = true ); void ExportSAUV(const char *file, const char* theMeshName = NULL, bool theAutoGroups = true) throw(SALOME_Exception); @@ -272,6 +283,8 @@ public: int NbPolyhedrons() const throw(SALOME_Exception); + int NbBalls() const throw(SALOME_Exception); + int NbSubMesh() const throw(SALOME_Exception); int NbGroup() const { return _mapGroup.size(); } @@ -281,7 +294,9 @@ public: int& theId, const TopoDS_Shape& theShape=TopoDS_Shape(), const SMESH_PredicatePtr& thePredicate=SMESH_PredicatePtr()); - + + SMESH_Group* AddGroup (SMESHDS_GroupBase* groupDS) throw(SALOME_Exception); + typedef boost::shared_ptr< SMDS_Iterator > GroupIteratorPtr; GroupIteratorPtr GetGroups() const; @@ -293,12 +308,14 @@ public: SMESH_Group* ConvertToStandalone ( int theGroupID ); - struct TRmGroupCallUp + struct TCallUp // callback from SMESH to SMESH_I level { virtual void RemoveGroup (const int theGroupID)=0; - virtual ~TRmGroupCallUp() {} + virtual void HypothesisModified ()=0; + virtual void Load ()=0; + virtual ~TCallUp() {} }; - void SetRemoveGroupCallUp( TRmGroupCallUp * upCaller ); + void SetCallUp( TCallUp * upCaller ); bool SynchronizeGroups(); @@ -309,15 +326,13 @@ public: void SetMeshOrder(const TListOfListOfInt& theOrder ); const TListOfListOfInt& GetMeshOrder() const; - /*! - * \brief sort submeshes according to stored mesh order - * \param theListToSort in out list to be sorted - * \return FALSE if nothing sorted - */ + // sort submeshes according to stored mesh order bool SortByMeshOrder(std::list& theListToSort) const; - // - + // return true if given order of sub-meshes is OK + bool IsOrderOK( const SMESH_subMesh* smBefore, + const SMESH_subMesh* smAfter ) const; + ostream& Dump(ostream & save); private: @@ -349,10 +364,11 @@ protected: TListOfListOfInt _mySubMeshOrder; - // Struct calling RemoveGroup at CORBA API implementation level, used - // to make an upper level be consistent with a lower one when group removal - // is invoked by hyp modification - TRmGroupCallUp* _rmGroupCallUp; + // Struct calling methods at CORBA API implementation level, used to + // 1) make an upper level be consistent with a lower one when group removal + // is invoked by hyp modification (issue 0020918) + // 2) to forget not loaded mesh data at hyp modification + TCallUp* _callUp; protected: SMESH_Mesh();