X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_Mesh.hxx;h=8e01301b6e82f23e73ca48ab0fb88237c5fbfb3a;hb=refs%2Ftags%2FdistribGeom_11Feb13;hp=570dbb345ac3039711188c66043dd1a9b329d8cb;hpb=111c7a0cd2567887aae9977b0174fc617b679daf;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_Mesh.hxx b/src/SMESH/SMESH_Mesh.hxx index 570dbb345..8e01301b6 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,12 @@ 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); int NbNodes() const throw(SALOME_Exception); @@ -249,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); @@ -257,12 +273,18 @@ 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(); } @@ -272,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; @@ -284,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(); @@ -300,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: @@ -320,7 +344,6 @@ private: protected: int _id; // id given by creator (unique within the creator instance) int _studyId; - int _idDoc; // id given by SMESHDS_Document int _groupId; // id generator for group objects int _nbSubShapes; // initial nb of subshapes in the shape to mesh bool _isShapeToMesh;// set to true when a shape is given (only once) @@ -340,10 +363,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();