diff --git a/MeshLib/MeshEditing/RemoveMeshComponents.cpp b/MeshLib/MeshEditing/RemoveMeshComponents.cpp index 06a657345bdd9051eb77b115024f4be61d2ebef7..5bdbf97824860533434dd762ebff85303c545856 100644 --- a/MeshLib/MeshEditing/RemoveMeshComponents.cpp +++ b/MeshLib/MeshEditing/RemoveMeshComponents.cpp @@ -63,7 +63,7 @@ MeshLib::Mesh* removeElements(const MeshLib::Mesh& mesh, const std::vector<std:: // delete unused nodes NodeSearch ns(mesh); - ns.searchByElementIDs(removed_element_ids); + ns.markNodesConnectedToElements(removed_element_ids); auto &removed_node_ids(ns.getSearchedNodeIDs()); INFO("Removing total %d nodes...", removed_node_ids.size()); for (auto nodeid : removed_node_ids) diff --git a/MeshLib/MeshSearch/NodeSearch.cpp b/MeshLib/MeshSearch/NodeSearch.cpp index a51b460e52c3013a7142f4a75a79e20ae67ad00a..194cc77ebf3a1c4573149bed75bf4c73e35dc044 100644 --- a/MeshLib/MeshSearch/NodeSearch.cpp +++ b/MeshLib/MeshSearch/NodeSearch.cpp @@ -24,7 +24,8 @@ NodeSearch::NodeSearch(const MeshLib::Mesh &mesh) { } -std::vector<std::size_t> NodeSearch::searchByElementIDsMatchAllConnectedElements(const std::vector<std::size_t> &elements) +std::size_t NodeSearch::markNodesConnectedToElements( + const std::vector<std::size_t> &elements) { // Find out by how many elements a node would be removed. // @@ -49,7 +50,9 @@ std::vector<std::size_t> NodeSearch::searchByElementIDsMatchAllConnectedElements if (node_marked_counts[i] == _mesh.getNode(i)->getElements().size()) connected_nodes.push_back(i); } - return connected_nodes; + + this->updateUnion(connected_nodes); + return connected_nodes.size(); } std::size_t NodeSearch::searchUnused() diff --git a/MeshLib/MeshSearch/NodeSearch.h b/MeshLib/MeshSearch/NodeSearch.h index 72278be3bafd8729f1bc9e8ac416713eb7ecb0b1..97d9b562198aba21e49cb45f4719aded55252091 100644 --- a/MeshLib/MeshSearch/NodeSearch.h +++ b/MeshLib/MeshSearch/NodeSearch.h @@ -30,14 +30,8 @@ public: const std::vector<std::size_t>& getSearchedNodeIDs() const {return _marked_nodes; } /// Marks all nodes connected to any of the given elements ids. - std::size_t searchByElementIDs(const std::vector<std::size_t> &element_ids) - { - std::vector<std::size_t> connected_nodes = - searchByElementIDsMatchAllConnectedElements(element_ids); - - this->updateUnion(connected_nodes); - return connected_nodes.size(); - } + /// \return number of connected nodes. + std::size_t markNodesConnectedToElements(const std::vector<std::size_t> &element_ids); /// Marks all unused nodes std::size_t searchUnused();