auto extractor = std::make_unique<ob::MeshExtractor<bsp_small_config<geometry_t, int>>>(); extractor->extract(bsp); extractor->to_polymesh(mesh, mesh_pos); std::vector<pm::vertex_handle> to_delete; for (auto s = 0; s < extractor->get_submesh_count(); ++s) { if (extractor->submesh_label[s] == bsp_t::node_t::label_in) continue; auto h0 = mesh.halfedges()[extractor->submesh_any_halfedge[s]]; for (auto v : pm::vertex_component(h0.vertex_to())) to_delete.push_back(v); } for (auto v : to_delete) mesh.vertices().remove(v); for (auto e : mesh.edges()) TG_ASSERT(!e.is_boundary()); pm::deduplicate(mesh, mesh_pos); mesh.compactify(); for (auto e : mesh.edges()) // failed TG_ASSERT(!e.is_boundary());