mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-08 15:37:30 -06:00
ENH: fix collision of timelaps gcode when by object
Z height after timelaps gcode is changed. Should get the new z height and save into gcode writer. Jira: none, bug is found by self-test Signed-off-by: salt.wei <salt.wei@bambulab.com> Change-Id: I25516def507782600f0f270a339c88ea01a472a3
This commit is contained in:
parent
1b281bfb9f
commit
3119fa03c0
2 changed files with 49 additions and 12 deletions
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "Bambulab",
|
"name": "Bambulab",
|
||||||
"url": "http://www.bambulab.com/Parameters/vendor/BBL.json",
|
"url": "http://www.bambulab.com/Parameters/vendor/BBL.json",
|
||||||
"version": "01.07.00.19",
|
"version": "01.07.00.20",
|
||||||
"force_update": "0",
|
"force_update": "0",
|
||||||
"description": "the initial version of BBL configurations",
|
"description": "the initial version of BBL configurations",
|
||||||
"machine_model_list": [
|
"machine_model_list": [
|
||||||
|
|
|
@ -2871,8 +2871,8 @@ GCode::LayerResult GCode::process_layer(
|
||||||
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));
|
||||||
gcode_res = this->placeholder_parser_process("timelapse_gcode", print.config().time_lapse_gcode.value, m_writer.extruder()->id(), &config) + "\n";
|
|
||||||
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_res = this->placeholder_parser_process("timelapse_gcode", print.config().time_lapse_gcode.value, m_writer.extruder()->id(), &config) + "\n";
|
||||||
}
|
}
|
||||||
return gcode_res;
|
return gcode_res;
|
||||||
};
|
};
|
||||||
|
@ -2882,9 +2882,16 @@ GCode::LayerResult GCode::process_layer(
|
||||||
m_layer = &layer;
|
m_layer = &layer;
|
||||||
m_object_layer_over_raft = false;
|
m_object_layer_over_raft = false;
|
||||||
if (printer_structure == PrinterStructure::psI3 && !need_insert_timelapse_gcode_for_traditional) {
|
if (printer_structure == PrinterStructure::psI3 && !need_insert_timelapse_gcode_for_traditional) {
|
||||||
gcode += insert_timelapse_gcode();
|
std::string timepals_gcode = insert_timelapse_gcode();
|
||||||
//todo: get the last position of timelapse_gcode, and set into m_writer. Then delete the m_writer.set_current_position_clear(false)
|
gcode += timepals_gcode;
|
||||||
m_writer.set_current_position_clear(false);
|
m_writer.set_current_position_clear(false);
|
||||||
|
//BBS: check whether custom gcode changes the z position. Update if changed
|
||||||
|
double temp_z_after_timepals_gcode;
|
||||||
|
if (GCodeProcessor::get_last_z_from_gcode(timepals_gcode, temp_z_after_timepals_gcode)) {
|
||||||
|
Vec3d pos = m_writer.get_position();
|
||||||
|
pos(2) = temp_z_after_timepals_gcode;
|
||||||
|
m_writer.set_position(pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (! print.config().layer_change_gcode.value.empty()) {
|
if (! print.config().layer_change_gcode.value.empty()) {
|
||||||
DynamicConfig config;
|
DynamicConfig config;
|
||||||
|
@ -3197,9 +3204,17 @@ GCode::LayerResult GCode::process_layer(
|
||||||
if (need_insert_timelapse_gcode_for_traditional && !has_insert_timelapse_gcode) {
|
if (need_insert_timelapse_gcode_for_traditional && !has_insert_timelapse_gcode) {
|
||||||
gcode += this->retract(false, false, LiftType::NormalLift);
|
gcode += this->retract(false, false, LiftType::NormalLift);
|
||||||
m_writer.add_object_change_labels(gcode);
|
m_writer.add_object_change_labels(gcode);
|
||||||
gcode += insert_timelapse_gcode();
|
|
||||||
//todo: get the last position of timelapse_gcode, and set into m_writer. Then delete the m_writer.set_current_position_clear(false)
|
std::string timepals_gcode = insert_timelapse_gcode();
|
||||||
|
gcode += timepals_gcode;
|
||||||
m_writer.set_current_position_clear(false);
|
m_writer.set_current_position_clear(false);
|
||||||
|
//BBS: check whether custom gcode changes the z position. Update if changed
|
||||||
|
double temp_z_after_timepals_gcode;
|
||||||
|
if (GCodeProcessor::get_last_z_from_gcode(timepals_gcode, temp_z_after_timepals_gcode)) {
|
||||||
|
Vec3d pos = m_writer.get_position();
|
||||||
|
pos(2) = temp_z_after_timepals_gcode;
|
||||||
|
m_writer.set_position(pos);
|
||||||
|
}
|
||||||
has_insert_timelapse_gcode = true;
|
has_insert_timelapse_gcode = true;
|
||||||
}
|
}
|
||||||
gcode += m_wipe_tower->tool_change(*this, extruder_id, extruder_id == layer_tools.extruders.back());
|
gcode += m_wipe_tower->tool_change(*this, extruder_id, extruder_id == layer_tools.extruders.back());
|
||||||
|
@ -3416,9 +3431,16 @@ GCode::LayerResult GCode::process_layer(
|
||||||
gcode += end_str;
|
gcode += end_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
gcode += insert_timelapse_gcode();
|
std::string timepals_gcode = insert_timelapse_gcode();
|
||||||
//todo: get the last position of timelapse_gcode, and set into m_writer. Then delete the m_writer.set_current_position_clear(false)
|
gcode += timepals_gcode;
|
||||||
m_writer.set_current_position_clear(false);
|
m_writer.set_current_position_clear(false);
|
||||||
|
//BBS: check whether custom gcode changes the z position. Update if changed
|
||||||
|
double temp_z_after_timepals_gcode;
|
||||||
|
if (GCodeProcessor::get_last_z_from_gcode(timepals_gcode, temp_z_after_timepals_gcode)) {
|
||||||
|
Vec3d pos = m_writer.get_position();
|
||||||
|
pos(2) = temp_z_after_timepals_gcode;
|
||||||
|
m_writer.set_position(pos);
|
||||||
|
}
|
||||||
|
|
||||||
if (!temp_start_str.empty() && m_writer.empty_object_start_str())
|
if (!temp_start_str.empty() && m_writer.empty_object_start_str())
|
||||||
gcode += temp_start_str;
|
gcode += temp_start_str;
|
||||||
|
@ -3438,9 +3460,16 @@ GCode::LayerResult GCode::process_layer(
|
||||||
gcode += end_str;
|
gcode += end_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
gcode += insert_timelapse_gcode();
|
std::string timepals_gcode = insert_timelapse_gcode();
|
||||||
//todo: get the last position of timelapse_gcode, and set into m_writer. Then delete the m_writer.set_current_position_clear(false)
|
gcode += timepals_gcode;
|
||||||
m_writer.set_current_position_clear(false);
|
m_writer.set_current_position_clear(false);
|
||||||
|
//BBS: check whether custom gcode changes the z position. Update if changed
|
||||||
|
double temp_z_after_timepals_gcode;
|
||||||
|
if (GCodeProcessor::get_last_z_from_gcode(timepals_gcode, temp_z_after_timepals_gcode)) {
|
||||||
|
Vec3d pos = m_writer.get_position();
|
||||||
|
pos(2) = temp_z_after_timepals_gcode;
|
||||||
|
m_writer.set_position(pos);
|
||||||
|
}
|
||||||
|
|
||||||
if (!temp_start_str.empty() && m_writer.empty_object_start_str())
|
if (!temp_start_str.empty() && m_writer.empty_object_start_str())
|
||||||
gcode += temp_start_str;
|
gcode += temp_start_str;
|
||||||
|
@ -3507,9 +3536,17 @@ GCode::LayerResult GCode::process_layer(
|
||||||
m_timelapse_warning_code = 1;
|
m_timelapse_warning_code = 1;
|
||||||
gcode += this->retract(false, false, LiftType::NormalLift);
|
gcode += this->retract(false, false, LiftType::NormalLift);
|
||||||
m_writer.add_object_change_labels(gcode);
|
m_writer.add_object_change_labels(gcode);
|
||||||
gcode += insert_timelapse_gcode();
|
|
||||||
//todo: get the last position of timelapse_gcode, and set into m_writer. Then delete the m_writer.set_current_position_clear(false)
|
std::string timepals_gcode = insert_timelapse_gcode();
|
||||||
|
gcode += timepals_gcode;
|
||||||
m_writer.set_current_position_clear(false);
|
m_writer.set_current_position_clear(false);
|
||||||
|
//BBS: check whether custom gcode changes the z position. Update if changed
|
||||||
|
double temp_z_after_timepals_gcode;
|
||||||
|
if (GCodeProcessor::get_last_z_from_gcode(timepals_gcode, temp_z_after_timepals_gcode)) {
|
||||||
|
Vec3d pos = m_writer.get_position();
|
||||||
|
pos(2) = temp_z_after_timepals_gcode;
|
||||||
|
m_writer.set_position(pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result.gcode = std::move(gcode);
|
result.gcode = std::move(gcode);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue