ENH: support_clump_position_calibration

jira: [STUDIO-14896]
Change-Id: I2913a1e4022686889aaa94ee31b787930200d02d
(cherry picked from commit 14370c8910878c2182189b42e013c1323615c310)
This commit is contained in:
xin.zhang
2025-09-30 16:08:26 +08:00
committed by Noisyfox
parent 3d482ce4a0
commit c382a8a9c3
7 changed files with 25 additions and 5 deletions

View File

@@ -46,6 +46,7 @@
"support_lidar_calibration": false,
"support_nozzle_offset_calibration": false,
"support_high_tempbed_calibration": true,
"support_clump_position_calibration": true,
"support_ai_monitoring": true,
"support_first_layer_inspect": false,
"support_save_remote_print_file_to_storage": true,

View File

@@ -55,7 +55,8 @@ CalibrationDialog::CalibrationDialog(Plater *plater)
select_vibration = create_check_option(_L("Vibration compensation"), cali_left_panel, _L("Vibration compensation"), "vibration");
select_motor_noise = create_check_option(_L("Motor noise cancellation"), cali_left_panel, _L("Motor noise cancellation"), "motor_noise");
select_nozzle_cali = create_check_option(_L("Nozzle offset calibration"), cali_left_panel, _L("Nozzle offset calibration"), "nozzle_cali");
select_heatbed_cali = create_check_option(_L("High-temperature Heatbed Calibration"), cali_left_panel, _L("High-temperature Heatbed Calibration"), "bed_cali");
select_heatbed_cali = create_check_option(_L("High-temperature Heatbed Calibration"), cali_left_panel, _L("High-temperature Heatbed Calibration"), "bed_cali");
select_clumppos_cali = create_check_option(_L("Nozzle clumping detection Calibration"), cali_left_panel, _L("Nozzle clumping detection Calibration"), "clump_pos_cali");
// STUDIO-10091 the default not checked option
if(m_checkbox_list.count("bed_cali") != 0)
@@ -70,6 +71,7 @@ CalibrationDialog::CalibrationDialog(Plater *plater)
cali_left_sizer->Add(select_motor_noise, 0, wxLEFT, FromDIP(15));
cali_left_sizer->Add(select_nozzle_cali, 0, wxLEFT, FromDIP(15));
cali_left_sizer->Add(select_heatbed_cali, 0, wxLEFT, FromDIP(15));
cali_left_sizer->Add(select_clumppos_cali, 0, wxLEFT, FromDIP(15));
cali_left_sizer->Add(0, FromDIP(30), 0, wxEXPAND, 0);
auto cali_left_text_top = new wxStaticText(cali_left_panel, wxID_ANY, _L("Calibration program"), wxDefaultPosition, wxDefaultSize, 0);
@@ -252,6 +254,13 @@ void CalibrationDialog::update_cali(MachineObject *obj)
m_checkbox_list["bed_cali"]->SetValue(false);
}
if (obj->GetConfig()->SupportCaliClumpPos()) {
select_clumppos_cali->Show();
} else {
select_clumppos_cali->Hide();
m_checkbox_list["clump_pos_cali"]->SetValue(false);
}
if (obj->is_calibration_running() || obj->is_calibration_done()) {
if (obj->is_calibration_done()) {
m_calibration_btn->Enable();
@@ -279,6 +288,8 @@ void CalibrationDialog::update_cali(MachineObject *obj)
for (int i = 0; i < obj->stage_list_info.size(); i++) {
m_calibration_flow->AppendItem(Slic3r::get_stage_string(obj->stage_list_info[i]));
}
last_stage_list_info = obj->stage_list_info;
}
int index = obj->get_curr_stage_idx();
m_calibration_flow->SelectItem(index);
@@ -333,7 +344,8 @@ void CalibrationDialog::on_start_calibration(wxMouseEvent &event)
m_checkbox_list["xcam_cali"]->GetValue(),
m_checkbox_list["motor_noise"]->GetValue(),
m_checkbox_list["nozzle_cali"]->GetValue(),
m_checkbox_list["bed_cali"]->GetValue()
m_checkbox_list["bed_cali"]->GetValue(),
m_checkbox_list["clump_pos_cali"]->GetValue()
);
}
}

