mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-20 20:03:47 +00:00
Fix: Timelapse Z-hop logic used when timelapse was disabled (#11444)
No timelapse gcode if no timelapse
This commit is contained in:
@@ -4251,7 +4251,7 @@ LayerResult GCode::process_layer(
|
|||||||
bool is_multi_extruder = m_config.nozzle_diameter.size() > 1;
|
bool is_multi_extruder = m_config.nozzle_diameter.size() > 1;
|
||||||
|
|
||||||
bool need_insert_timelapse_gcode_for_traditional = false;
|
bool need_insert_timelapse_gcode_for_traditional = false;
|
||||||
if (!m_wipe_tower || !m_wipe_tower->enable_timelapse_print()) {
|
if ((!m_wipe_tower || !m_wipe_tower->enable_timelapse_print()) && (is_BBL_Printer() || !m_config.time_lapse_gcode.value.empty())) {
|
||||||
need_insert_timelapse_gcode_for_traditional = ((is_i3_printer && !m_spiral_vase) || is_multi_extruder);
|
need_insert_timelapse_gcode_for_traditional = ((is_i3_printer && !m_spiral_vase) || is_multi_extruder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4268,18 +4268,17 @@ LayerResult GCode::process_layer(
|
|||||||
gcode += this->change_layer(print_z); // this will increase m_layer_index
|
gcode += this->change_layer(print_z); // this will increase m_layer_index
|
||||||
m_layer = &layer;
|
m_layer = &layer;
|
||||||
m_object_layer_over_raft = false;
|
m_object_layer_over_raft = false;
|
||||||
if(is_BBL_Printer()){
|
|
||||||
} else {
|
if (!m_config.time_lapse_gcode.value.empty() && !is_BBL_Printer()) {
|
||||||
if (!m_config.time_lapse_gcode.value.empty()) {
|
|
||||||
DynamicConfig config;
|
DynamicConfig config;
|
||||||
config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index));
|
config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index));
|
||||||
config.set_key_value("layer_z", new ConfigOptionFloat(print_z));
|
config.set_key_value("layer_z", new ConfigOptionFloat(print_z));
|
||||||
config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z));
|
config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z));
|
||||||
gcode += this->placeholder_parser_process("timelapse_gcode", print.config().time_lapse_gcode.value, m_writer.filament()->id(),
|
gcode += this->placeholder_parser_process("timelapse_gcode",
|
||||||
&config) +
|
print.config().time_lapse_gcode.value, m_writer.filament()->id(), &config)
|
||||||
"\n";
|
+ "\n";
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_config.layer_change_gcode.value.empty()) {
|
if (!m_config.layer_change_gcode.value.empty()) {
|
||||||
DynamicConfig config;
|
DynamicConfig config;
|
||||||
config.set_key_value("most_used_physical_extruder_id", new ConfigOptionInt(m_config.physical_extruder_map.get_at(most_used_extruder)));
|
config.set_key_value("most_used_physical_extruder_id", new ConfigOptionInt(m_config.physical_extruder_map.get_at(most_used_extruder)));
|
||||||
@@ -4729,7 +4728,7 @@ LayerResult GCode::process_layer(
|
|||||||
|
|
||||||
auto timelapse_pos=m_timelapse_pos_picker.pick_pos(ctx);
|
auto timelapse_pos=m_timelapse_pos_picker.pick_pos(ctx);
|
||||||
|
|
||||||
std::string timepals_gcode;
|
std::string timelapse_gcode;
|
||||||
if (!print.config().time_lapse_gcode.value.empty()) {
|
if (!print.config().time_lapse_gcode.value.empty()) {
|
||||||
DynamicConfig config;
|
DynamicConfig config;
|
||||||
config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index));
|
config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index));
|
||||||
@@ -4740,13 +4739,14 @@ LayerResult GCode::process_layer(
|
|||||||
config.set_key_value("timelapse_pos_x", new ConfigOptionInt((int)timelapse_pos.x()));
|
config.set_key_value("timelapse_pos_x", new ConfigOptionInt((int)timelapse_pos.x()));
|
||||||
config.set_key_value("timelapse_pos_y", new ConfigOptionInt((int)timelapse_pos.y()));
|
config.set_key_value("timelapse_pos_y", new ConfigOptionInt((int)timelapse_pos.y()));
|
||||||
config.set_key_value("has_timelapse_safe_pos", new ConfigOptionBool(timelapse_pos != DefaultTimelapsePos));
|
config.set_key_value("has_timelapse_safe_pos", new ConfigOptionBool(timelapse_pos != DefaultTimelapsePos));
|
||||||
timepals_gcode = this->placeholder_parser_process("timelapse_gcode", print.config().time_lapse_gcode.value, m_writer.filament()->id(), &config) + "\n";
|
timelapse_gcode = this->placeholder_parser_process("timelapse_gcode", print.config().time_lapse_gcode.value, m_writer.filament()->id(), &config) + "\n";
|
||||||
}
|
}
|
||||||
if (!timepals_gcode.empty()) {
|
|
||||||
|
if (!timelapse_gcode.empty()) {
|
||||||
m_writer.set_current_position_clear(false);
|
m_writer.set_current_position_clear(false);
|
||||||
|
|
||||||
double temp_z_after_tool_change;
|
double temp_z_after_tool_change;
|
||||||
if (GCodeProcessor::get_last_z_from_gcode(timepals_gcode, temp_z_after_tool_change)) {
|
if (GCodeProcessor::get_last_z_from_gcode(timelapse_gcode, temp_z_after_tool_change)) {
|
||||||
Vec3d pos = m_writer.get_position();
|
Vec3d pos = m_writer.get_position();
|
||||||
pos(2) = temp_z_after_tool_change;
|
pos(2) = temp_z_after_tool_change;
|
||||||
m_writer.set_position(pos);
|
m_writer.set_position(pos);
|
||||||
@@ -4771,13 +4771,13 @@ LayerResult GCode::process_layer(
|
|||||||
std::string end_str = std::string("; object ids of this layer") + std::to_string(m_layer_index + 1) + (" end: ") + oss.str() + "\n";
|
std::string end_str = std::string("; object ids of this layer") + std::to_string(m_layer_index + 1) + (" end: ") + oss.str() + "\n";
|
||||||
end_str += "M625\n";
|
end_str += "M625\n";
|
||||||
|
|
||||||
timepals_gcode = start_str + timepals_gcode + end_str;
|
timelapse_gcode = start_str + timelapse_gcode + end_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
return timepals_gcode;
|
return timelapse_gcode;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!need_insert_timelapse_gcode_for_traditional) { // Equivalent to the timelapse gcode placed in layer_change_gcode
|
if (!need_insert_timelapse_gcode_for_traditional && is_BBL_Printer()) { // Equivalent to the timelapse gcode placed in layer_change_gcode
|
||||||
if (FILAMENT_CONFIG(retract_when_changing_layer)) {
|
if (FILAMENT_CONFIG(retract_when_changing_layer)) {
|
||||||
gcode += this->retract(false, false, auto_lift_type, true);
|
gcode += this->retract(false, false, auto_lift_type, true);
|
||||||
}
|
}
|
||||||
@@ -4873,10 +4873,12 @@ LayerResult GCode::process_layer(
|
|||||||
|
|
||||||
gcode_toolchange = this->set_extruder(extruder_id, print_z);
|
gcode_toolchange = this->set_extruder(extruder_id, print_z);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gcode_toolchange.empty()) {
|
if (!gcode_toolchange.empty()) {
|
||||||
// Disable vase mode for layers that has toolchange
|
// Disable vase mode for layers that has toolchange
|
||||||
result.spiral_vase_enable = false;
|
result.spiral_vase_enable = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
gcode += std::move(gcode_toolchange);
|
gcode += std::move(gcode_toolchange);
|
||||||
|
|
||||||
// let analyzer tag generator aware of a role type change
|
// let analyzer tag generator aware of a role type change
|
||||||
|
|||||||
Reference in New Issue
Block a user