mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-20 20:03:47 +00:00
FIX: filament group crash in cli mode
1.Always do filament group to get correct filament map jira:NONE Signed-off-by: xun.zhang <xun.zhang@bambulab.com> Change-Id: Ie4e61c310f6c0cfeacb2a49c4f065f9674b6a35f (cherry picked from commit 242554557b1ecd72355841826af707580fc583b6)
This commit is contained in:
@@ -1102,7 +1102,6 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume(bool reorder_first
|
|||||||
std::vector<std::set<int>>geometric_unprintables = get_geometrical_unprintables(m_print->get_unprintable_filament_ids(), print_config);
|
std::vector<std::set<int>>geometric_unprintables = get_geometrical_unprintables(m_print->get_unprintable_filament_ids(), print_config);
|
||||||
std::vector<std::set<int>>physical_unprintables = get_physical_unprintables(used_filaments, print_config);
|
std::vector<std::set<int>>physical_unprintables = get_physical_unprintables(used_filaments, print_config);
|
||||||
|
|
||||||
if (nozzle_nums > 1) {
|
|
||||||
filament_maps = m_print->get_filament_maps();
|
filament_maps = m_print->get_filament_maps();
|
||||||
map_mode = m_print->get_filament_map_mode();
|
map_mode = m_print->get_filament_map_mode();
|
||||||
// only check and map in sequence mode, in by object mode, we check the map in print.cpp
|
// only check and map in sequence mode, in by object mode, we check the map in print.cpp
|
||||||
@@ -1135,25 +1134,6 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume(bool reorder_first
|
|||||||
// we just need to change the map to 0 based
|
// we just need to change the map to 0 based
|
||||||
std::transform(filament_maps.begin(), filament_maps.end(), filament_maps.begin(), [](int value) {return value - 1; });
|
std::transform(filament_maps.begin(), filament_maps.end(), filament_maps.begin(), [](int value) {return value - 1; });
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (nozzle_nums == 1) {
|
|
||||||
filament_maps = m_print->get_filament_maps();
|
|
||||||
filament_maps.resize(number_of_extruders, 1);
|
|
||||||
bool invalid = std::any_of(filament_maps.begin(), filament_maps.end(), [](int value) { return value != 1; });
|
|
||||||
if (invalid) {
|
|
||||||
assert(false);
|
|
||||||
std::stringstream sstream;
|
|
||||||
for (size_t i = 0; i < filament_maps.size(); ++i) {
|
|
||||||
if (i != 0)
|
|
||||||
sstream << " ";
|
|
||||||
sstream << filament_maps[i];
|
|
||||||
}
|
|
||||||
BOOST_LOG_TRIVIAL(error) << "The filament_map of single printer is invalid. filament_map = " << sstream.str();
|
|
||||||
std::fill(filament_maps.begin(), filament_maps.end(), 1);
|
|
||||||
m_print->update_filament_maps_to_config(filament_maps);
|
|
||||||
}
|
|
||||||
std::transform(filament_maps.begin(), filament_maps.end(), filament_maps.begin(), [](int value) { return value - 1; });
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<std::vector<unsigned int>>filament_sequences;
|
std::vector<std::vector<unsigned int>>filament_sequences;
|
||||||
std::vector<unsigned int>filament_lists(number_of_extruders);
|
std::vector<unsigned int>filament_lists(number_of_extruders);
|
||||||
|
|||||||
@@ -2115,7 +2115,6 @@ void Print::process(long long *time_cost_with_cache, bool use_cache)
|
|||||||
if (this->config().print_sequence == PrintSequence::ByObject) {
|
if (this->config().print_sequence == PrintSequence::ByObject) {
|
||||||
// Order object instances for sequential print.
|
// Order object instances for sequential print.
|
||||||
print_object_instances_ordering = sort_object_instances_by_model_order(*this);
|
print_object_instances_ordering = sort_object_instances_by_model_order(*this);
|
||||||
if (m_config.nozzle_diameter.size() > 1) {
|
|
||||||
std::vector<std::vector<unsigned int>> all_filaments;
|
std::vector<std::vector<unsigned int>> all_filaments;
|
||||||
for (print_object_instance_sequential_active = print_object_instances_ordering.begin(); print_object_instance_sequential_active != print_object_instances_ordering.end(); ++print_object_instance_sequential_active) {
|
for (print_object_instance_sequential_active = print_object_instances_ordering.begin(); print_object_instance_sequential_active != print_object_instances_ordering.end(); ++print_object_instance_sequential_active) {
|
||||||
tool_ordering = ToolOrdering(*(*print_object_instance_sequential_active)->print_object, initial_extruder_id);
|
tool_ordering = ToolOrdering(*(*print_object_instance_sequential_active)->print_object, initial_extruder_id);
|
||||||
@@ -2146,7 +2145,6 @@ void Print::process(long long *time_cost_with_cache, bool use_cache)
|
|||||||
throw Slic3r::RuntimeError(std::string("Auto grouping error: TPU can only be placed in a nozzle alone."));
|
throw Slic3r::RuntimeError(std::string("Auto grouping error: TPU can only be placed in a nozzle alone."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// print_object_instances_ordering = sort_object_instances_by_max_z(print);
|
// print_object_instances_ordering = sort_object_instances_by_max_z(print);
|
||||||
print_object_instance_sequential_active = print_object_instances_ordering.begin();
|
print_object_instance_sequential_active = print_object_instances_ordering.begin();
|
||||||
|
|||||||
Reference in New Issue
Block a user