mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-16 01:52:11 +00:00
ENH: add tool order function
1.Use min cost max flow to solve the tool order jira:NEW Signed-off-by: xun.zhang <xun.zhang@bambulab.com> Change-Id: I909845039b67c7fe3ddd42580ad3f1d71d52262d (cherry picked from commit 0716b8518ef62e0eac7c45de8bafb1458d8f9a8e)
This commit is contained in:
@@ -852,29 +852,22 @@ std::vector<int> ToolOrdering::get_recommended_filament_maps(const std::vector<s
|
||||
|
||||
std::vector<int>ret(filament_nums,0);
|
||||
// if mutli_extruder, calc group,otherwise set to 0
|
||||
if (extruder_nums == 2)
|
||||
{
|
||||
if (extruder_nums == 2) {
|
||||
std::vector<std::string> extruder_ams_count_str = print_config->extruder_ams_count.values;
|
||||
auto extruder_ams_counts = get_extruder_ams_count(extruder_ams_count_str);
|
||||
std::vector<int> group_size = { 16, 16 };
|
||||
auto extruder_ams_counts = get_extruder_ams_count(extruder_ams_count_str);
|
||||
std::vector<int> group_size = {16, 16};
|
||||
if (extruder_ams_counts.size() > 0) {
|
||||
assert(extruder_ams_counts.size() == 2);
|
||||
for (int i = 0; i < extruder_ams_counts.size(); ++i) {
|
||||
group_size[i] = 0;
|
||||
const auto& ams_count = extruder_ams_counts[i];
|
||||
for (auto iter = ams_count.begin(); iter != ams_count.end(); ++iter) {
|
||||
group_size[i] += iter->first * iter->second;
|
||||
}
|
||||
group_size[i] = 0;
|
||||
const auto &ams_count = extruder_ams_counts[i];
|
||||
for (auto iter = ams_count.begin(); iter != ams_count.end(); ++iter) { group_size[i] += iter->first * iter->second; }
|
||||
}
|
||||
}
|
||||
|
||||
FilamentGroup fg(
|
||||
nozzle_flush_mtx,
|
||||
(int)filament_nums,
|
||||
group_size
|
||||
);
|
||||
FilamentGroup fg(nozzle_flush_mtx, (int) filament_nums, group_size);
|
||||
fg.get_custom_seq = get_custom_seq;
|
||||
ret = fg.calc_filament_group(layer_filaments, FGStrategy::BestFit);
|
||||
ret = fg.calc_filament_group(layer_filaments, FGStrategy::BestFit);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user