diff --git a/src/3rdParty/salomesmesh/inc/SMESHDS_Mesh.hxx b/src/3rdParty/salomesmesh/inc/SMESHDS_Mesh.hxx index d3df2e688..534c26cfa 100644 --- a/src/3rdParty/salomesmesh/inc/SMESHDS_Mesh.hxx +++ b/src/3rdParty/salomesmesh/inc/SMESHDS_Mesh.hxx @@ -372,7 +372,7 @@ public: void MoveNode(const SMDS_MeshNode *, double x, double y, double z); virtual void RemoveNode(const SMDS_MeshNode *); - void RemoveElement(const SMDS_MeshElement *); + virtual void RemoveElement(const SMDS_MeshElement *, bool removenodes = false); /*! Remove only the given element/node and only if it is free. * Methods do not work for meshes with descendants. @@ -380,6 +380,7 @@ public: */ void RemoveFreeNode (const SMDS_MeshNode *, SMESHDS_SubMesh *, bool fromGroups=true); void RemoveFreeElement(const SMDS_MeshElement *, SMESHDS_SubMesh *, bool fromGroups=true); + virtual void RemoveFreeElement(const SMDS_MeshElement *); ///< reimplement virtual from the base class void ClearMesh(); diff --git a/src/3rdParty/salomesmesh/inc/SMESH_subMeshEventListener.hxx b/src/3rdParty/salomesmesh/inc/SMESH_subMeshEventListener.hxx index 51a79a9c2..4673452fc 100644 --- a/src/3rdParty/salomesmesh/inc/SMESH_subMeshEventListener.hxx +++ b/src/3rdParty/salomesmesh/inc/SMESH_subMeshEventListener.hxx @@ -45,6 +45,7 @@ class SMESH_EXPORT SMESH_subMeshEventListener { bool myIsDeletable; //!< if true, it will be deleted by SMESH_subMesh public: SMESH_subMeshEventListener(bool isDeletable):myIsDeletable(isDeletable) {} + virtual ~SMESH_subMeshEventListener() {}; bool IsDeletable() const { return myIsDeletable; } /*! * \brief Do something on a certain event diff --git a/src/3rdParty/salomesmesh/src/SMESHDS/SMESHDS_Mesh.cpp b/src/3rdParty/salomesmesh/src/SMESHDS/SMESHDS_Mesh.cpp index 18b0388af..1233f9355 100644 --- a/src/3rdParty/salomesmesh/src/SMESHDS/SMESHDS_Mesh.cpp +++ b/src/3rdParty/salomesmesh/src/SMESHDS/SMESHDS_Mesh.cpp @@ -755,7 +755,7 @@ void SMESHDS_Mesh::RemoveFreeNode(const SMDS_MeshNode * n, //function : RemoveElement //purpose : //======================================================================== -void SMESHDS_Mesh::RemoveElement(const SMDS_MeshElement * elt) +void SMESHDS_Mesh::RemoveElement(const SMDS_MeshElement * elt, bool removenodes) { if (elt->GetType() == SMDSAbs_Node) { @@ -779,9 +779,18 @@ void SMESHDS_Mesh::RemoveElement(const SMDS_MeshElement * elt) list removedElems; list removedNodes; - SMDS_Mesh::RemoveElement(elt, removedElems, removedNodes, false); + SMDS_Mesh::RemoveElement(elt, removedElems, removedNodes, removenodes); - removeFromContainers( myShapeIndexToSubMesh, myGroups, removedElems, false ); + removeFromContainers( myShapeIndexToSubMesh, myGroups, removedElems, removenodes ); +} + +//======================================================================= +//function : RemoveFreeElement +//purpose : +//======================================================================= +void SMESHDS_Mesh::RemoveFreeElement(const SMDS_MeshElement * elt) +{ + RemoveFreeElement (elt, 0); } //======================================================================= @@ -1036,7 +1045,7 @@ void SMESHDS_Mesh::UnSetMeshElementOnShape(const SMDS_MeshElement * elem, //======================================================================= TopoDS_Shape SMESHDS_Mesh::ShapeToMesh() const { - return myShape; + return myShape; } //======================================================================= @@ -1552,7 +1561,7 @@ SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(int n1, int n2, int n3, int n4, i n15,n25,n35,n45); return anElem; } - + //======================================================================= //function : AddVolumeWithID //purpose : 2d order pyramid of 13 nodes