From 73e8cede5011f21ba01b61c6a4e767e1227d37b4 Mon Sep 17 00:00:00 2001 From: QIDI TECH <893239786@qq.com> Date: Fri, 20 Sep 2024 09:38:18 +0800 Subject: [PATCH] Add QIDI model and opptimize user avatars --- resources/model/QIDI.stl | Bin 0 -> 90784 bytes src/CMakeLists.txt | 2 +- src/libslic3r/GCode.cpp | 12 +++++++++ src/platform/msw/QIDIStudio-gcodeviewer.rc.in | 2 +- src/platform/msw/QIDIStudio.rc.in | 2 +- src/platform/osx/Info.plist.in | 2 +- src/slic3r/GUI/AboutDialog.cpp | 10 +++---- src/slic3r/GUI/GUI_App.cpp | 25 ------------------ src/slic3r/GUI/GUI_Factories.cpp | 2 +- src/slic3r/GUI/GUI_ObjectList.cpp | 3 +++ src/slic3r/GUI/MainFrame.cpp | 3 +++ src/slic3r/GUI/SelectMachine.cpp | 2 +- src/slic3r/GUI/wxExtensions.cpp | 9 +++---- src/slic3r/Utils/OctoPrint.cpp | 7 +++-- 14 files changed, 35 insertions(+), 46 deletions(-) create mode 100644 resources/model/QIDI.stl diff --git a/resources/model/QIDI.stl b/resources/model/QIDI.stl new file mode 100644 index 0000000000000000000000000000000000000000..df5534884b25ef3f64c0ff5ffd5672cb202e00b5 GIT binary patch literal 90784 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�x(jKogn#l?Rji_C^i=JoR?KSvv0KhZ;K+K>AAnHI!J3ll-Z)HVimOkQMHpiT@|gaV$

epRUA znA)!lV#XJv?S%nFpa-frFRMDWajad@xubEFM;iF6t9003s?bAk z_x~oe2dZSO^0F$uo>#p^X{-5uz;#-z2#8G^)!oE(s{&%e27Nd2{N+UNzS?a)g2Sld zn0n9|MCtBH-m^cok%WaFsN%d-Jxx90Uz*V=ziWdE!Jp}yQ)Pdm|BEA!RfEMUu0fyO z9xG)mUn6LQ!j8ut$e%G@y@OgM_g2N!&&433BNXx_jUK4tyj1C4_cWR#Z#SLW%Uw~G zu!?$I)t;s9(X^L2v zDcjXuhgGh#Xe)gOi|h9G=*X7>9!$_`y9QB)JieQ)dflT3syHvJN})dVbDFG;^x64* zaLl(UVoO_96{}q55?ulOaEGocI!ef|3RN6aKNo{YJT$~)VSj%iLNgTP+*=z%KE%c{QHo@KVTx?lS8 zHB}X>sIBipiYOM=ReiQG*Zv|`^}0tD$JEwm5ZLP;Jy6AYSrzuW a$8dCpL`MF{h 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 a%#G&SHHTmACKv7Qm%i&8^{DQ5>GJ>a1Ey^N literal 0 HcmV?d00001 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dbf0062..8ad7b43 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -253,7 +253,7 @@ else () set(MACOSX_BUNDLE_ICON_FILE Icon.icns) set(MACOSX_BUNDLE_BUNDLE_NAME "QIDI Studio") set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${SLIC3R_VERSION}) - set(MACOSX_BUNDLE_COPYRIGHT "Copyright(C) 2021-2023 Lunkuo All Rights Reserved") + set(MACOSX_BUNDLE_COPYRIGHT "Copyright(C) 2024 QIDI All Rights Reserved") endif() add_custom_command(TARGET QIDIStudio POST_BUILD COMMAND ln -sfn "${SLIC3R_RESOURCES_DIR}" "${BIN_RESOURCES_DIR}" diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 4c5676e..faea877 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3263,6 +3263,18 @@ GCode::LayerResult GCode::process_layer( // QDS int bed_temp = get_bed_temperature(first_extruder_id, false, print.config().curr_bed_type); gcode += m_writer.set_bed_temperature(bed_temp); + + //w32 + { + int min_chamber_temp = 0; + min_chamber_temp = m_config.chamber_temperatures.get_at(m_writer.extruders().front().id()); + for (const auto& extruder : m_writer.extruders()) + min_chamber_temp = std::min(min_chamber_temp, m_config.chamber_temperatures.get_at(extruder.id())); + if ( print.config().support_chamber_temp_control.value && min_chamber_temp > 0) { + gcode += m_writer.set_chamber_temperature(min_chamber_temp, false); + } + } + // Mark the temperature transition from 1st to 2nd layer to be finished. m_second_layer_things_done = true; } diff --git a/src/platform/msw/QIDIStudio-gcodeviewer.rc.in b/src/platform/msw/QIDIStudio-gcodeviewer.rc.in index b073620..3d77a36 100644 --- a/src/platform/msw/QIDIStudio-gcodeviewer.rc.in +++ b/src/platform/msw/QIDIStudio-gcodeviewer.rc.in @@ -12,7 +12,7 @@ PRODUCTVERSION @SLIC3R_VERSION@ VALUE "ProductName", "@SLIC3R_APP_NAME@ G-code Viewer" VALUE "ProductVersion", "@SLIC3R_BUILD_ID@" VALUE "InternalName", "@SLIC3R_APP_NAME@ G-code Viewer" - VALUE "LegalCopyright", "Copyright(C) 2021-2023 Lunkuo All Rights Reserved" + VALUE "LegalCopyright", "Copyright(C) 2024 QIDI All Rights Reserved" VALUE "OriginalFilename", "qidi-gcodeviewer.exe" } } diff --git a/src/platform/msw/QIDIStudio.rc.in b/src/platform/msw/QIDIStudio.rc.in index 440b8a7..93a9ad9 100644 --- a/src/platform/msw/QIDIStudio.rc.in +++ b/src/platform/msw/QIDIStudio.rc.in @@ -12,7 +12,7 @@ PRODUCTVERSION @SLIC3R_VERSION@ VALUE "ProductName", "@SLIC3R_APP_NAME@" VALUE "ProductVersion", "@SLIC3R_BUILD_ID@" VALUE "InternalName", "@SLIC3R_APP_NAME@" - VALUE "LegalCopyright", "Copyright(C) 2021-2023 Lunkuo All Rights Reserved" + VALUE "LegalCopyright", "Copyright(C) 2024 QIDI All Rights Reserved" VALUE "OriginalFilename", "qidi-studio.exe" } } diff --git a/src/platform/osx/Info.plist.in b/src/platform/osx/Info.plist.in index fe888ab..6c27992 100644 --- a/src/platform/osx/Info.plist.in +++ b/src/platform/osx/Info.plist.in @@ -5,7 +5,7 @@ CFBundleExecutable @SLIC3R_APP_KEY@ CFBundleGetInfoString - @SLIC3R_APP_NAME@ Copyright(C) 2021-2023 Lunkuo All Rights Reserved + @SLIC3R_APP_NAME@ Copyright(C) 2024 QIDI All Rights Reserved CFBundleIconFile images/QIDIStudio.icns CFBundleName diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index 1a6aeb3..4d98c58 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -242,7 +242,7 @@ AboutDialog::AboutDialog() //B // version { - vesizer->Add(0, FromDIP(165), 1, wxEXPAND, FromDIP(5)); + vesizer->Add(0, FromDIP(190), 1, wxEXPAND, FromDIP(5)); auto version_text = GUI_App::format_display_version(); #if QDT_INTERNAL_TESTING wxString versionText = QDT_INTERNAL_TESTING == 1 ? _L("Internal Version") : _L("Beta Version"); @@ -260,19 +260,19 @@ AboutDialog::AboutDialog() version_font.SetPointSize(FromDIP(16)); version->SetFont(version_font); version->SetForegroundColour(wxColour("#FFFFFD")); - version->SetBackgroundColour(wxColour("#4479FB")); + version->SetBackgroundColour(wxColour("#303ab2")); vesizer->Add(version, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, FromDIP(5)); #if QDT_INTERNAL_TESTING wxString plugin_version = wxString::Format("Plugin Version: %s", wxGetApp().getAgent() ? wxGetApp().getAgent()->get_version() : ""); wxStaticText *plugin_version_text = new wxStaticText(this, wxID_ANY, plugin_version, wxDefaultPosition, wxDefaultSize); plugin_version_text->SetForegroundColour(wxColour("#FFFFFE")); - plugin_version_text->SetBackgroundColour(wxColour("#4479FB")); + plugin_version_text->SetBackgroundColour(wxColour("#303ab2")); vesizer->Add(plugin_version_text, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, FromDIP(5)); wxString build_time = wxString::Format("Build Time: %s", std::string(SLIC3R_BUILD_TIME)); wxStaticText* build_time_text = new wxStaticText(this, wxID_ANY, build_time, wxDefaultPosition, wxDefaultSize); build_time_text->SetForegroundColour(wxColour("#FFFFFE")); - build_time_text->SetBackgroundColour(wxColour("#4479FB")); + build_time_text->SetBackgroundColour(wxColour("#303ab2")); vesizer->Add(build_time_text, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, FromDIP(5)); #endif vesizer->Add(0, 0, 1, wxEXPAND, FromDIP(5)); @@ -331,7 +331,7 @@ AboutDialog::AboutDialog() copyright_hor_sizer->Add(copyright_ver_sizer, 0, wxLEFT, FromDIP(20)); - wxStaticText *html_text = new wxStaticText(this, wxID_ANY, "Copyright(C) 2021-2024 Lunkuo All Rights Reserved", wxDefaultPosition, wxDefaultSize); + wxStaticText *html_text = new wxStaticText(this, wxID_ANY, "Copyright(C) 2024 QIDI All Rights Reserved", wxDefaultPosition, wxDefaultSize); html_text->SetForegroundColour(wxColour(107, 107, 107)); copyright_ver_sizer->Add(html_text, 0, wxALL , 0); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 0626021..8ae93b4 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -96,8 +96,6 @@ #include "Notebook.hpp" #include "Widgets/Label.hpp" #include "Widgets/ProgressDialog.hpp" -#include -#include //QDS: DailyTip and UserGuide Dialog #include "WebDownPluginDlg.hpp" @@ -3956,18 +3954,9 @@ void GUI_App::get_login_info() { m_user_name = ""; wxGetApp().app_config->set("user_token", ""); - wxGetApp().app_config->set("user_head_url", ""); - wxGetApp().app_config->set("user_head_name", ""); wxString user_head_path = (boost::filesystem::path(Slic3r::data_dir()) / "user" / head_name).make_preferred().string(); wxString strJS = wxString::Format("SetUserOffline()"); GUI::wxGetApp().run_script_left(strJS); - //y34 - std::ifstream file(user_head_path); - if (file.good()) - { - file.close(); - remove(user_head_path.c_str()); - } m_qidi_login = false; } else @@ -4003,22 +3992,8 @@ void GUI_App::get_login_info() } else { - std::string head_name = wxGetApp().app_config->get("user_head_name"); - //y34 - if (!head_name.empty()) - { - wxString user_head_path = (boost::filesystem::path(Slic3r::data_dir()) / "user" / head_name).make_preferred().string(); - std::ifstream file(user_head_path); - if (file.good()) - { - file.close(); - remove(user_head_path.c_str()); - } - } m_user_name = ""; wxGetApp().app_config->set("user_token", ""); - wxGetApp().app_config->set("user_head_url", ""); - wxGetApp().app_config->set("user_head_name", ""); wxString strJS = wxString::Format("SetUserOffline()"); GUI::wxGetApp().run_script_left(strJS); m_qidi_login = false; diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 4a069c6..cd50a3d 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -500,7 +500,7 @@ wxMenu* MenuFactory::append_submenu_add_generic(wxMenu* menu, ModelVolumeType ty //B if (type == ModelVolumeType::INVALID) { sub_menu->AppendSeparator(); - for (auto &item : { L("3DBenchy"), L("ksr FDMTest")}) { + for (auto &item : { L("QIDI"), L("3DBenchy"), L("ksr FDMTest")}) { append_menu_item( sub_menu, wxID_ANY, _(item), "", [type, item](wxCommandEvent &) { obj_list()->load_generic_subobject(item, type); }, "", menu); } diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 4af9110..d63dd71 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2106,6 +2106,9 @@ static TriangleMesh create_mesh(const std::string& type_name, const BoundingBoxf mesh.ReadSTLFile((Slic3r::resources_dir() + "/model/torus.stl").c_str(), true, nullptr); else if (type_name == "Rounded Rectangle") mesh.ReadSTLFile((Slic3r::resources_dir() + "/model/rounded_rectangle.stl").c_str(), true, nullptr); +//ZY3 + else if (type_name == "QIDI") + mesh.ReadSTLFile((Slic3r::resources_dir() + "/model/QIDI.stl").c_str(), true, nullptr); else if (type_name == "3DBenchy") mesh.ReadSTLFile((Slic3r::resources_dir() + "/model/3DBenchy.stl").c_str(), true, nullptr); else if (type_name == "ksr FDMTest") diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 61b5233..0fea8a2 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1950,6 +1950,9 @@ bool MainFrame::get_enable_print_status() { enable = false; } + //y37 + if(m_plater->only_gcode_mode()) + enable = false; enable = enable && !is_all_plates; } else if (m_print_select == eExportGcode) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 1e56c8b..44b5f38 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -1317,7 +1317,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater, wxString title) // wxString hyperlink_1 = wxString::Format(L"https://wiki.qidi3d.com/%s/software/qidi-studio/fluidd", region); // m_hyperlink = new wxHyperlinkCtrl(m_panel_prepare, wxID_ANY, _L("Click here if you can't connect to the printer"), hyperlink_1, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); wxString hyperlink_2 = wxString::Format(L"https://wiki.qidi3d.com/%s/software/qidi-studio/troubleshooting/connect-send-problem", region); - m_hyperlink = new wxHyperlinkCtrl(m_panel_prepare, wxID_ANY, _L("Click here if you failed to send the task"), hyperlink_2, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); + m_hyperlink = new wxHyperlinkCtrl(m_panel_prepare, wxID_ANY, _L("Click here if you failed to send the print job"), hyperlink_2, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); hyperlink_sizer->Add(m_hyperlink, 0, wxALIGN_CENTER | wxALL, 5); m_sizer_prepare->Add(hyperlink_sizer, 0, wxALIGN_CENTER | wxALL, 5); diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index cdd831e..5a2cc1d 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -492,12 +492,12 @@ wxBitmap create_scaled_bitmap_of_login(const std::string& bmp_name_in, Slic3r::GUI::wxGetApp().dark_mode(); // Try loading an SVG first, then PNG if SVG is not found: - wxBitmap* bmp; + wxBitmap* bmp{nullptr}; if(!bmp_name.empty()) bmp = cache.load_login_png(bmp_name, width, height, grayscale, resize ? win->FromDIP(10) * 0.1f : 0.f); else { - if(px_cnt > 50) + if (px_cnt > 50) bmp = cache.load_png("user_dark", width, height, grayscale, resize ? win->FromDIP(10) * 0.1f : 0.f); else { @@ -505,11 +505,8 @@ wxBitmap create_scaled_bitmap_of_login(const std::string& bmp_name_in, bmp = cache.load_png("user_dark_tiny", width, height, grayscale, resize ? win->FromDIP(10) * 0.1f : 0.f); } } - - if (bmp == nullptr) { - // Neither SVG nor PNG has been found, raise error + if (bmp == nullptr) throw Slic3r::RuntimeError("Could not load bitmap: " + bmp_name); - } return *bmp; } diff --git a/src/slic3r/Utils/OctoPrint.cpp b/src/slic3r/Utils/OctoPrint.cpp index 2f6123a..a81865c 100644 --- a/src/slic3r/Utils/OctoPrint.cpp +++ b/src/slic3r/Utils/OctoPrint.cpp @@ -175,10 +175,9 @@ wxString OctoPrint::get_test_ok_msg () const wxString OctoPrint::get_test_failed_msg (wxString &msg) const { - return GUI::from_u8((boost::format("%s: %s\n\n%s") - % _utf8(L("Could not connect to OctoPrint")) - % std::string(msg.ToUTF8()) - % _utf8(L("Note: OctoPrint version at least 1.1.0 is required."))).str()); + return GUI::from_u8((boost::format("%s: %s\n") + % _utf8(L("Could not connect to Moonraker")) + % std::string(msg.ToUTF8())).str()); } bool OctoPrint::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn) const