FIX: slice error: WipeTowerIntegration::append_tcr

when print by object with multi-color
Jira: XXXX

Change-Id: Ic9ee2f6de45abb4a118fdb4cf89dea9ca7335094
This commit is contained in:
zhimin.zeng 2023-12-12 22:36:48 +08:00 committed by Lane.Wei
parent 09dce5bc04
commit e8573d723a
2 changed files with 9 additions and 2 deletions

View File

@ -123,6 +123,7 @@ static double calc_max_layer_height(const PrintConfig &config, double max_object
// (print->config().print_sequence == PrintSequence::ByObject is true).
ToolOrdering::ToolOrdering(const PrintObject &object, unsigned int first_extruder, bool prime_multi_material)
{
m_print_object_ptr = &object;
if (object.layers().empty())
return;
@ -737,11 +738,16 @@ void ToolOrdering::collect_extruder_statistics(bool prime_multi_material)
void ToolOrdering::reorder_extruders_for_minimum_flush_volume()
{
if (!m_print_config_ptr || m_layer_tools.empty())
const PrintConfig *print_config = m_print_config_ptr;
if (!print_config && m_print_object_ptr) {
print_config = &(m_print_object_ptr->print()->config());
}
if (!print_config || m_layer_tools.empty())
return;
// Get wiping matrix to get number of extruders and convert vector<double> to vector<float>:
std::vector<float> flush_matrix(cast<float>(m_print_config_ptr->flush_volumes_matrix.values));
std::vector<float> flush_matrix(cast<float>(print_config->flush_volumes_matrix.values));
const unsigned int number_of_extruders = (unsigned int) (sqrt(flush_matrix.size()) + EPSILON);
// Extract purging volumes for each extruder pair:
std::vector<std::vector<float>> wipe_volumes;

View File

@ -209,6 +209,7 @@ private:
std::vector<unsigned int> m_all_printing_extruders;
const PrintConfig* m_print_config_ptr = nullptr;
const PrintObject* m_print_object_ptr = nullptr;
};
} // namespace SLic3r