ENH: get most used extruder id

Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I9c498cefb07b3bdf89a17bfd75a3075c2294c934
(cherry picked from commit e0508a9e5136cec6ba69cc8a4d186079802f841a)
This commit is contained in:
qing.zhang
2024-11-29 16:06:00 +08:00
committed by Noisyfox
parent 6afd3a961b
commit d55aced0b4
3 changed files with 42 additions and 0 deletions

View File

@@ -898,6 +898,27 @@ void ToolOrdering::collect_extruder_statistics(bool prime_multi_material)
}
}
std::vector<int> ToolOrdering::cal_most_used_extruder(const PrintConfig &config)
{
// record
std::vector<int> extruder_count;
extruder_count.resize(config.nozzle_diameter.size(), 0);
for (LayerTools &layer_tools : m_layer_tools) {
std::vector<unsigned int> filaments = layer_tools.extruders;
std::set<int> layer_extruder_count;
//count once only
for (unsigned int &filament : filaments) {
layer_extruder_count.insert(config.filament_map.values[filament] - 1);
}
//record
for (int extruder_id : layer_extruder_count) {
extruder_count[extruder_id]++;
}
}
return extruder_count;
}
std::set<std::pair<std::vector<unsigned int>, std::vector<unsigned int>>> generate_combinations(const std::vector<unsigned int> &extruders)
{
int n = extruders.size();