FIX: fix check k / n logic
Change-Id: I0f9fe5c95523d79b4c6435555d10f2d641639b13 Signed-off-by: Stone Li <stone.li@bambulab.com>
This commit is contained in:
parent
21485dec6a
commit
f701b4efd5
|
@ -377,7 +377,7 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
|
|||
wxString n_text = m_input_n_val->GetTextCtrl()->GetValue();
|
||||
|
||||
if (is_virtual_tray()) {
|
||||
if (!ExtrusionCalibration::check_k_n_validation(k_text, n_text)) {
|
||||
if (!ExtrusionCalibration::check_k_validation(k_text)) {
|
||||
wxString k_tips = _L("Please input a valid value (K in 0~0.5)");
|
||||
wxString kn_tips = _L("Please input a valid value (K in 0~0.5, N in 0.6~2.0)");
|
||||
MessageDialog msg_dlg(nullptr, k_tips, wxEmptyString, wxICON_WARNING | wxOK);
|
||||
|
@ -404,7 +404,7 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
|
|||
if (!m_is_third) {
|
||||
// check and set k n
|
||||
if (obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI)) {
|
||||
if (!ExtrusionCalibration::check_k_n_validation(k_text, n_text)) {
|
||||
if (!ExtrusionCalibration::check_k_validation(k_text)) {
|
||||
wxString k_tips = _L("Please input a valid value (K in 0~0.5)");
|
||||
wxString kn_tips = _L("Please input a valid value (K in 0~0.5, N in 0.6~2.0)");
|
||||
MessageDialog msg_dlg(nullptr, k_tips, wxEmptyString, wxICON_WARNING | wxOK);
|
||||
|
@ -468,7 +468,7 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
|
|||
} else {
|
||||
if (obj) {
|
||||
if (obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI)) {
|
||||
if (!ExtrusionCalibration::check_k_n_validation(k_text, n_text)) {
|
||||
if (!ExtrusionCalibration::check_k_validation(k_text)) {
|
||||
wxString k_tips = _L("Please input a valid value (K in 0~0.5)");
|
||||
wxString kn_tips = _L("Please input a valid value (K in 0~0.5, N in 0.6~2.0)");
|
||||
MessageDialog msg_dlg(nullptr, k_tips, wxEmptyString, wxICON_WARNING | wxOK);
|
||||
|
@ -576,9 +576,9 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
|
|||
update_widgets();
|
||||
// set default value
|
||||
if (k.IsEmpty())
|
||||
k = "0.00";
|
||||
k = "0.000";
|
||||
if (n.IsEmpty())
|
||||
n = "0.00";
|
||||
n = "0.000";
|
||||
|
||||
m_input_k_val->GetTextCtrl()->SetValue(k);
|
||||
m_input_n_val->GetTextCtrl()->SetValue(n);
|
||||
|
|
|
@ -441,6 +441,11 @@ bool MachineObject::is_in_extrusion_cali()
|
|||
|
||||
bool MachineObject::is_extrusion_cali_finished()
|
||||
{
|
||||
if (extrusion_cali_hold_count > 0) {
|
||||
extrusion_cali_hold_count--;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (boost::contains(m_gcode_file, "extrusion_cali")
|
||||
&& this->mc_print_percent == 100)
|
||||
return true;
|
||||
|
@ -1665,6 +1670,9 @@ int MachineObject::command_start_extrusion_cali(int tray_index, int nozzle_temp,
|
|||
j["print"]["nozzle_temp"] = nozzle_temp;
|
||||
j["print"]["bed_temp"] = bed_temp;
|
||||
j["print"]["max_volumetric_speed"] = max_volumetric_speed;
|
||||
|
||||
extrusion_cali_hold_count = HOLD_COUNT_MAX;
|
||||
this->mc_print_percent = 0;
|
||||
return this->publish_json(j.dump());
|
||||
}
|
||||
|
||||
|
|
|
@ -455,6 +455,8 @@ public:
|
|||
std::string m_tray_now; // tray_now : "0" ~ "15" or "255"
|
||||
std::string m_tray_tar; // tray_tar : "0" ~ "15" or "255"
|
||||
|
||||
int extrusion_cali_hold_count = 0;
|
||||
|
||||
bool is_in_extrusion_cali();
|
||||
bool is_extrusion_cali_finished();
|
||||
void _parse_tray_now(std::string tray_now);
|
||||
|
|
|
@ -350,19 +350,23 @@ void ExtrusionCalibration::input_value_finish()
|
|||
|
||||
void ExtrusionCalibration::show_info(bool show, bool is_error, wxString text)
|
||||
{
|
||||
if (show && !is_error) {
|
||||
m_info_text->Show();
|
||||
m_info_text->SetLabelText(text);
|
||||
m_error_text->Hide();
|
||||
} else if (show && is_error) {
|
||||
if (show && is_error) {
|
||||
m_error_text->Show();
|
||||
m_error_text->SetLabelText(text);
|
||||
m_info_text->Hide();
|
||||
} else {
|
||||
}
|
||||
else if (show && !is_error) {
|
||||
m_info_text->Show();
|
||||
m_info_text->SetLabelText(text);
|
||||
m_error_text->Hide();
|
||||
}
|
||||
else {
|
||||
if (is_error) {
|
||||
m_error_text->Hide();
|
||||
} else {
|
||||
m_info_text->Hide();
|
||||
m_error_text->Show();
|
||||
} else {
|
||||
m_info_text->Show();
|
||||
m_error_text->Hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -371,14 +375,15 @@ void ExtrusionCalibration::update()
|
|||
{
|
||||
if (obj) {
|
||||
if (obj->is_in_extrusion_cali()) {
|
||||
show_info(true, false, wxString::Format(_L("Calibrating... %d%%"), obj->mc_print_percent));
|
||||
m_cali_cancel->Show();
|
||||
m_cali_cancel->Enable();
|
||||
show_info(true, false, wxString::Format(_L("Calibrating... %d%%"), obj->mc_print_percent));
|
||||
m_button_next_step->Hide();
|
||||
m_button_cali->Hide();
|
||||
m_button_next_step->Hide();
|
||||
} else if (obj->is_extrusion_cali_finished()) {
|
||||
show_info(true, false, _L("Calibration completed"));
|
||||
m_cali_cancel->Hide();
|
||||
m_button_cali->Show();
|
||||
m_button_next_step->Show();
|
||||
} else {
|
||||
show_info(false, false, wxEmptyString);
|
||||
|
@ -440,6 +445,23 @@ void ExtrusionCalibration::on_click_cancel(wxCommandEvent& event)
|
|||
}
|
||||
}
|
||||
|
||||
bool ExtrusionCalibration::check_k_validation(wxString k_text)
|
||||
{
|
||||
if (k_text.IsEmpty())
|
||||
return false;
|
||||
double k = 0.0;
|
||||
try {
|
||||
k_text.ToDouble(&k);
|
||||
}
|
||||
catch (...) {
|
||||
;
|
||||
}
|
||||
|
||||
if (k < 0 || k > 0.5)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ExtrusionCalibration::check_k_n_validation(wxString k_text, wxString n_text)
|
||||
{
|
||||
if (k_text.IsEmpty() || n_text.IsEmpty())
|
||||
|
@ -470,7 +492,7 @@ void ExtrusionCalibration::on_click_save(wxCommandEvent &event)
|
|||
{
|
||||
wxString k_text = m_k_val->GetTextCtrl()->GetValue();
|
||||
wxString n_text = m_n_val->GetTextCtrl()->GetValue();
|
||||
if (!ExtrusionCalibration::check_k_n_validation(k_text, n_text)) {
|
||||
if (!ExtrusionCalibration::check_k_validation(k_text)) {
|
||||
wxString k_tips = _L("Please input a valid value (K in 0~0.5)");
|
||||
wxString kn_tips = _L("Please input a valid value (K in 0~0.5, N in 0.6~2.0)");
|
||||
MessageDialog msg_dlg(nullptr, k_tips, wxEmptyString, wxICON_WARNING | wxOK);
|
||||
|
@ -552,6 +574,8 @@ void ExtrusionCalibration::update_combobox_filaments()
|
|||
m_comboBox_filament->SetValue(wxEmptyString);
|
||||
user_filaments.clear();
|
||||
int selection_idx = -1;
|
||||
int filament_index = -1;
|
||||
int curr_selection = -1;
|
||||
wxArrayString filament_items;
|
||||
PresetBundle* preset_bundle = wxGetApp().preset_bundle;
|
||||
if (preset_bundle && obj) {
|
||||
|
@ -592,6 +616,16 @@ void ExtrusionCalibration::update_combobox_filaments()
|
|||
for (auto printer_str : printer_strs->values) {
|
||||
if (printer_preset_list.find(printer_str) != printer_preset_list.end()) {
|
||||
user_filaments.push_back(&(*filament_it));
|
||||
|
||||
// set default filament id
|
||||
filament_index++;
|
||||
if (filament_it->is_system
|
||||
&& !ams_filament_id.empty()
|
||||
&& filament_it->filament_id == ams_filament_id
|
||||
) {
|
||||
curr_selection = filament_index;
|
||||
}
|
||||
|
||||
wxString filament_name = wxString::FromUTF8(filament_it->name);
|
||||
filament_items.Add(filament_name);
|
||||
break;
|
||||
|
@ -599,7 +633,7 @@ void ExtrusionCalibration::update_combobox_filaments()
|
|||
}
|
||||
}
|
||||
m_comboBox_filament->Set(filament_items);
|
||||
m_comboBox_filament->SetSelection(selection_idx);
|
||||
m_comboBox_filament->SetSelection(curr_selection);
|
||||
post_select_event();
|
||||
}
|
||||
|
||||
|
|
|
@ -56,12 +56,14 @@ public:
|
|||
// input is 1 or 2
|
||||
void set_step(int step_index);
|
||||
|
||||
static bool check_k_n_validation(wxString k, wxString n);
|
||||
static bool check_k_n_validation(wxString k_text, wxString n_text);
|
||||
static bool check_k_validation(wxString k_text);
|
||||
|
||||
MachineObject *obj { nullptr };
|
||||
int ams_id { 0 }; /* 0 ~ 3 */
|
||||
int tray_id { 0 }; /* 0 ~ 3 | 254 for virtual tray id*/
|
||||
|
||||
std::string ams_filament_id;
|
||||
std::string m_filament_type;
|
||||
|
||||
std::vector<Preset*> user_filaments;
|
||||
|
|
|
@ -2554,11 +2554,27 @@ void StatusPanel::on_filament_extrusion_cali(wxCommandEvent &event)
|
|||
|
||||
int ams_id_int = 0;
|
||||
int tray_id_int = 0;
|
||||
|
||||
|
||||
// set ams_filament id is is bbl filament
|
||||
if (ams_id.compare(std::to_string(VIRTUAL_TRAY_ID)) == 0) {
|
||||
tray_id_int = VIRTUAL_TRAY_ID;
|
||||
} else {
|
||||
m_extrusion_cali_dlg->ams_filament_id = "";
|
||||
}
|
||||
else {
|
||||
ams_id_int = atoi(ams_id.c_str());
|
||||
tray_id_int = atoi(tray_id.c_str());
|
||||
|
||||
auto it = obj->amsList.find(ams_id);
|
||||
if (it != obj->amsList.end()) {
|
||||
auto tray_it = it->second->trayList.find(tray_id);
|
||||
if (tray_it != it->second->trayList.end()) {
|
||||
if (MachineObject::is_bbl_filament(tray_it->second->tag_uid))
|
||||
m_extrusion_cali_dlg->ams_filament_id = tray_it->second->setting_id;
|
||||
else
|
||||
m_extrusion_cali_dlg->ams_filament_id = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
|
@ -2588,8 +2604,8 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event)
|
|||
m_filament_setting_dlg->SetPosition(m_ams_control->GetScreenPosition());
|
||||
wxString k_val;
|
||||
wxString n_val;
|
||||
k_val = wxString::Format("%.2f", obj->vt_tray.k);
|
||||
n_val = wxString::Format("%.2f", obj->vt_tray.n);
|
||||
k_val = wxString::Format("%.3f", obj->vt_tray.k);
|
||||
n_val = wxString::Format("%.3f", obj->vt_tray.n);
|
||||
m_filament_setting_dlg->SetPosition(m_ams_control->GetScreenPosition());
|
||||
m_filament_setting_dlg->Popup(wxEmptyString, wxEmptyString, wxEmptyString, wxEmptyString, k_val, n_val);
|
||||
} else {
|
||||
|
@ -2610,8 +2626,8 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event)
|
|||
if (it != obj->amsList.end()) {
|
||||
auto tray_it = it->second->trayList.find(tray_id);
|
||||
if (tray_it != it->second->trayList.end()) {
|
||||
k_val = wxString::Format("%.2f", tray_it->second->k);
|
||||
n_val = wxString::Format("%.2f", tray_it->second->n);
|
||||
k_val = wxString::Format("%.3f", tray_it->second->k);
|
||||
n_val = wxString::Format("%.3f", tray_it->second->n);
|
||||
wxColor color = AmsTray::decode_color(tray_it->second->color);
|
||||
m_filament_setting_dlg->set_color(color);
|
||||
m_filament_setting_dlg->ams_filament_id = tray_it->second->setting_id;
|
||||
|
@ -2644,8 +2660,8 @@ void StatusPanel::on_ext_spool_edit(wxCommandEvent &event)
|
|||
m_filament_setting_dlg->tray_id = VIRTUAL_TRAY_ID;
|
||||
wxString k_val;
|
||||
wxString n_val;
|
||||
k_val = wxString::Format("%.2f", obj->vt_tray.k);
|
||||
n_val = wxString::Format("%.2f", obj->vt_tray.n);
|
||||
k_val = wxString::Format("%.3f", obj->vt_tray.k);
|
||||
n_val = wxString::Format("%.3f", obj->vt_tray.n);
|
||||
m_filament_setting_dlg->SetPosition(m_ams_control->GetScreenPosition());
|
||||
m_filament_setting_dlg->Popup(wxEmptyString, wxEmptyString, wxEmptyString, wxEmptyString, k_val, n_val);
|
||||
}
|
||||
|
|
|
@ -73,10 +73,9 @@ bool AMSinfo::parse_ams_info(Ams *ams, bool remain_flag, bool humidity_flag)
|
|||
info.material_state = AMSCanType::AMS_CAN_TYPE_THIRDBRAND;
|
||||
}
|
||||
|
||||
if (!remain_flag) {
|
||||
if (!MachineObject::is_bbl_filament(it->second->tag_uid) || !remain_flag) {
|
||||
info.material_remain = 100;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
info.material_remain = it->second->remain < 0 ? 0 : it->second->remain;
|
||||
info.material_remain = it->second->remain > 100 ? 100 : info.material_remain;
|
||||
}
|
||||
|
@ -600,8 +599,8 @@ void AMSLib::render(wxDC &dc)
|
|||
|
||||
//draw k&n
|
||||
if (m_show_kn) {
|
||||
wxString str_k = wxString::Format("k %1.2f", m_info.k);
|
||||
wxString str_n = wxString::Format("n %1.2f", m_info.n);
|
||||
wxString str_k = wxString::Format("k %1.3f", m_info.k);
|
||||
wxString str_n = wxString::Format("n %1.3f", m_info.n);
|
||||
dc.SetFont(::Label::Body_11);
|
||||
auto tsize = dc.GetMultiLineTextExtent(str_k);
|
||||
auto pot_k = wxPoint((libsize.x - tsize.x) / 2, (libsize.y - tsize.y) / 2 - FromDIP(9) + tsize.y);
|
||||
|
|
Loading…
Reference in New Issue