void slice(const tooldef td, const mesh &m, vector<levelset> &levelsets) { levelsets.clear(); bounds b = m.get_bounds(); int level_count = ceil((b.max_z - b.min_z) / td.z_accuracy); for (int i = 0; i < level_count; i++) { levelset l; l.z = b.min_z + i * td.z_accuracy; levelsets.push_back(l); } levelset l; l.z = b.max_z; levelsets.push_back(l); bucket_faces(m, b, td.z_accuracy, levelsets); for (auto iter = levelsets.begin(); iter != levelsets.end(); iter++) { find_line_segments(*iter); linesegs_to_vert_list(*iter); } }