fix some bug

This commit is contained in:
QIDI TECH
2025-05-23 20:18:49 +08:00
parent 5ac6bf0ccb
commit 031525a16e
88 changed files with 994 additions and 141 deletions

View File

@@ -1109,6 +1109,7 @@ void AmsMapingPopup::update(MachineObject* obj, const std::vector<FilamentInfo>&
std::vector<std::string> filament_type = GUI::wxGetApp().plater()->box_msg.filament_type;
std::vector<std::string> filament_id = GUI::wxGetApp().plater()->box_msg.filament_id;
std::vector<int> slot_id = GUI::wxGetApp().plater()->box_msg.slot_id;
std::vector<int> slot_state = GUI::wxGetApp().plater()->box_msg.slot_state;
int box_count = GUI::wxGetApp().plater()->box_msg.box_count;
//for (int i = 0; i < 4 * box_count; i++) {
@@ -1161,65 +1162,95 @@ void AmsMapingPopup::update(MachineObject* obj, const std::vector<FilamentInfo>&
std::vector<MappingContainer *> right_four_slot_containers;
//y59
//for (std::map<std::string, Ams *>::iterator ams_iter = obj->amsList.begin(); ams_iter != obj->amsList.end(); ams_iter++) {
for (int i = 0; i < 1; i++) {
int ams_indx = 0;
int nozzle_id = 0;
//y61
for(int box_num = 0; box_num < box_count; box_num++){
for (int j = 0; j < 1; j++) {
auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL);
auto ams_mapping_item_container = new MappingContainer(nozzle_id == 0 ? m_right_marea_panel : m_left_marea_panel, "QIDI-BOX", 4);
ams_mapping_item_container->SetName(nozzle_id == 0 ? m_right_marea_panel->GetName() : m_left_marea_panel->GetName());
ams_mapping_item_container->SetSizer(sizer_mapping_list);
ams_mapping_item_container->Layout();
int ams_indx = 0;
int nozzle_id = 0;
m_has_unmatch_filament = false;
auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL);
auto ams_mapping_item_container = new MappingContainer(nozzle_id == 0 ? m_right_marea_panel : m_left_marea_panel, "QIDI-BOX", 4);
ams_mapping_item_container->SetName(nozzle_id == 0 ? m_right_marea_panel->GetName() : m_left_marea_panel->GetName());
ams_mapping_item_container->SetSizer(sizer_mapping_list);
ams_mapping_item_container->Layout();
std::vector<TrayData> tray_datas;
for (int i = 0; i < 4 * box_count; i++) {
TrayData td;
m_has_unmatch_filament = false;
td.id = i;
td.ams_id = box_count;
td.slot_id = slot_id[i];
std::vector<TrayData> tray_datas;
for (int i = box_num * 4; i < (box_num + 1) * 4; i++) {
TrayData td;
td.id = i;
td.ams_id = box_num + 1;
if(slot_state[i])
td.slot_id = slot_id[i];
else
td.slot_id = -1;
td.type = NORMAL;
td.remain = 0;
std::string color = filament_colors[i];
td.colour = AmsTray::decode_color((color.erase(0, 1)) + "FF");
td.name = filament_type[i];
td.filament_type = filament_type[i];
td.ctype = TrayType::NORMAL;
//for (int j = 0; j < 4 * box_count; j++) {
// td.material_cols.push_back(AmsTray::decode_color((filament_colors[i].erase(0, 1)) + "FF"));
//}
td.type = NORMAL;
td.remain = 0;
std::string color = filament_colors[i];
td.colour = AmsTray::decode_color((color.erase(0, 1)) + "FF");
td.name = filament_type[i];
td.filament_type = filament_type[i];
td.ctype = TrayType::NORMAL;
//for (int j = 0; j < 4 * box_count; j++) {
// td.material_cols.push_back(AmsTray::decode_color((filament_colors[i].erase(0, 1)) + "FF"));
//}
tray_datas.push_back(td);
tray_datas.push_back(td);
}
ams_mapping_item_container->Show();
add_ams_mapping(tray_datas, obj->ams_calibrate_remain_flag, ams_mapping_item_container, sizer_mapping_list);
m_amsmapping_container_sizer_list.push_back(sizer_mapping_list);
m_amsmapping_container_list.push_back(ams_mapping_item_container);
if (nozzle_id == 0) {
has_right_ams = true;
if (ams_mapping_item_container->get_slots_num() == 1) {
right_one_slot_containers.push_back(ams_mapping_item_container);
}
else {
right_four_slot_containers.push_back(ams_mapping_item_container);
}
}
else if (nozzle_id == 1) {
has_left_ams = true;
if (ams_mapping_item_container->get_slots_num() == 1) {
left_one_slot_containers.push_back(ams_mapping_item_container);
}
else {
left_four_slots_containers.push_back(ams_mapping_item_container);
}
}
//y59 //y61
}
}
ams_mapping_item_container->Show();
add_ams_mapping(tray_datas, obj->ams_calibrate_remain_flag, ams_mapping_item_container, sizer_mapping_list);
m_amsmapping_container_sizer_list.push_back(sizer_mapping_list);
m_amsmapping_container_list.push_back(ams_mapping_item_container);
//y61
//ext
{
TrayData td;
if (nozzle_id == 0) {
has_right_ams = true;
if (ams_mapping_item_container->get_slots_num() == 1) {
right_one_slot_containers.push_back(ams_mapping_item_container);
}
else {
right_four_slot_containers.push_back(ams_mapping_item_container);
}
}
else if (nozzle_id == 1) {
has_left_ams = true;
if (ams_mapping_item_container->get_slots_num() == 1) {
left_one_slot_containers.push_back(ams_mapping_item_container);
}
else {
left_four_slots_containers.push_back(ams_mapping_item_container);
}
}
//y59
td.id = 0;
td.ams_id = -1;
td.slot_id = -1;
td.type = NORMAL;
td.remain = 0;
std::string color = filament_colors.back();
td.colour = AmsTray::decode_color((color.erase(0, 1)) + "FF");
td.name = filament_type.back();
td.filament_type = filament_type.back();
td.ctype = TrayType::NORMAL;
add_ext_ams_mapping(td, m_right_extra_slot);
}
_add_containers(this, left_one_slot_containers, left_four_slots_containers, m_sizer_ams_basket_left);

View File

@@ -1183,7 +1183,7 @@ int MachineObject::ams_filament_mapping(
}
}
//y59
if (picked_src_idx >= 0 && picked_tar_idx >= 0) {
if (picked_src_idx >= 0 && picked_tar_idx >= 0 && box_filament_infos[picked_tar_idx].slot_id != "-1") {
result[picked_src_idx].tray_id = distance_map[k][picked_tar_idx].tray_id;
result[picked_src_idx].color = box_filament_infos[picked_tar_idx].color;
result[picked_src_idx].type = box_filament_infos[picked_tar_idx].type;

View File

@@ -2456,6 +2456,9 @@ void Sidebar::update_presets(Preset::Type preset_type)
wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config);
BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": exit.");
//y61
GUI::wxGetApp().sidebar().update_sync_status(nullptr);
}
//QDS
@@ -3373,7 +3376,7 @@ std::map<int, DynamicPrintConfig> Sidebar::build_filament_box_list(std::vector<s
}
//ext filament
if(slot_state.back() != 0){
{
DynamicPrintConfig tray_config;
tray_config.set_key_value("filament_id", new ConfigOptionStrings{ id.back() });
tray_config.set_key_value("tag_uid", new ConfigOptionStrings{ "" }); //clear
@@ -9304,16 +9307,14 @@ void Plater::priv::on_action_print_plate(SimpleEvent&)
wxString msg = "";
GUI::Box_info filament_info;
filament_info = qidi.get_box_info(msg, box_ip);
GUI::Box_info cur_box_info = q->get_cur_box_info();
GUI::Box_info cur_box_info;
cur_box_info = q->get_cur_box_info();
if (filament_info.filament_index != cur_box_info.filament_index
|| filament_info.filament_vendor != cur_box_info.filament_vendor
|| filament_info.filament_color_index != cur_box_info.filament_color_index
|| filament_info.slot_state != cur_box_info.slot_state
|| filament_info.slot_id != cur_box_info.slot_id
|| filament_info.filament_id != cur_box_info.filament_id
|| filament_info.filament_colors != cur_box_info.filament_colors
|| filament_info.filament_type != cur_box_info.filament_type
|| filament_info.box_count != cur_box_info.box_count
|| filament_info.auto_reload_detect != cur_box_info.auto_reload_detect) {
has_diff = true;
@@ -14544,11 +14545,11 @@ void Plater::export_gcode(bool prefer_removable)
unsigned int state = this->p->update_restart_background_process(false, false);
if (state & priv::UPDATE_BACKGROUND_PROCESS_INVALID)
return;
//y56
if (wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_string("filename_format") == "{input_filename_base}.gcode")
default_output_file = fs::path(into_u8(p->get_export_gcode_filename("", true, p->partplate_list.get_curr_plate_index() == PLATE_ALL_IDX ? true : false)));
else
default_output_file = fs::path(this->p->background_process.output_filepath_for_project(""));
// //y56
// if (wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_string("filename_format") == "{input_filename_base}.gcode")
// default_output_file = fs::path(into_u8(p->get_export_gcode_filename("", true, p->partplate_list.get_curr_plate_index() == PLATE_ALL_IDX ? true : false)));
// else
default_output_file = fs::path(this->p->background_process.output_filepath_for_project(""));
} catch (const Slic3r::PlaceholderParserError &ex) {
// Show the error with monospaced font.

View File

@@ -1367,9 +1367,6 @@ void PlaterPresetComboBox::update()
}
}
//y59
GUI::wxGetApp().sidebar().update_sync_status(nullptr);
update_selection();
if (m_type == Preset::TYPE_FILAMENT) {
update_badge_according_flag();
@@ -1540,7 +1537,7 @@ void TabPresetComboBox::update()
}
if (m_type == Preset::TYPE_FILAMENT)
add_ams_filaments(into_u8(selected));
add_box_filaments(into_u8(selected));
//QDS: add project embedded preset logic
if (!project_embedded_presets.empty())

View File

@@ -1859,8 +1859,12 @@ void SelectMachineDialog::show_status(PrintDialogStatus status, std::vector<wxSt
} else if (status == PrintDialogStatus::PrintStatusInSystemPrinting) {
wxString msg_text = _L("The printer is executing instructions. Please restart printing after it ends");
update_print_status_msg(msg_text, true, false, true);
} else if (status == PrintDialogStatus::PrintStatusInPrinting) {
wxString msg_text = _L("The printer is busy on other print job");
//y62
} else if (status == PrintDialogStatus::PrintStatusPrinterOffline) {
wxString msg_text = _L("The printer is offline, please check.");
update_print_status_msg(msg_text, true, false, true);
} else if (status == PrintDialogStatus::PrintStatusPrinterNotStandby) {
wxString msg_text = _L("The printer is not standby, please check.");
update_print_status_msg(msg_text, true, false, true);
} else if (status == PrintDialogStatus::PrintStatusAmsOnSettingup) {
update_print_status_msg(_L("BOX is setting up. Please try again later."), false, false, true);
@@ -2318,16 +2322,13 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
m_plater->export_gcode(output_path);
}
msg = _L("Test the network");
m_status_bar->update_status(msg, m_is_canceled, 10, true);
if (m_isNetMode)
{
PrintHostJob upload_job(machine_url, machine_ip);
upload_job.upload_data.upload_path = upload_file_name;
upload_job.upload_data.post_action = PrintHostPostUploadAction::StartPrint;
upload_job.upload_data.source_path = output_path.string();
upload_job.is_3mf = qidi_3mf;
upload_job.upload_data.is_3mf = qidi_3mf;
start_to_send(std::move(upload_job));
}
else
@@ -2340,7 +2341,7 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
upload_job.upload_data.upload_path = upload_file_name;
upload_job.upload_data.post_action = PrintHostPostUploadAction::StartPrint;
upload_job.upload_data.source_path = output_path.string();
upload_job.is_3mf = qidi_3mf;
upload_job.upload_data.is_3mf = qidi_3mf;
start_to_send(std::move(upload_job));
}
@@ -2577,6 +2578,9 @@ void SelectMachineDialog::start_to_send(PrintHostJob upload_job) {
else if (printer_status == "offline") {
show_status(PrintDialogStatus::PrintStatusPrinterOffline);
return;
} else if (printer_status != "standby"){
show_status(PrintDialogStatus::PrintStatusPrinterNotStandby);
return;
}
if(!m_ams_mapping_result.empty()){
@@ -2628,9 +2632,21 @@ void SelectMachineDialog::start_to_send(PrintHostJob upload_job) {
cancel = this->m_is_canceled;
int gui_progress = progress.ultotal > 0 ? 100 * progress.ulnow / progress.ultotal : 0;
OctoPrint::progress_percentage = gui_progress / 100.f;
wxString msg = _L("Sending...");
bool is_undisplay = false;
m_status_bar->update_status(msg, is_undisplay, std::floor(10 + gui_progress * 0.9), true);
//y62
if(gui_progress < 100){
wxString msg = _L("Sending...");
bool is_undisplay = false;
m_status_bar->update_status(msg, is_undisplay, std::floor(10 + gui_progress * 0.9), true);
}
else{
std::vector<std::string> dot = {"..", "....", "......"};
for(int i = 0; i < 3; i++){
wxString msg = _L("Waiting for the printer's response") + dot[i];
bool is_undisplay = false;
m_status_bar->update_status(msg, is_undisplay, 100, true);
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
}
},
[this](wxString error) {
show_status(PrintDialogStatus::PrintStatusPublicUploadFiled);

View File

@@ -145,6 +145,7 @@ enum PrintDialogStatus : unsigned int {
PrinterNotConnectBox,
BoxhasSomeProblem,
PrintStatusPrinterOffline,
PrintStatusPrinterNotStandby,
};
class Material

View File

@@ -374,8 +374,7 @@ void SendMultiMachinePage::on_sys_color_changed()
void SendMultiMachinePage::refresh_user_device()
{
m_pauseThread = true;
std::lock_guard<std::mutex> lock(m_mutex);
StopThread();
m_device_items.clear();
sizer_machine_list->Clear(true);
@@ -440,7 +439,7 @@ void SendMultiMachinePage::refresh_user_device()
scroll_macine_list->Layout();
sizer_machine_list->Layout();
m_pauseThread = false;
StartThread();
}
QDT::PrintParams SendMultiMachinePage::request_params(MachineObject* obj)
@@ -1838,7 +1837,6 @@ void SendMultiMachinePage::StartThread() {
return;
}
m_stopThread = false;
m_pauseThread = false;
m_statusThread = std::thread(&SendMultiMachinePage::ThreadWorker, this);
}
@@ -1855,17 +1853,11 @@ void SendMultiMachinePage::ThreadWorker() {
QIDINetwork qidi;
wxString msg = "";
while (!m_stopThread) {
std::lock_guard<std::mutex> lock(m_mutex);
for(auto device : m_device_items) {
if (m_pauseThread)
if (m_stopThread)
break;
try {
MachineObject* temp_obj = device.second->get_obj();
temp_obj->ams_exist_bits = qidi.get_box_state(msg, temp_obj->dev_url) ? 1 : 0;
}
catch (const std::exception& error) {
continue;
}
MachineObject* temp_obj = device.second->get_obj();
temp_obj->ams_exist_bits = qidi.get_box_state(msg, temp_obj->dev_url) ? 1 : 0;
}
}
}

View File

@@ -167,8 +167,6 @@ private:
//y61
std::thread m_statusThread;
std::atomic<bool> m_stopThread{false};
std::atomic<bool> m_pauseThread{ false };
std::mutex m_mutex;
public:
SendMultiMachinePage(Plater* plater = nullptr);

View File

@@ -944,16 +944,13 @@ void SendToPrinterDialog::on_ok(wxCommandEvent &event)
m_plater->export_gcode(output_path);
}
msg = _L("Test the network");
m_status_bar->update_status(msg, m_is_canceled, 10, true);
if (m_isNetMode)
{
PrintHostJob upload_job(machine_url, machine_ip);
upload_job.upload_data.upload_path = upload_file_name;
upload_job.upload_data.post_action = PrintHostPostUploadAction::None;
upload_job.upload_data.source_path = output_path.string();
upload_job.is_3mf = qidi_3mf;
upload_job.upload_data.is_3mf = qidi_3mf;
start_to_send(std::move(upload_job));
}
else
@@ -966,7 +963,7 @@ void SendToPrinterDialog::on_ok(wxCommandEvent &event)
upload_job.upload_data.upload_path = upload_file_name;
upload_job.upload_data.post_action = PrintHostPostUploadAction::None;
upload_job.upload_data.source_path = output_path.string();
upload_job.is_3mf = qidi_3mf;
upload_job.upload_data.is_3mf = qidi_3mf;
start_to_send(std::move(upload_job));
}
// BOOST_LOG_TRIVIAL(info) << "print_job: on_ok to send";
@@ -1128,9 +1125,21 @@ void SendToPrinterDialog::start_to_send(PrintHostJob upload_job) {
cancel = m_is_canceled;
int gui_progress = progress.ultotal > 0 ? 100 * progress.ulnow / progress.ultotal : 0;
OctoPrint::progress_percentage = gui_progress / 100.f;
wxString msg = _L("Sending...");
bool is_undisplay = false;
m_status_bar->update_status(msg, is_undisplay, std::floor(10 + gui_progress * 0.9), true);
//y62
if(gui_progress < 100){
wxString msg = _L("Sending...");
bool is_undisplay = false;
m_status_bar->update_status(msg, is_undisplay, std::floor(10 + gui_progress * 0.9), true);
}
else{
std::vector<std::string> dot = {"..", "....", "......"};
for(int i = 0; i < 3; i++){
wxString msg = _L("Waiting for the printer's response") + dot[i];
bool is_undisplay = false;
m_status_bar->update_status(msg, is_undisplay, 100, true);
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
}
},
[this](wxString error) {
show_status(PrintDialogStatus::PrintStatusPublicUploadFiled);

View File

@@ -3596,7 +3596,7 @@ void GetBoxInfoDialog::generate_filament_id(GUI::Box_info& machine_filament_info
machine_filament_info.filament_id[i] = temp_filament_id;
}
if(machine_filament_info.slot_state.back() != 0)
{
std::string temp_ext_filament_id = filament_id;
temp_ext_filament_id = temp_ext_filament_id + "_" + std::to_string(machine_filament_info.filament_vendor.back());

View File

@@ -2193,7 +2193,7 @@ void TabPrint::build()
optgroup->append_single_option_line("vertical_shell_speed", "", 0);
optgroup->append_single_option_line("top_surface_speed", "", 0);
//y32
optgroup->append_single_option_line("enable_overhang_speed", "print-settings/slow-down-for-overhang");
optgroup->append_single_option_line("enable_overhang_speed", "print-settings/slow-down-for-overhang", 0);
Line line = { L("Overhang speed"), L("This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used") };
//y32
line.label_path = "print-settings/slow-down-for-overhang";