diff --git a/resources/profiles/Q Series/machine/Qidi Q2 0.4 nozzle.json b/resources/profiles/Q Series/machine/Qidi Q2 0.4 nozzle.json index cc104f5..e497e18 100644 --- a/resources/profiles/Q Series/machine/Qidi Q2 0.4 nozzle.json +++ b/resources/profiles/Q Series/machine/Qidi Q2 0.4 nozzle.json @@ -29,7 +29,7 @@ "machine_max_jerk_z": ["4"], "machine_max_speed_z": ["20"], "machine_pause_gcode": "M0", - "machine_start_gcode": "PRINT_START BED=[bed_temperature_initial_layer_single] HOTEND=[nozzle_temperature_initial_layer] CHAMBER=[chamber_temperatures] EXTRUDER=[initial_no_support_extruder]\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nM83\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperatures]\nG4 P3000\nT[initial_tool]\nG1 X108.000 Y1 F30000\nG0 Z[initial_layer_print_height] F600\n;G1 E3 F1800\nG90\nM83\nG0 X128 E8 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG91\nG1 X1 Z-0.300\nG1 X4\nG1 Z1 F1200\nG90\nM400\nG1 X108.000 Y2.5 F30000\nG0 Z[initial_layer_print_height] F600\nM83\nG0 X128 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG91\nG1 X1 Z-0.300\nG1 X4\nG1 Z1 F1200\nG90\nM400\nG1 Z1 F600", + "machine_start_gcode": "PRINT_START BED=[bed_temperature_initial_layer_single] HOTEND=[nozzle_temperature_initial_layer] CHAMBER=[chamber_temperatures] EXTRUDER=[initial_no_support_extruder]\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nM83\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperatures]\nG4 P3000\nT[initial_tool]\nG0 X130 Y1 F30000\nG0 Z10 F1200\nG4 P3000\nprobe samples=1 \nG91\nG0 Z5 F600\nG90\nG1 X108 Y1 F30000\nG91 \nG0 Z{initial_layer_print_height-5} F600\nG90\nG0 X128 E8 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG91\nG1 X1 Z{-initial_layer_print_height-0.1}\nG1 X4\nG1 Z1 F1200\nG90\nM400\nG1 X108 Y2.5 F30000\nG91\nG1 Z-0.7 F1200\nG90\nM83\nG0 X128 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG91\nG1 X1 Z{-initial_layer_print_height-0.1}\nG1 X4\nG1 Z1 F1200\nG90\nM400\nG1 Z1 F600", "machine_unload_filament_time": "35", "nozzle_diameter": ["0.4"], "nozzle_volume": ["125"], diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 611e76f..c5c5fa6 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3789,7 +3789,13 @@ namespace Skirt { inline std::string get_instance_name(const PrintObject* object, size_t inst_id) { auto obj_name = object->model_object()->name; // replace space in obj_name with '-' + //y71 std::replace(obj_name.begin(), obj_name.end(), ' ', '_'); + std::replace(obj_name.begin(), obj_name.end(), '#', '_'); + std::replace(obj_name.begin(), obj_name.end(), '*', '_'); + std::replace(obj_name.begin(), obj_name.end(), ':', '_'); + std::replace(obj_name.begin(), obj_name.end(), ';', '_'); + std::replace(obj_name.begin(), obj_name.end(), '\'', '_'); return (boost::format("%1%_id_%2%_copy_%3%") % obj_name % object->get_klipper_object_id() % inst_id).str(); } diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index c9103a4..3bf48d3 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -329,7 +329,7 @@ void AuFile::on_input_enter(wxCommandEvent &evt) auto m_valid_type = Valid; wxString info_line; - const char *unusable_symbols = "<>[]:/\\|?*\""; + const char *unusable_symbols = " #;\'<>:/\\|?*\""; const std::string unusable_suffix = PresetCollection::get_suffix_modified(); //"(modified)"; for (size_t i = 0; i < std::strlen(unusable_symbols); i++) { diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 7f6fe80..bc3bb57 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -736,9 +736,10 @@ void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, f } } - boost::trim(command); - boost::trim(parameters); - boost::trim(comment); + //y71 + // boost::trim(command); + // boost::trim(parameters); + // boost::trim(comment); ret.push_back({ command, parameters, comment }); } return ret; diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index 560e62c..f83cb59 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -296,7 +296,7 @@ void PrintJob::process() try { std::string mall_model_name = model_name->second; std::replace(mall_model_name.begin(), mall_model_name.end(), ' ', '_'); - const char *unusable_symbols = "<>[]:/\\|?*\" "; + const char *unusable_symbols = " #;\'<>:/\\|?*\""; for (const char *symbol = unusable_symbols; *symbol != '\0'; ++symbol) { std::replace(mall_model_name.begin(), mall_model_name.end(), *symbol, '_'); } std::regex pattern("_+"); diff --git a/src/slic3r/GUI/PhysicalPrinterDialog.cpp b/src/slic3r/GUI/PhysicalPrinterDialog.cpp index b132285..9f70761 100644 --- a/src/slic3r/GUI/PhysicalPrinterDialog.cpp +++ b/src/slic3r/GUI/PhysicalPrinterDialog.cpp @@ -312,7 +312,7 @@ bool PhysicalPrinterDialog::update_preset_input() { m_valid_type = Valid; wxString info_line; - const char *unusable_symbols = "<>[]:/\\|?*\""; + const char *unusable_symbols = "#;\'<>:/\\|?*\""; const std::string unusable_suffix = PresetCollection::get_suffix_modified(); //"(modified)"; for (size_t i = 0; i < std::strlen(unusable_symbols); i++) { diff --git a/src/slic3r/GUI/PhysicalPrinterDialog_1.cpp b/src/slic3r/GUI/PhysicalPrinterDialog_1.cpp index a24e51f..6377c7c 100644 --- a/src/slic3r/GUI/PhysicalPrinterDialog_1.cpp +++ b/src/slic3r/GUI/PhysicalPrinterDialog_1.cpp @@ -341,7 +341,7 @@ void PhysicalPrinterDialog::update_preset_input() { m_valid_type = Valid; wxString info_line; - const char *unusable_symbols = "<>[]:/\\|?*\""; + const char *unusable_symbols = " #;\'<>:/\\|?*\""; const std::string unusable_suffix = PresetCollection::get_suffix_modified(); //"(modified)"; for (size_t i = 0; i < std::strlen(unusable_symbols); i++) { diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index c532e44..97095af 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -233,7 +233,7 @@ bool Plater::has_illegal_filename_characters(const wxString& wxs_name) bool Plater::has_illegal_filename_characters(const std::string& name) { - const char* illegal_characters = "<>:/\\|?*\""; + const char* illegal_characters = " #;\'<>:/\\|?*\""; for (size_t i = 0; i < std::strlen(illegal_characters); i++) if (name.find_first_of(illegal_characters[i]) != std::string::npos) return true; @@ -248,7 +248,7 @@ bool Plater::has_illegal_filename_characters(const std::string& name) void Plater::show_illegal_characters_warning(wxWindow* parent) { - show_error(parent, _L("Invalid name, the following characters are not allowed:") + " <>:/\\|?*\"" +_L("(Including its escape characters)")); + show_error(parent, _L("Invalid name, the following characters are not allowed:") + " #;\'<>:/\\|?*\"" +_L("(Including its escape characters)")); } void Plater::mark_plate_toolbar_image_dirty() @@ -5960,6 +5960,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ DynamicPrintConfig config; Semver file_version; En3mfType en_3mf_file_type = En3mfType::From_QDS; + //y71 + std::string old_preset_name = wxGetApp().preset_bundle->printers.get_edited_preset().name; + { DynamicPrintConfig config_loaded; @@ -6220,6 +6223,15 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } + //y71 + bool has_different_settings_to_system = config.option("different_settings_to_system") ? true : false; + std::string qdt_diff_settings; + std::vector qdt_different_keys; + if(has_different_settings_to_system){ + std::string qdt_diff_settings = config.option("different_settings_to_system", true)->values[0]; + Slic3r::unescape_strings_cstyle(qdt_diff_settings, qdt_different_keys); + } + if (load_config) { if (!config.empty()) { Preset::normalize(config); @@ -6467,6 +6479,30 @@ std::vector Plater::priv::load_files(const std::vector& input_ } if (!silence) wxGetApp().app_config->update_config_dir(path.parent_path().string()); } + + //y71 + std::vector qdt_nozzle_sizes = { "0.2 nozzle", "0.4 nozzle", "0.6 nozzle", "0.8 nozzle" }; + std::string current_preset_name = wxGetApp().preset_bundle->printers.get_edited_preset().name; + std::string old_preset_nozzle_size, new_preset_nozzle_size; + for (std::string qdt_nozzle : qdt_nozzle_sizes) { + if (old_preset_name.find(qdt_nozzle) != std::string::npos) + old_preset_nozzle_size = qdt_nozzle; + if (current_preset_name.find(qdt_nozzle) != std::string::npos) + new_preset_nozzle_size = qdt_nozzle; + } + + if (old_preset_nozzle_size != new_preset_nozzle_size) { + size_t nozzle_pos = old_preset_name.find(old_preset_nozzle_size); + size_t nozzle_len = old_preset_nozzle_size.size(); + old_preset_name.replace(nozzle_pos, nozzle_len, new_preset_nozzle_size); + } + if (en_3mf_file_type != En3mfType::From_QDS) { + if(has_different_settings_to_system) + wxGetApp().get_tab(Preset::TYPE_PRINT)->cache_config_diff(qdt_different_keys); + wxGetApp().get_tab(Preset::TYPE_PRINTER)->select_preset(old_preset_name); + q->on_config_change(wxGetApp().preset_bundle->full_config()); + } + } else { // QDS: add plate data related logic PlateDataPtrs plate_data; @@ -10619,8 +10655,8 @@ wxString Plater::priv::get_export_gcode_filename(const wxString& extension, bool std::string plate_name = partplate_list.get_curr_plate()->get_plate_name(); // remove unsupported characters in filename - curr_project_name = from_u8(filter_characters(curr_project_name.ToUTF8().data(), "<>[]:/\\|?*\"")); - plate_name = filter_characters(plate_name, "<>[]:/\\|?*\""); + curr_project_name = from_u8(filter_characters(curr_project_name.ToUTF8().data(), " #;\'<>:/\\|?*\"")); + plate_name = filter_characters(plate_name, " #;\'<>:/\\|?*\""); if (!plate_name.empty()) plate_index_str = (boost::format("_%1%") % plate_name).str(); @@ -15427,7 +15463,7 @@ void Plater::export_gcode(bool prefer_removable) output_path = into_path(dlg.GetPath()); while (has_illegal_filename_characters(output_path.filename().string())) { show_error(this, _L("The provided file name is not valid.") + "\n" + - _L("The following characters are not allowed by a FAT file system:") + " <>:/\\|?*\""); + _L("The following characters are not allowed by a FAT file system:") + " #;\'<>:/\\|?*\""); dlg.SetFilename(from_path(output_path.filename())); if (dlg.ShowModal() == wxID_OK) output_path = into_path(dlg.GetPath()); diff --git a/src/slic3r/GUI/SavePresetDialog.cpp b/src/slic3r/GUI/SavePresetDialog.cpp index a9f1824..d05401d 100644 --- a/src/slic3r/GUI/SavePresetDialog.cpp +++ b/src/slic3r/GUI/SavePresetDialog.cpp @@ -185,7 +185,7 @@ void SavePresetDialog::Item::update() m_valid_type = Valid; wxString info_line; - const char *unusable_symbols = "<>[]:/\\|?*\""; + const char *unusable_symbols = " #;\'<>:/\\|?*\""; const std::string unusable_suffix = PresetCollection::get_suffix_modified(); //"(modified)"; for (size_t i = 0; i < std::strlen(unusable_symbols); i++) { diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 46411ec..a6af856 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -3437,7 +3437,7 @@ void SelectMachineDialog::on_rename_enter() auto m_valid_type = Valid; wxString info_line; - const char* unusable_symbols = "<>[]:/\\|?*\""; + const char* unusable_symbols = " #;\'<>:\\|?*\""; const std::string unusable_suffix = PresetCollection::get_suffix_modified(); //"(modified)"; for (size_t i = 0; i < std::strlen(unusable_symbols); i++) { @@ -4508,7 +4508,7 @@ void SelectMachineDialog::set_default() m_current_project_name = m_current_project_name.substr(0, m_current_project_name.size() - 6); //unsupported character filter - m_current_project_name = from_u8(filter_characters(m_current_project_name.ToUTF8().data(), "<>[]:/\\|?*\"")); + m_current_project_name = from_u8(filter_characters(m_current_project_name.ToUTF8().data(), " #;\'<>:\\|?*\"")); m_rename_text->SetLabelText(m_current_project_name); m_rename_normal_panel->Layout(); diff --git a/src/slic3r/GUI/SelectMachinePop.cpp b/src/slic3r/GUI/SelectMachinePop.cpp index 4bc44ea..21a7c46 100644 --- a/src/slic3r/GUI/SelectMachinePop.cpp +++ b/src/slic3r/GUI/SelectMachinePop.cpp @@ -930,7 +930,7 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e) wxString info_line; auto new_dev_name = m_textCtr->GetTextCtrl()->GetValue(); - const char * unusable_symbols = "<>[]:/\\|?*\""; + const char * unusable_symbols = " #;\'<>:/\\|?*\""; const std::string unusable_suffix = PresetCollection::get_suffix_modified(); for (size_t i = 0; i < std::strlen(unusable_symbols); i++) { diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index 50f04d5..f55c278 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -1710,7 +1710,7 @@ void SendMultiMachinePage::set_default() //unsupported character filter //y51 - m_current_project_name = from_u8(filter_characters(m_current_project_name.ToUTF8().data(), "<>[]:\\|?*\"")); + m_current_project_name = from_u8(filter_characters(m_current_project_name.ToUTF8().data(), " #;\'<>:\\|?*\"")); m_task_name->SetLabel(m_current_project_name); @@ -1747,7 +1747,7 @@ void SendMultiMachinePage::on_rename_enter() wxString info_line; //y51 - const char* unusable_symbols = "<>[]:\\|?*\""; + const char* unusable_symbols = " #;\'<>:\\|?*\""; const std::string unusable_suffix = PresetCollection::get_suffix_modified(); //"(modified)"; for (size_t i = 0; i < std::strlen(unusable_symbols); i++) { diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index 16e62a1..c032bd5 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -132,7 +132,7 @@ void SendToPrinterDialog::on_rename_enter() wxString info_line; //y51 - const char* unusable_symbols = "<>[]:\\|?*\""; + const char* unusable_symbols = " #;\'<>:\\|?*\""; const std::string unusable_suffix = PresetCollection::get_suffix_modified(); //"(modified)"; for (size_t i = 0; i < std::strlen(unusable_symbols); i++) { @@ -2151,7 +2151,7 @@ void SendToPrinterDialog::set_default() //unsupported character filter //y51 - m_current_project_name = from_u8(filter_characters(m_current_project_name.ToUTF8().data(), "<>[]:\\|?*\"")); + m_current_project_name = from_u8(filter_characters(m_current_project_name.ToUTF8().data(), " #;\'<>:\\|?*\"")); m_rename_text->SetLabelText(m_current_project_name); m_rename_normal_panel->Layout(); diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index 422ebed..01e9db0 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -2562,7 +2562,7 @@ void SyncAmsInfoDialog::set_default(bool hide_some) m_current_project_name = wxString::FromUTF8(file_name); // unsupported character filter - m_current_project_name = from_u8(filter_characters(m_current_project_name.ToUTF8().data(), "<>[]:/\\|?*\"")); + m_current_project_name = from_u8(filter_characters(m_current_project_name.ToUTF8().data(), " #;\'<>:/\\|?*\"")); // clear combobox m_list.clear(); diff --git a/src/slic3r/GUI/SyncBoxInfoDialog.cpp b/src/slic3r/GUI/SyncBoxInfoDialog.cpp index 1d67b32..a3f7474 100644 --- a/src/slic3r/GUI/SyncBoxInfoDialog.cpp +++ b/src/slic3r/GUI/SyncBoxInfoDialog.cpp @@ -2523,7 +2523,7 @@ void SyncBoxInfoDialog::set_default(bool hide_some) m_current_project_name = wxString::FromUTF8(file_name); // unsupported character filter - m_current_project_name = from_u8(filter_characters(m_current_project_name.ToUTF8().data(), "<>[]:/\\|?*\"")); + m_current_project_name = from_u8(filter_characters(m_current_project_name.ToUTF8().data(), " #;\'<>:/\\|?*\"")); // clear combobox m_list.clear();