From 8ce31ed7e147fd9c450da175ea6e843ae5468015 Mon Sep 17 00:00:00 2001 From: wjyLearn <93930815+wjyLearn@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:02:34 +0800 Subject: [PATCH] fix some bug --- src/libslic3r/Format/qds_3mf.cpp | 19 ++++++++++++++++++- src/libslic3r/GCode/GCodeEditor.cpp | 2 +- src/slic3r/GUI/GUI_App.cpp | 2 +- src/slic3r/GUI/PartPlate.cpp | 6 ++++++ src/slic3r/GUI/Plater.cpp | 14 ++++++++++++++ src/slic3r/GUI/SelectMachine.cpp | 2 +- src/slic3r/GUI/SendMultiMachinePage.cpp | 4 ++-- src/slic3r/GUI/SendToPrinter.cpp | 4 ++-- 8 files changed, 45 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Format/qds_3mf.cpp b/src/libslic3r/Format/qds_3mf.cpp index 945b2c9..f78a946 100644 --- a/src/libslic3r/Format/qds_3mf.cpp +++ b/src/libslic3r/Format/qds_3mf.cpp @@ -7972,6 +7972,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) stream << "\"/>\n"; } + //y74 + int print_id = 0; for (auto it = plate_data->objects_and_instances.begin(); it != plate_data->objects_and_instances.end(); it++) { int obj_id = it->first; @@ -8003,9 +8005,24 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) identify_id = inst->id().id; bool skipped = std::find(plate_data->skipped_objects.begin(), plate_data->skipped_objects.end(), identify_id) != plate_data->skipped_objects.end(); - stream << " <" << OBJECT_TAG << " " << IDENTIFYID_ATTR << "=\"" << std::to_string(identify_id) << "\" " << NAME_ATTR << "=\"" << xml_escape(obj->name) + + auto obj_name = obj->name; + // replace space in obj_name with '-' + //y74 + 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(), '\'', '_'); + + obj_name = (boost::format("%1%_id_%2%_copy_%3%") % obj_name % print_id % inst_id).str(); + + stream << " <" << OBJECT_TAG << " " << IDENTIFYID_ATTR << "=\"" << std::to_string(identify_id) << "\" " << NAME_ATTR << "=\"" << xml_escape(obj_name) << "\" " << SKIPPED_ATTR << "=\"" << (skipped ? "true" : "false") << "\" />\n"; + + print_id++; } for (auto it = plate_data->slice_filaments_info.begin(); it != plate_data->slice_filaments_info.end(); it++) diff --git a/src/libslic3r/GCode/GCodeEditor.cpp b/src/libslic3r/GCode/GCodeEditor.cpp index b6a75aa..d330f8f 100644 --- a/src/libslic3r/GCode/GCodeEditor.cpp +++ b/src/libslic3r/GCode/GCodeEditor.cpp @@ -295,7 +295,7 @@ std::vector GCodeEditor::parse_layer_gcode( const active_speed_modifier = size_t(-1); } // y71 - else if (boost::starts_with(sline, "TOOL_CHANGE")) { + else if (boost::starts_with(sline, "TOOL_CHANGE_START")) { ; } //y72 diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 0d97f91..925dfed 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -4375,8 +4375,8 @@ bool GUI_App::is_user_login() if (m_agent) { return m_agent->is_user_login(); } - return false; #endif + return false; } diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 38956b2..c51ba6b 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -3931,6 +3931,12 @@ void PartPlateList::set_default_wipe_tower_pos_for_plate(int plate_idx, bool ini } } + //y74 + if( x < plate_bbox_x_max_local_coord * 0.8) + x = plate_bbox_x_max_local_coord * 0.8; + if ( y < plate_bbox_y_max_local_coord * 0.8) + y = plate_bbox_y_max_local_coord * 0.8; + ConfigOptionFloat wt_x_opt(x); ConfigOptionFloat wt_y_opt(y); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 571deeb..b942a48 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -15760,6 +15760,20 @@ void Plater::export_gcode(bool prefer_removable) ); if (dlg.ShowModal() == wxID_OK) { output_path = into_path(dlg.GetPath()); + delete_file_name_redundant_suffix(output_path, L".gcode"); + if (boost::iends_with(output_path.string(), ".gcode")) { + std::wstring temp_path = output_path.wstring(); + temp_path = temp_path.substr(0, temp_path.size() - 6); + output_path = temp_path + L".gcode"; + } + else if (boost::iends_with(output_path.string(), ".gcode.gcode")) {//for mac + std::wstring temp_path = output_path.wstring(); + temp_path = temp_path.substr(0, temp_path.size() - 16); + output_path = temp_path + L".gcode"; + } + else if (!boost::iends_with(output_path.string(), ".gcode")) { + output_path = output_path.replace_extension(".gcode"); + } 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:") + "#\'<>:\\|?*\""); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 825073c..81c7f01 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -3459,7 +3459,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++) { diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index 68b7870..3b31b4d 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -1715,7 +1715,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); @@ -1752,7 +1752,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 b7e0d44..c77ad3d 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -158,7 +158,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++) { @@ -2010,7 +2010,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();