From 54f758055c27473f68bed3a114163799d39d45d0 Mon Sep 17 00:00:00 2001 From: "xun.zhang" Date: Mon, 7 Jul 2025 12:24:03 +0800 Subject: [PATCH] FIX: potential cli crash caused by missing params jira: NONE Signed-off-by: xun.zhang Change-Id: I1b61e44414118e40e421592649928664fdecf092 (cherry picked from commit 6deb3db25b7a7e4bc7a71d75f661b3f4b996d73f) --- src/OrcaSlicer.cpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index f4cf0d70cd..44c914cdfb 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -3168,17 +3168,31 @@ int CLI::run(int argc, char **argv) std::vector nozzle_flush_dataset(new_extruder_count, 0); { - std::vector& nozzle_flush_dataset_full = m_print_config.option("nozzle_flush_dataset",true)->values; - if (m_print_config.has("printer_extruder_variant")) { + std::vector nozzle_flush_dataset_full = m_print_config.option("nozzle_flush_dataset",true)->values; + if (m_print_config.has("printer_extruder_variant")) nozzle_flush_dataset_full.resize(m_print_config.option("printer_extruder_variant")->size(), 0); - } - auto extruders = m_print_config.option("extruder_type")->values; - auto volume_types = m_print_config.option("nozzle_volume_type")->values; // get volume type from 3mf + else + nozzle_flush_dataset_full.resize(1, 0); + + std::vector extruders; + if (m_print_config.has("extruder_type")) + extruders = m_print_config.option("extruder_type")->values; + else + extruders.resize(1,int(ExtruderType::etDirectDrive)); + + std::vector volume_types; + if (m_print_config.has("nozzle_volume_type")) + volume_types = m_print_config.option("nozzle_volume_type")->values; // get volume type from 3mf + else + volume_types.resize(1, int(NozzleVolumeType::nvtStandard)); + if(m_extra_config.has("nozzle_volume_type")) // get volume type from input volume_types = m_extra_config.option("nozzle_volume_type")->values; for (int eidx = 0; eidx < new_extruder_count; ++eidx) { - int index = m_print_config.get_index_for_extruder(eidx + 1, "printer_extruder_id", ExtruderType(extruders[eidx]), NozzleVolumeType(volume_types[eidx]), "printer_extruder_variant"); + int index = 0; + if (m_print_config.has("printer_extruder_id") && m_print_config.has("printer_extruder_variant")) + index = m_print_config.get_index_for_extruder(eidx + 1, "printer_extruder_id", ExtruderType(extruders[eidx]), NozzleVolumeType(volume_types[eidx]), "printer_extruder_variant"); nozzle_flush_dataset[eidx] = nozzle_flush_dataset_full[index]; } }