From 41a2c85bfffa75be22e535517b03d7651672ac02 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 98cbcc0e548..ba336e9ee5c 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"); }