From 34696f5651635fa85ec723b591f0bfe7fd377b86 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 6 Oct 2026 03:44:15 +0800 Subject: [PATCH] Name the Design canvas flag after its role, not the axes it once moved --- src/slic3r/GUI/CAD/DesignCanvas.cpp | 2 +- src/slic3r/GUI/GLCanvas3D.cpp | 10 +++++----- src/slic3r/GUI/GLCanvas3D.hpp | 14 ++++++++------ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/CAD/DesignCanvas.cpp b/src/slic3r/GUI/CAD/DesignCanvas.cpp index e1718f05f0..d2c78ed9d7 100644 --- a/src/slic3r/GUI/CAD/DesignCanvas.cpp +++ b/src/slic3r/GUI/CAD/DesignCanvas.cpp @@ -92,7 +92,7 @@ DesignCanvas::DesignCanvas(wxWindow* parent) m_canvas->enable_plate_chrome(false); m_canvas->enable_labels(false); m_canvas->enable_sinking_contours(false); // they would be sliced from the plater's meshes - m_canvas->set_axes_at_bed_center(true); // triad at bed centre = modeling origin + m_canvas->set_design_canvas(true); // home-position bed, triad and CAD grid at the modeling origin m_canvas->set_design_sketch_tool(&m_sketch_tool); m_sketch_tool.on_commit = [this](const SketchProfile& prof, const SketchPlane& pl) { diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 63ff5dcdbd..46ef8efe0b 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2395,7 +2395,7 @@ void GLCanvas3D::_render_scene(const Camera& camera, const Size& cnv_size) } else if (gizmo_type == GLGizmosManager::BrimEars && !camera.is_looking_downward()) show_grid = false; - if (m_axes_at_bed_center) + if (m_design_canvas) // Design tab: the plate grid is generated from the plate's front-left corner, so it // floats mid-cell under the modeling-origin triad. Suppress it here; a CAD grid centred // on the origin is rendered in its place (see _render_cad_grid). @@ -2411,7 +2411,7 @@ void GLCanvas3D::_render_scene(const Camera& camera, const Size& cnv_size) m_frame_profiler.mark("bed"); if (show_bed) //BBS: add outline logic _render_platelist(camera.get_view_matrix(), camera.get_projection_matrix(), !camera.is_looking_downward(), only_current, only_body, hover_id, true, show_grid); - if (m_axes_at_bed_center && show_bed) + if (m_design_canvas && show_bed) // Design tab: replace the plate's corner-origin grid with the origin-centred CAD grid. _render_cad_grid(camera.get_view_matrix(), camera.get_projection_matrix()); m_frame_profiler.mark("plates"); @@ -8254,7 +8254,7 @@ void GLCanvas3D::_render_bed(const Transform3d& view_matrix, const Transform3d& */ //bool show_texture = true; //BBS set axes mode - if (m_axes_at_bed_center) { + if (m_design_canvas) { // Design tab: triad at the bed centre = modeling origin (set every frame because // set_shape/set_axes_mode otherwise reset it to the bed corner). const Vec2d bc = m_bed.build_volume().bed_center(); @@ -8271,7 +8271,7 @@ void GLCanvas3D::_render_platelist(const Transform3d& view_matrix, const Transfo // Design tab: its bed stays at the printer bed's home whichever plate is current, so the // current plate's exclude areas are moved from that plate onto it. PartPlate* curr_plate = plate_list.get_curr_plate(); - const Transform3d plate_view_matrix = m_axes_at_bed_center && curr_plate != nullptr ? + const Transform3d plate_view_matrix = m_design_canvas && curr_plate != nullptr ? Transform3d(view_matrix * Geometry::translation_transform(-curr_plate->get_origin())) : view_matrix; plate_list.render(plate_view_matrix, projection_matrix, bottom, only_current, only_body, hover_id, render_cali, show_grid, !m_plate_chrome_enabled); } @@ -8280,7 +8280,7 @@ BoundingBoxf3 GLCanvas3D::_current_plate_box() const { // Design tab: its own bed stands in for the current plate (see _render_platelist). const BuildVolume& build_volume = m_bed.build_volume(); - if (m_axes_at_bed_center && build_volume.valid()) { + if (m_design_canvas && build_volume.valid()) { // Flat at z = 0 like the plate's own box. Merged, as PartPlate builds it: the min/max // constructor leaves a flat box undefined. const BoundingBoxf bb = build_volume.bounding_volume2d(); diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 070db6771b..74c11860c3 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -604,9 +604,11 @@ private: GLToolbar* m_collapse_toolbar{nullptr}; std::function m_collapse_side; bool m_plate_chrome_enabled{true}; - // Design tab: render the world-axis triad at the bed centre (= modeling origin) instead of - // the bed corner. Default false preserves the main editor's corner triad. - bool m_axes_at_bed_center{false}; + // This canvas is the Design tab's. Its bed stays at the printer bed's home whichever plate is + // current, with the world-axis triad and a CAD grid at the bed centre (= modeling origin) in + // place of the corner triad and the plate grid, and the plate data it reads (exclude areas, + // the current plate's box) moved onto that bed. Default false leaves the editor tabs untouched. + bool m_design_canvas{false}; // Design tab: draw the printer bed and its plate grid at all. Default true, so the // main editor is untouched; the Design tab lets the user hide it to model without a bed. bool m_show_bed{true}; @@ -1025,7 +1027,7 @@ public: // initialized, which loads the toolbar's background. void set_collapse_toolbar(GLToolbar* toolbar, std::function side); void enable_plate_chrome(bool enable); - void set_axes_at_bed_center(bool b) { m_axes_at_bed_center = b; } + void set_design_canvas(bool b) { m_design_canvas = b; } void set_show_bed(bool b) { m_show_bed = b; } bool get_show_bed() const { return m_show_bed; } void enable_sinking_contours(bool enable) { m_sinking_contours_enabled = enable; } @@ -1444,8 +1446,8 @@ private: // The current plate's box (XY, at z = 0); in the Design tab, its own bed's. BoundingBoxf3 _current_plate_box() const; // Design tab: draw the CAD grid (minor 10 mm + major 50 mm) in place of the plate's - // corner-origin grid when the axes sit at the bed centre (modeling origin). Rebuilds its - // GLModels lazily, only when the bed shape changed. + // corner-origin grid, centred on the modeling origin. Rebuilds its GLModels lazily, only + // when the bed shape changed. void _render_cad_grid(const Transform3d& view_matrix, const Transform3d& projection_matrix); //BBS: add outline drawing logic void _render_objects(GLVolumeCollection::ERenderType type, bool with_outline = true);