X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_Mesh.hxx;h=2b926f5dd8804c68f42a1ebe4d8dbd1bcefdd8bb;hb=22f2cb0c9596d27f8079dceca3cf6f5422de95f6;hp=a77498ed5786a60a65b02ae8bc42a637751d5a48;hpb=2c607013a23bd4e7ba07e72e0c04dee2c1209cff;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_Mesh.hxx b/src/SMESH/SMESH_Mesh.hxx index a77498ed5..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,11 +29,12 @@ #include "SMESH_SMESH.hxx" -#include "SMESH_Hypothesis.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" @@ -44,6 +44,7 @@ #include #include + #ifdef WNT #pragma warning(disable:4251) // Warning DLL Interface ... #pragma warning(disable:4290) // Warning Exception ... @@ -97,24 +98,33 @@ 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 */ void ClearSubMesh(const int theShapeId); - int UNVToMesh(const char* theFileName); /*! * consult DriverMED_R_SMESHDS_Mesh::ReadStatus for returned value */ + int UNVToMesh(const char* theFileName); + int MEDToMesh(const char* theFileName, const char* theMeshName); int STLToMesh(const char* theFileName); + 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); @@ -143,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; } @@ -219,12 +231,25 @@ public: void ExportMED(const char *file, const char* theMeshName = NULL, bool theAutoGroups = true, - int theVersion = 0) + int theVersion = 0, + const SMESHDS_Mesh* meshPart = 0) throw(SALOME_Exception); - void ExportDAT(const char *file) throw(SALOME_Exception); - void ExportUNV(const char *file) throw(SALOME_Exception); - void ExportSTL(const char *file, const bool isascii) throw(SALOME_Exception); + void ExportDAT(const char * file, + const SMESHDS_Mesh* meshPart = 0) throw(SALOME_Exception); + void ExportUNV(const char * file, + const SMESHDS_Mesh* meshPart = 0) throw(SALOME_Exception); + void ExportSTL(const char * file, + const bool isascii, + 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); int NbNodes() const throw(SALOME_Exception); @@ -238,6 +263,8 @@ public: int NbQuadrangles(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception); + int NbBiQuadQuadrangles() const throw(SALOME_Exception); + int NbPolygons() const throw(SALOME_Exception); int NbVolumes(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception); @@ -246,21 +273,30 @@ public: int NbHexas(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception); + int NbTriQuadraticHexas() const throw(SALOME_Exception); + int NbPyramids(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception); int NbPrisms(SMDSAbs_ElementOrder order = ORDER_ANY) const throw(SALOME_Exception); + int NbHexagonalPrisms() const throw(SALOME_Exception); + int NbPolyhedrons() const throw(SALOME_Exception); + int NbBalls() const throw(SALOME_Exception); + int NbSubMesh() const throw(SALOME_Exception); int NbGroup() const { return _mapGroup.size(); } - + SMESH_Group* AddGroup (const SMDSAbs_ElementType theType, const char* theName, int& theId, - const TopoDS_Shape& theShape=TopoDS_Shape()); - + 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; @@ -272,12 +308,16 @@ 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(); SMDSAbs_ElementType GetElementType( const int id, const bool iselem ); @@ -286,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: @@ -326,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();