X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_MeshEditor.hxx;h=ce52a9c051c342ac2a049cb0fa19b1c929982b36;hb=88b3dbe23b236bd1746405155ae33a76aaf59ecd;hp=4bd4558253c964e18cb991e05e8e98091fc5c443;hpb=bd4e115a78b52e3fbc016e5e30bb0e19b2a9e7d6;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_MeshEditor.hxx b/src/SMESH/SMESH_MeshEditor.hxx index 4bd455825..ce52a9c05 100644 --- a/src/SMESH/SMESH_MeshEditor.hxx +++ b/src/SMESH/SMESH_MeshEditor.hxx @@ -34,6 +34,7 @@ #include "SMESH_Controls.hxx" #include "SMESH_Mesh.hxx" #include "SMESH_TypeDefs.hxx" +#include "SMESH_ComputeError.hxx" #include @@ -110,6 +111,15 @@ public: SMESH_MeshEditor( SMESH_Mesh* theMesh ); + SMESH_Mesh * GetMesh() { return myMesh; } + SMESHDS_Mesh * GetMeshDS() { return myMesh->GetMeshDS(); } + + const SMESH_SequenceOfElemPtr& GetLastCreatedNodes() const { return myLastCreatedNodes; } + const SMESH_SequenceOfElemPtr& GetLastCreatedElems() const { return myLastCreatedElems; } + void CrearLastCreated(); + + SMESH_ComputeErrorPtr & GetError() { return myError; } + /*! * \brief Add element */ @@ -130,6 +140,12 @@ public: // Remove a node or an element. // Modify a compute state of sub-meshes which become empty + void Create0DElementsOnAllNodes( const TIDSortedElemSet& elements, + TIDSortedElemSet& all0DElems); + // Create 0D elements on all nodes of the given object except those + // nodes on which a 0D element already exists. \a all0DElems returns + // all 0D elements found or created on nodes of \a elements + bool InverseDiag (const SMDS_MeshElement * theTria1, const SMDS_MeshElement * theTria2 ); // Replace two neighbour triangles with ones built on the same 4 nodes @@ -341,15 +357,6 @@ public: SMESH_Mesh* theTargetMesh=0); // Move or copy theElements applying theTrsf to their nodes - - typedef std::list< std::list< const SMDS_MeshNode* > > TListOfListOfNodes; - - void FindCoincidentNodes (TIDSortedNodeSet & theNodes, - const double theTolerance, - TListOfListOfNodes & theGroupsOfNodes); - // Return list of group of nodes close to each other within theTolerance. - // Search among theNodes or in the whole mesh if theNodes is empty. - /*! * \brief Return SMESH_NodeSearcher. The caller is responsible for deleteing it */ @@ -360,18 +367,14 @@ public: */ SMESH_ElementSearcher* GetElementSearcher(); SMESH_ElementSearcher* GetElementSearcher( SMDS_ElemIteratorPtr elemIt ); - /*! - * \brief Return true if the point is IN or ON of the element - */ - static bool IsOut( const SMDS_MeshElement* element, const gp_Pnt& point, double tol ); - static double GetDistance( const SMDS_MeshFace* face, const gp_Pnt& point ); + typedef std::list< std::list< const SMDS_MeshNode* > > TListOfListOfNodes; - int SimplifyFace (const std::vector faceNodes, - std::vector& poly_nodes, - std::vector& quantities) const; - // Split face, defined by , into several faces by repeating nodes. - // Is used by MergeNodes() + void FindCoincidentNodes (TIDSortedNodeSet & theNodes, + const double theTolerance, + TListOfListOfNodes & theGroupsOfNodes); + // Return list of group of nodes close to each other within theTolerance. + // Search among theNodes or in the whole mesh if theNodes is empty. void MergeNodes (TListOfListOfNodes & theNodeGroups); // In each group, the cdr of nodes are substituted by the first one @@ -379,8 +382,8 @@ public: typedef std::list< std::list< int > > TListOfListOfElementsID; - void FindEqualElements(std::set & theElements, - TListOfListOfElementsID & theGroupsOfElementsID); + void FindEqualElements(TIDSortedElemSet & theElements, + TListOfListOfElementsID & theGroupsOfElementsID); // Return list of group of elements build on the same nodes. // Search among theElements or in the whole mesh if theElements is empty. @@ -391,6 +394,19 @@ public: // Remove all but one of elements built on the same nodes. // Return nb of successfully merged groups. + /*! + * \brief Return true if the point is IN or ON of the element + */ + static bool IsOut( const SMDS_MeshElement* element, const gp_Pnt& point, double tol ); + + static double GetDistance( const SMDS_MeshFace* face, const gp_Pnt& point ); + + int SimplifyFace (const std::vector faceNodes, + std::vector& poly_nodes, + std::vector& quantities) const; + // Split face, defined by , into several faces by repeating nodes. + // Is used by MergeNodes() + static bool CheckFreeBorderNodes(const SMDS_MeshNode* theNode1, const SMDS_MeshNode* theNode2, const SMDS_MeshNode* theNode3 = 0); @@ -561,14 +577,6 @@ public: // Return an index of the shape theElem is on // or zero if a shape not found - SMESH_Mesh * GetMesh() { return myMesh; } - - SMESHDS_Mesh * GetMeshDS() { return myMesh->GetMeshDS(); } - - const SMESH_SequenceOfElemPtr& GetLastCreatedNodes() const { return myLastCreatedNodes; } - - const SMESH_SequenceOfElemPtr& GetLastCreatedElems() const { return myLastCreatedElems; } - bool DoubleNodes( const std::list< int >& theListOfNodes, const std::list< int >& theListOfModifiedElems ); @@ -576,6 +584,11 @@ public: const TIDSortedElemSet& theNodesNot, const TIDSortedElemSet& theAffectedElems ); + bool AffectedElemGroupsInRegion( const TIDSortedElemSet& theElems, + const TIDSortedElemSet& theNodesNot, + const TopoDS_Shape& theShape, + TIDSortedElemSet& theAffectedElems); + bool DoubleNodesInRegion( const TIDSortedElemSet& theElems, const TIDSortedElemSet& theNodesNot, const TopoDS_Shape& theShape ); @@ -587,6 +600,13 @@ public: bool CreateFlatElementsOnFacesGroups( const std::vector& theElems ); + void CreateHoleSkin(double radius, + const TopoDS_Shape& theShape, + SMESH_NodeSearcher* theNodeSearcher, + const char* groupName, + std::vector& nodesCoords, + std::vector >& listOfListOfNodes); + /*! * \brief Generated skin mesh (containing 2D cells) from 3D mesh * The created 2D mesh elements based on nodes of free faces of boundary volumes @@ -709,18 +729,13 @@ public: private: - SMESH_Mesh * myMesh; + SMESH_Mesh * myMesh; - /*! - * Sequence for keeping nodes created during last operation - */ - SMESH_SequenceOfElemPtr myLastCreatedNodes; - - /*! - * Sequence for keeping elements created during last operation - */ - SMESH_SequenceOfElemPtr myLastCreatedElems; + // Nodes and elements created during last operation + SMESH_SequenceOfElemPtr myLastCreatedNodes, myLastCreatedElems; + // Description of error/warning occured during last operation + SMESH_ComputeErrorPtr myError; }; #endif