From 29f4e667159a45bfa6a2b1e7d4ae2f2f12d81a98 Mon Sep 17 00:00:00 2001 From: Rodrigo Faselli <162915171+RF47@users.noreply.github.com> Date: Thu, 18 Dec 2025 13:55:19 -0300 Subject: [PATCH] Line type by default for single extruder single material (#11397) * line type by default single extruder * Defautl to color print if use multicolor * Update condition for setting view type in GCodeViewer * Refine default view type selection in GCodeViewer Improves logic for selecting the default view type based on nozzle and filament preset counts. Now selects 'Summary' for multiple nozzles, 'ColorPrint' for single nozzle with multiple filaments, and 'FeatureType' otherwise. * Refactor multimaterial detection in GCodeViewer Introduced a 'multimaterial' boolean to clarify logic for detecting multiple filament presets. This improves readability and maintains consistent behavior when setting the view type based on extruder and filament count. --- src/slic3r/GUI/GCodeViewer.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 98cbcc0e54..ba336e9ee5 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -870,15 +870,23 @@ void GCodeViewer::init(ConfigOptionMode mode, PresetBundle* preset_bundle) if (preset_bundle) m_nozzle_nums = preset_bundle->get_printer_extruder_count(); + bool multimaterial = preset_bundle->filament_presets.empty() ? 0 : preset_bundle->filament_presets.size() > 1; // set to color print by default if use multi extruders if (m_nozzle_nums > 1) { - m_view_type_sel = std::distance(view_type_items.begin(),std::find(view_type_items.begin(), view_type_items.end(), EViewType::Summary)); + m_view_type_sel = std::distance(view_type_items.begin(), + std::find(view_type_items.begin(), view_type_items.end(), EViewType::Summary)); set_view_type(EViewType::Summary); - } else { - m_view_type_sel = std::distance(view_type_items.begin(),std::find(view_type_items.begin(), view_type_items.end(), EViewType::ColorPrint)); + } else if (multimaterial) { + m_view_type_sel = std::distance(view_type_items.begin(), + std::find(view_type_items.begin(), view_type_items.end(), EViewType::ColorPrint)); set_view_type(EViewType::ColorPrint); + } else { + m_view_type_sel = std::distance(view_type_items.begin(), + std::find(view_type_items.begin(), view_type_items.end(), EViewType::FeatureType)); + set_view_type(EViewType::FeatureType); } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": finished"); }