From 428b4c0f5667747fd9bbe15fd348cb4694e60785 Mon Sep 17 00:00:00 2001 From: remi durand Date: Fri, 18 Jun 2021 01:09:46 +0200 Subject: [PATCH] don't emit warning when generate calibration supermerill/SuperSlicer#1325 --- src/libslic3r/Print.cpp | 2 +- src/slic3r/GUI/CalibrationBedDialog.cpp | 4 +++- src/slic3r/GUI/CalibrationBridgeDialog.cpp | 3 +++ src/slic3r/GUI/CalibrationCubeDialog.cpp | 3 +++ src/slic3r/GUI/CalibrationFlowDialog.cpp | 3 +++ src/slic3r/GUI/CalibrationOverBridgeDialog.cpp | 3 +++ src/slic3r/GUI/CalibrationRetractionDialog.cpp | 3 +++ src/slic3r/GUI/CalibrationTempDialog.cpp | 3 +++ src/slic3r/GUI/GLCanvas3D.cpp | 3 +++ src/slic3r/GUI/GLCanvas3D.hpp | 5 ++++- 10 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index ba868f95e..10cbe401b 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1276,7 +1276,7 @@ static inline bool sequential_print_horizontal_clearance_valid(const Print &prin Polygons convex_hulls_other; std::map map_model_object_to_convex_hull; for (const PrintObject *print_object : print.objects()) { - double dist_grow = PrintConfig::min_object_distance(&print_object->config()); + double dist_grow = PrintConfig::min_object_distance(&print.full_print_config());// &print_object->config()); assert(! print_object->model_object()->instances.empty()); assert(! print_object->instances().empty()); ObjectID model_object_id = print_object->model_object()->id(); diff --git a/src/slic3r/GUI/CalibrationBedDialog.cpp b/src/slic3r/GUI/CalibrationBedDialog.cpp index 88bed058f..781ad2bb6 100644 --- a/src/slic3r/GUI/CalibrationBedDialog.cpp +++ b/src/slic3r/GUI/CalibrationBedDialog.cpp @@ -3,6 +3,7 @@ #include "libslic3r/Model.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/AppConfig.hpp" +#include "GLCanvas3D.hpp" #include "GUI.hpp" #include "GUI_ObjectList.hpp" #include "Plater.hpp" @@ -36,12 +37,12 @@ void CalibrationBedDialog::create_geometry(wxCommandEvent& event_args) { if (!plat->new_project(L("First layer calibration"))) return; + GLCanvas3D::set_warning_freeze(true); bool autocenter = gui_app->app_config->get("autocenter") == "1"; if(autocenter) { //disable aut-ocenter for this calibration. gui_app->app_config->set("autocenter", "0"); } - std::vector objs_idx = plat->load_files(std::vector{ Slic3r::resources_dir()+"/calibration/bed_leveling/patch.amf", Slic3r::resources_dir()+"/calibration/bed_leveling/patch.amf", @@ -134,6 +135,7 @@ void CalibrationBedDialog::create_geometry(wxCommandEvent& event_args) { } //update plater + GLCanvas3D::set_warning_freeze(false); this->gui_app->get_tab(Preset::TYPE_PRINT)->load_config(new_print_config); plat->on_config_change(new_print_config); plat->changed_objects(objs_idx); diff --git a/src/slic3r/GUI/CalibrationBridgeDialog.cpp b/src/slic3r/GUI/CalibrationBridgeDialog.cpp index 5e527e06a..0689c8bb3 100644 --- a/src/slic3r/GUI/CalibrationBridgeDialog.cpp +++ b/src/slic3r/GUI/CalibrationBridgeDialog.cpp @@ -4,6 +4,7 @@ #include "libslic3r/Utils.hpp" #include "libslic3r/AppConfig.hpp" #include "Jobs/ArrangeJob.hpp" +#include "GLCanvas3D.hpp" #include "GUI.hpp" #include "GUI_ObjectList.hpp" #include "Plater.hpp" @@ -56,6 +57,7 @@ void CalibrationBridgeDialog::create_geometry(std::string setting_to_test, bool if (!plat->new_project(L("Bridge calibration"))) return; + GLCanvas3D::set_warning_freeze(true); bool autocenter = gui_app->app_config->get("autocenter") == "1"; if (autocenter) { //disable auto-center for this calibration. @@ -143,6 +145,7 @@ void CalibrationBridgeDialog::create_geometry(std::string setting_to_test, bool } //update plater + GLCanvas3D::set_warning_freeze(false); this->gui_app->get_tab(Preset::TYPE_PRINT)->load_config(new_print_config); plat->on_config_change(new_print_config); plat->changed_objects(objs_idx); diff --git a/src/slic3r/GUI/CalibrationCubeDialog.cpp b/src/slic3r/GUI/CalibrationCubeDialog.cpp index 9595ed67c..b5b737527 100644 --- a/src/slic3r/GUI/CalibrationCubeDialog.cpp +++ b/src/slic3r/GUI/CalibrationCubeDialog.cpp @@ -2,6 +2,7 @@ #include "I18N.hpp" #include "libslic3r/Model.hpp" #include "libslic3r/Utils.hpp" +#include "GLCanvas3D.hpp" #include "GUI.hpp" #include "GUI_ObjectList.hpp" #include "Plater.hpp" @@ -60,6 +61,7 @@ void CalibrationCubeDialog::create_geometry(std::string calibration_path) { if (!plat->new_project(L("Calibration cube"))) return; + GLCanvas3D::set_warning_freeze(true); std::vector objs_idx = plat->load_files(std::vector{ Slic3r::resources_dir()+"/calibration/cube/"+ calibration_path}, true, false, false); @@ -103,6 +105,7 @@ void CalibrationCubeDialog::create_geometry(std::string calibration_path) { } //update plater + GLCanvas3D::set_warning_freeze(false); plat->changed_objects(objs_idx); plat->is_preview_shown(); //update everything, easier to code. diff --git a/src/slic3r/GUI/CalibrationFlowDialog.cpp b/src/slic3r/GUI/CalibrationFlowDialog.cpp index 7233662e7..9cfe37de9 100644 --- a/src/slic3r/GUI/CalibrationFlowDialog.cpp +++ b/src/slic3r/GUI/CalibrationFlowDialog.cpp @@ -4,6 +4,7 @@ #include "libslic3r/Utils.hpp" #include "libslic3r/AppConfig.hpp" #include "Jobs/ArrangeJob.hpp" +#include "GLCanvas3D.hpp" #include "GUI.hpp" #include "GUI_ObjectList.hpp" #include "Plater.hpp" @@ -41,6 +42,7 @@ void CalibrationFlowDialog::create_geometry(float start, float delta) { if (!plat->new_project(L("Flow calibration"))) return; + GLCanvas3D::set_warning_freeze(true); bool autocenter = gui_app->app_config->get("autocenter") == "1"; if (autocenter) { //disable auto-center for this calibration. @@ -159,6 +161,7 @@ void CalibrationFlowDialog::create_geometry(float start, float delta) { } //update plater + GLCanvas3D::set_warning_freeze(false); this->gui_app->get_tab(Preset::TYPE_PRINT)->load_config(new_print_config); plat->on_config_change(new_print_config); plat->changed_objects(objs_idx); diff --git a/src/slic3r/GUI/CalibrationOverBridgeDialog.cpp b/src/slic3r/GUI/CalibrationOverBridgeDialog.cpp index 6a7c9e74c..7f2be5240 100644 --- a/src/slic3r/GUI/CalibrationOverBridgeDialog.cpp +++ b/src/slic3r/GUI/CalibrationOverBridgeDialog.cpp @@ -4,6 +4,7 @@ #include "libslic3r/Utils.hpp" #include "libslic3r/AppConfig.hpp" #include "Jobs/ArrangeJob.hpp" +#include "GLCanvas3D.hpp" #include "GUI.hpp" #include "GUI_ObjectList.hpp" #include "Plater.hpp" @@ -46,6 +47,7 @@ void CalibrationOverBridgeDialog::create_geometry(bool over_bridge) { if (!plat->new_project(L("Over-bridge calibration"))) return; + GLCanvas3D::set_warning_freeze(true); bool autocenter = gui_app->app_config->get("autocenter") == "1"; if (autocenter) { //disable aut-ocenter for this calibration. @@ -135,6 +137,7 @@ void CalibrationOverBridgeDialog::create_geometry(bool over_bridge) { } //update plater + GLCanvas3D::set_warning_freeze(false); this->gui_app->get_tab(Preset::TYPE_PRINT)->load_config(new_print_config); plat->on_config_change(new_print_config); plat->changed_objects(objs_idx); diff --git a/src/slic3r/GUI/CalibrationRetractionDialog.cpp b/src/slic3r/GUI/CalibrationRetractionDialog.cpp index 3f83cc084..71e111a75 100644 --- a/src/slic3r/GUI/CalibrationRetractionDialog.cpp +++ b/src/slic3r/GUI/CalibrationRetractionDialog.cpp @@ -4,6 +4,7 @@ #include "libslic3r/Utils.hpp" #include "libslic3r/AppConfig.hpp" #include "Jobs/ArrangeJob.hpp" +#include "GLCanvas3D.hpp" #include "GUI.hpp" #include "GUI_ObjectList.hpp" #include "Plater.hpp" @@ -104,6 +105,7 @@ void CalibrationRetractionDialog::create_geometry(wxCommandEvent& event_args) { if (!plat->new_project(L("Retraction calibration"))) return; + GLCanvas3D::set_warning_freeze(true); bool autocenter = gui_app->app_config->get("autocenter") == "1"; if (autocenter) { //disable aut-ocenter for this calibration. @@ -254,6 +256,7 @@ void CalibrationRetractionDialog::create_geometry(wxCommandEvent& event_args) { } //update plater + GLCanvas3D::set_warning_freeze(false); plat->changed_objects(objs_idx); //if (plat->printer_technology() == ptFFF) //plat->fff_print().full_print_config().apply(plat->config()); diff --git a/src/slic3r/GUI/CalibrationTempDialog.cpp b/src/slic3r/GUI/CalibrationTempDialog.cpp index f1525a586..3ff38e3eb 100644 --- a/src/slic3r/GUI/CalibrationTempDialog.cpp +++ b/src/slic3r/GUI/CalibrationTempDialog.cpp @@ -4,6 +4,7 @@ #include "libslic3r/CustomGCode.hpp" #include "libslic3r/Model.hpp" #include "libslic3r/AppConfig.hpp" +#include "GLCanvas3D.hpp" #include "GUI.hpp" #include "GUI_ObjectList.hpp" #include "Plater.hpp" @@ -59,6 +60,7 @@ void CalibrationTempDialog::create_geometry(wxCommandEvent& event_args) { if (!plat->new_project(L("Temperature calibration"))) return; + GLCanvas3D::set_warning_freeze(true); std::vector objs_idx = plat->load_files(std::vector{ Slic3r::resources_dir()+"/calibration/filament_temp/Smart_compact_temperature_calibration_item.amf"}, true, false, false); @@ -165,6 +167,7 @@ void CalibrationTempDialog::create_geometry(wxCommandEvent& event_args) { model.objects[objs_idx[0]]->config.set_key_value("top_fill_pattern", new ConfigOptionEnum(ipRectilinearWGapFill)); //update plater + GLCanvas3D::set_warning_freeze(false); this->gui_app->get_tab(Preset::TYPE_PRINT)->load_config(new_print_config); plat->on_config_change(new_print_config); //this->gui_app->get_tab(Preset::TYPE_PRINTER)->load_config(new_printer_config); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8cf055446..d61c0b118 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -627,6 +627,9 @@ GLCanvas3D::WarningTexture::WarningTexture() void GLCanvas3D::WarningTexture::activate(WarningTexture::Warning warning, bool state, const GLCanvas3D& canvas, std::string str_override) { + if (m_freeze) + return; + // Since we have NotificationsManager.hpp the warning textures are no loger needed. // However i have left the infrastructure here and only commented the rendering. // The plater warning / error notifications are added and closed from here. diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 1d3f4ac40..053470432 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -323,6 +323,7 @@ class GLCanvas3D // function used to get an information for rescaling of the warning void msw_rescale(const GLCanvas3D& canvas); + inline static bool m_freeze = false; private: static const unsigned char Background_Color[3]; static const unsigned char Opacity; @@ -332,7 +333,7 @@ class GLCanvas3D // information for rescaling of the warning legend std::string m_msg_text = ""; - bool m_is_colored_red{false}; + bool m_is_colored_red{ false }; // Information about which warnings are currently active. std::vector m_warnings; @@ -432,6 +433,8 @@ public: bool enable_rotation = false; }; + static void set_warning_freeze(bool freeze) { WarningTexture::m_freeze = freeze; } + private: wxGLCanvas* m_canvas; wxGLContext* m_context;