16 const std::vector<std::size_t>& removed_element_ids,
17 const std::string& new_mesh_name)
19 if (removed_element_ids.empty())
21 INFO(
"No elements to remove");
25 INFO(
"Removing total {:d} elements...", removed_element_ids.size());
26 std::vector<MeshLib::Element*> tmp_elems =
28 INFO(
"{:d} elements remain in mesh.", tmp_elems.size());
31 std::vector<MeshLib::Node*> new_nodes =
33 std::vector<MeshLib::Element*> new_elems =
40 INFO(
"Removing total {:d} nodes...", removed_node_ids.size());
41 for (
auto nodeid : removed_node_ids)
43 delete new_nodes[nodeid];
44 new_nodes[nodeid] =
nullptr;
46 new_nodes.erase(std::remove(new_nodes.begin(), new_nodes.end(),
nullptr),
49 if (!new_elems.empty())
55 removed_element_ids, removed_node_ids));
59 INFO(
"Current selection removes all elements.");
64 std::vector<MeshLib::Element*>
const& elements,
65 std::vector<MeshLib::Node*>
const& nodes)
67 std::vector<bool> unused_nodes(nodes.size(),
true);
68 for (
auto e : elements)
70 for (
unsigned i = 0; i < e->getNumberOfNodes(); i++)
72 unused_nodes[getNodeIndex(*e, i)] =
false;
80 std::vector<MeshLib::Node*>& nodes)
82 assert(nodes_to_delete.size() == nodes.size());
84 for (std::size_t i = 0; i < nodes.size(); i++)
86 if (nodes_to_delete[i])
92 nodes.erase(remove(begin(nodes), end(nodes),
nullptr), end(nodes));
96 const std::vector<std::size_t>& del_nodes_idx,
97 const std::string& new_mesh_name)
99 if (del_nodes_idx.empty())
105 std::vector<MeshLib::Node*> new_nodes =
107 std::vector<MeshLib::Element*> new_elems =
114 for (
auto eid : removed_element_ids)
116 delete new_elems[eid];
117 new_elems[eid] =
nullptr;
119 new_elems.erase(std::remove(new_elems.begin(), new_elems.end(),
nullptr),
123 std::vector<bool>
const node_delete_flag =
129 if (!new_elems.empty())
135 removed_element_ids, del_nodes_idx));
void INFO(fmt::format_string< Args... > fmt, Args &&... args)
const std::vector< std::size_t > & getSearchedElementIDs() const
return marked elements
std::size_t searchByNodeIDs(const std::vector< std::size_t > &nodes)
Marks all elements connecting to any of the given nodes.
std::vector< Node * > const & getNodes() const
Get the nodes-vector for the mesh.
std::vector< Element * > const & getElements() const
Get the element-vector for the mesh.
Properties & getProperties()
std::size_t searchNodesConnectedToOnlyGivenElements(const std::vector< std::size_t > &elements)
const std::vector< std::size_t > & getSearchedNodeIDs() const
return marked node IDs
Properties excludeCopyProperties(std::vector< std::size_t > const &exclude_elem_ids, std::vector< std::size_t > const &exclude_node_ids) const
std::vector< T > excludeObjectCopy(std::vector< T > const &src_vec, std::vector< std::size_t > const &exclude_positions)
std::vector< Node * > copyNodeVector(const std::vector< Node * > &nodes)
Creates a deep copy of a Node vector.
std::vector< Element * > copyElementVector(std::vector< Element * > const &elements, std::vector< Node * > const &new_nodes, std::vector< std::size_t > const *const node_id_map)