mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-12 01:07:57 -06:00
WipeTower - fixed a crash in extrude_explicit when called from finish_layer before the first toolchange
This commit is contained in:
parent
82de7bedb1
commit
743a08f0cf
1 changed files with 10 additions and 5 deletions
|
@ -1230,7 +1230,15 @@ void WipeTower::generate(std::vector<std::vector<WipeTower::ToolChangeResult>> &
|
||||||
make_wipe_tower_square();
|
make_wipe_tower_square();
|
||||||
|
|
||||||
m_layer_info = m_plan.begin();
|
m_layer_info = m_plan.begin();
|
||||||
m_current_tool = (unsigned int)(-2); // we don't know which extruder to start with - we'll set it according to the first toolchange
|
|
||||||
|
// we don't know which extruder to start with - we'll set it according to the first toolchange
|
||||||
|
for (const auto& layer : m_plan) {
|
||||||
|
if (!layer.tool_changes.empty()) {
|
||||||
|
m_current_tool = layer.tool_changes.front().old_tool;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (auto& used : m_used_filament_length) // reset used filament stats
|
for (auto& used : m_used_filament_length) // reset used filament stats
|
||||||
used = 0.f;
|
used = 0.f;
|
||||||
|
|
||||||
|
@ -1246,11 +1254,8 @@ void WipeTower::generate(std::vector<std::vector<WipeTower::ToolChangeResult>> &
|
||||||
if (!m_peters_wipe_tower && m_layer_info->depth < m_wipe_tower_depth - m_perimeter_width)
|
if (!m_peters_wipe_tower && m_layer_info->depth < m_wipe_tower_depth - m_perimeter_width)
|
||||||
m_y_shift = (m_wipe_tower_depth-m_layer_info->depth-m_perimeter_width)/2.f;
|
m_y_shift = (m_wipe_tower_depth-m_layer_info->depth-m_perimeter_width)/2.f;
|
||||||
|
|
||||||
for (const auto &toolchange : layer.tool_changes) {
|
for (const auto &toolchange : layer.tool_changes)
|
||||||
if (m_current_tool == (unsigned int)(-2))
|
|
||||||
m_current_tool = toolchange.old_tool;
|
|
||||||
layer_result.emplace_back(tool_change(toolchange.new_tool, false));
|
layer_result.emplace_back(tool_change(toolchange.new_tool, false));
|
||||||
}
|
|
||||||
|
|
||||||
if (! layer_finished()) {
|
if (! layer_finished()) {
|
||||||
auto finish_layer_toolchange = finish_layer();
|
auto finish_layer_toolchange = finish_layer();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue