From 095b5116ac8d9e227a8ec3ed9ca4576817adfca9 Mon Sep 17 00:00:00 2001 From: yw4z Date: Sat, 28 Feb 2026 19:19:04 +0300 Subject: [PATCH] Add option for hiding / showing gridlines (#10545) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Might be useful who want to use custom grid line system with textures. or a clean look ### PROBLEM / SCENARIOS • Custom made textures overlapping with grid system. so it might be confusing for user if want to use specific markings • User may found its a distracting item and wants a clean look ### SOLUTION added to view menu Screenshot-20251230192707 added to canvas menu Screenshot-20251230192717 Clean look without gridlines Screenshot-20250827144140 Screenshot-20250827144212 Few Examples with custom made textures / markings without gridlines Screenshot-20250827140008 Screenshot-20250827141904 --- src/libslic3r/AppConfig.cpp | 3 +++ src/slic3r/GUI/GLCanvas3D.cpp | 8 +++++++- src/slic3r/GUI/GUI_App.hpp | 3 +++ src/slic3r/GUI/MainFrame.cpp | 8 ++++++++ src/slic3r/GUI/PartPlate.cpp | 2 +- 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 46facd18de..f7ec7d7ffe 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -251,6 +251,9 @@ void AppConfig::set_defaults() if (get("show_3d_navigator").empty()) set_bool("show_3d_navigator", true); + if (get("show_plate_gridlines").empty()) + set_bool("show_plate_gridlines", true); + if (get("show_outline").empty()) set_bool("show_outline", false); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 2f11eef0c4..c764e1c39a 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -8637,7 +8637,13 @@ void GLCanvas3D::_render_canvas_toolbar() [this]{toggle_world_axes_visibility(false);} ); - // will add an option for gridlines in here + create_menu_item( "Gridlines", + m_canvas_type != ECanvasType::CanvasAssembleView, // not work on assembly + wxGetApp().show_plate_gridlines(), + [this]{wxGetApp().toggle_show_plate_gridlines();} + ); + + ImGui::Separator(); create_menu_item( "Labels", m_canvas_type == ECanvasType::CanvasView3D, // work only on prepare diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index c879b1e5bb..ae51add264 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -362,6 +362,9 @@ public: bool show_3d_navigator() const { return app_config->get_bool("show_3d_navigator"); } void toggle_show_3d_navigator() const { app_config->set_bool("show_3d_navigator", !show_3d_navigator()); } + bool show_plate_gridlines() const { return app_config->get_bool("show_plate_gridlines"); } + void toggle_show_plate_gridlines() const { app_config->set_bool("show_plate_gridlines", !show_plate_gridlines()); } + bool show_canvas_zoom_button() const { return app_config->get_bool("show_canvas_zoom_button"); } void toggle_canvas_zoom_button() const { app_config->set_bool("show_canvas_zoom_button", !show_canvas_zoom_button()); } diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 8e74eda926..9e7135dc77 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -2825,6 +2825,14 @@ void MainFrame::init_menubar_as_editor() this, [this]() { return m_tabpanel->GetSelection() == TabPosition::tp3DEditor || m_tabpanel->GetSelection() == TabPosition::tpPreview; }, [this]() { return wxGetApp().show_3d_navigator(); }, this); + append_menu_check_item(viewMenu, wxID_ANY, _L("Show Gridlines"), _L("Show Glidlines on plate"), + [this](wxCommandEvent&) { + wxGetApp().toggle_show_plate_gridlines(); + m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); + }, this, + [this]() { return m_tabpanel->GetSelection() == TabPosition::tp3DEditor || m_tabpanel->GetSelection() == TabPosition::tpPreview; }, + [this]() { return wxGetApp().show_plate_gridlines(); }, this); + append_menu_item( viewMenu, wxID_ANY, _L("Reset Window Layout"), _L("Reset to default window layout"), [this](wxCommandEvent&) { m_plater->reset_window_layout(); }, "", this, diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 33efc32507..6f697996f4 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -3241,7 +3241,7 @@ void PartPlate::render(const Transform3d& view_matrix, const Transform3d& projec shader->stop_using(); } - if (show_grid) + if (wxGetApp().show_plate_gridlines() && show_grid) render_grid(bottom); if (!bottom && m_selected && !force_background_color) {