View File

@@ -45,6 +45,7 @@ private:
wxWindow* select_motor_noise { nullptr };
wxWindow* select_nozzle_cali{ nullptr };
wxWindow* select_heatbed_cali{ nullptr };
wxWindow* select_clumppos_cali{ nullptr };
wxWindow* create_check_option(wxString title, wxWindow *parent, wxString tooltip, std::string param);
public:

View File

@@ -50,6 +50,7 @@ void DevConfig::ParseCalibrationConfig(const json& print_json)
DevJsonValParser::ParseVal(print_json, "support_nozzle_offset_calibration", m_support_calibration_nozzle_offset);
DevJsonValParser::ParseVal(print_json, "support_high_tempbed_calibration", m_support_calibration_high_temp_bed);
DevJsonValParser::ParseVal(print_json, "support_auto_flow_calibration", m_support_calibration_pa_flow_auto);
DevJsonValParser::ParseVal(print_json, "support_clump_position_calibration", m_support_calibration_clump_pos);
}
}

View File

@@ -39,6 +39,7 @@ public:
bool SupportCalibrationLidar() const { return m_support_calibration_lidar; }
bool SupportCalibrationNozzleOffset() const { return m_support_calibration_nozzle_offset; }
bool SupportCalibrationHighTempBed() const { return m_support_calibration_high_temp_bed; }
bool SupportCaliClumpPos() const { return m_support_calibration_clump_pos; }
bool SupportCalibrationPA_FlowAuto() const { return m_support_calibration_pa_flow_auto; }
@@ -73,6 +74,7 @@ private:
bool m_support_calibration_lidar = false;
bool m_support_calibration_nozzle_offset = false;
bool m_support_calibration_high_temp_bed = false; // High-temperature Heatbed Calibration
bool m_support_calibration_clump_pos = false; // clump position calibration
bool m_support_calibration_pa_flow_auto = false;// PA flow calibration. used in SendPrint
};

View File

@@ -187,6 +187,8 @@ wxString Slic3r::get_stage_string(int stage)
return _L("Measuring Surface");
case 58:
return _L("Thermal Preconditioning for first layer optimization");
case 65:
return _L("Calibrating the detection position of nozzle clumping"); // N7
default:
BOOST_LOG_TRIVIAL(info) << "stage = " << stage;
}
@@ -1856,7 +1858,7 @@ bool MachineObject::is_support_command_calibration()
return true;
}
int MachineObject::command_start_calibration(bool vibration, bool bed_leveling, bool xcam_cali, bool motor_noise, bool nozzle_cali, bool bed_cali)
int MachineObject::command_start_calibration(bool vibration, bool bed_leveling, bool xcam_cali, bool motor_noise, bool nozzle_cali, bool bed_cali, bool clumppos_cali)
{
if (!is_support_command_calibration()) {
// fixed gcode file
@@ -1869,7 +1871,8 @@ int MachineObject::command_start_calibration(bool vibration, bool bed_leveling,
json j;
j["print"]["command"] = "calibration";
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
j["print"]["option"]= (bed_cali ? 1 << 5 : 0)
j["print"]["option"] = + (clumppos_cali ? 1 << 6 : 0)
+ (bed_cali ? 1 << 5 : 0)
+ (nozzle_cali ? 1 << 4 : 0)
+ (motor_noise ? 1 << 3 : 0)
+ (vibration ? 1 << 2 : 0)

View File

@@ -757,7 +757,7 @@ public:
int command_extruder_control(int nozzle_id, double val);
// calibration printer
bool is_support_command_calibration();
int command_start_calibration(bool vibration, bool bed_leveling, bool xcam_cali, bool motor_noise, bool nozzle_cali, bool bed_cali);
int command_start_calibration(bool vibration, bool bed_leveling, bool xcam_cali, bool motor_noise, bool nozzle_cali, bool bed_cali, bool clumppos_cali);
// PA calibration
int command_start_pa_calibration(const X1CCalibInfos& pa_data, int mode = 0); // 0: automatic mode; 1: manual mode. default: automatic mode