From cf6077fe7d05077b785ebde80d0388bb18c4b4e2 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Thu, 30 Mar 2023 19:43:40 +0800 Subject: [PATCH] FIX: CLI: fix the no-check not work issue 1. no-check not work 2. refine the progress updating logic Change-Id: I8acf18d8ab8958310fa3375de50cc9692b3408c1 --- src/BambuStudio.cpp | 72 ++++++++++++++++++++++++++--------- src/libslic3r/PrintConfig.cpp | 2 - 2 files changed, 55 insertions(+), 19 deletions(-) diff --git a/src/BambuStudio.cpp b/src/BambuStudio.cpp index 5d71e39af..5f11dd9ac 100644 --- a/src/BambuStudio.cpp +++ b/src/BambuStudio.cpp @@ -231,24 +231,26 @@ typedef struct _cli_callback_mgr { lck.unlock(); return; } + int old_total_progress = m_total_progress; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": percent="<("slice"); if (slice_option) plate_to_slice = slice_option->value; + ConfigOptionBool* normative_check_option = m_config.option("normative_check"); if (normative_check_option) normative_check = normative_check_option->value; + ConfigOptionBool* uptodate_option = m_config.option("uptodate"); if (uptodate_option) up_config_to_date = uptodate_option->value; + + ConfigOptionString* pipe_option = m_config.option("pipe"); + if (pipe_option) { + pipe_name = pipe_option->value; + BOOST_LOG_TRIVIAL(info) << boost::format("Will use pipe %1%")%pipe_name; +#if defined(__linux__) || defined(__LINUX__) + g_cli_callback_mgr.start(pipe_name); +#endif + } + /*for (const std::string& file : m_input_files) if (is_gcode_file(file) && boost::filesystem::exists(file)) { start_as_gcodeviewer = true; @@ -1368,6 +1383,13 @@ int CLI::run(int argc, char **argv) arrange_cfg.min_obj_distance = scaled(min_object_distance(m_print_config)); BOOST_LOG_TRIVIAL(info) << "will start transforms, commands count " << m_transforms.size() << "\n"; +#if defined(__linux__) || defined(__LINUX__) + if (g_cli_callback_mgr.is_started()) { + PrintBase::SlicingStatus slicing_status{1, "Loading files finished"}; + cli_status_callback(slicing_status); + } +#endif + for (auto const &opt_key : m_transforms) { BOOST_LOG_TRIVIAL(info) << "process transform " << opt_key << "\n"; if (opt_key == "merge") { @@ -1762,10 +1784,7 @@ int CLI::run(int argc, char **argv) } else if (opt_key == "help_sla") { this->print_help(true, ptSLA); } else if (opt_key == "pipe") { -#if defined(__linux__) || defined(__LINUX__) - std::string pipe_name = m_config.option("pipe")->value; - g_cli_callback_mgr.start(pipe_name); -#endif + //already processed before } else if (opt_key == "load_slicedata") { load_slicedata = true; load_slice_data_dir = m_config.opt_string(opt_key); @@ -1807,8 +1826,10 @@ int CLI::run(int argc, char **argv) export_to_3mf = true; export_3mf_file = m_config.opt_string(opt_key); }else if(opt_key=="no_check"){ - no_check = true; + no_check = m_config.opt_bool(opt_key); //} else if (opt_key == "export_gcode" || opt_key == "export_sla" || opt_key == "slice") { + } else if (opt_key == "normative_check") { + //already processed before } else if (opt_key == "export_slicedata") { export_slicedata = true; export_slice_data_dir = m_config.opt_string(opt_key); @@ -1842,6 +1863,12 @@ int CLI::run(int argc, char **argv) flush_and_exit(1); }*/ BOOST_LOG_TRIVIAL(info) << "Need to slice for plate "<config()); new_print_config.apply(m_extra_config, true); print->apply(model, new_print_config); + BOOST_LOG_TRIVIAL(info) << boost::format("set no_check to %1%:")%no_check; print->set_no_check_flag(no_check);//BBS StringObjectException warning; auto err = print->validate(&warning); @@ -2002,7 +2030,11 @@ int CLI::run(int argc, char **argv) print->set_status_callback(cli_status_callback); g_cli_callback_mgr.set_plate_info(index+1, (plate_to_slice== 0)?partplate_list.get_plate_count():1); if (!warning.string.empty()) { - PrintBase::SlicingStatus slicing_status{2, warning.string, 0, 0}; + PrintBase::SlicingStatus slicing_status{4, warning.string, 0, 0}; + cli_status_callback(slicing_status); + } + else { + PrintBase::SlicingStatus slicing_status{4, "Slicing begins"}; cli_status_callback(slicing_status); } } @@ -2017,6 +2049,12 @@ int CLI::run(int argc, char **argv) } else { BOOST_LOG_TRIVIAL(info) << "plate "<< index+1<< ": load cached data success, go on."; +#if defined(__linux__) || defined(__LINUX__) + if (g_cli_callback_mgr.is_started()) { + PrintBase::SlicingStatus slicing_status{69, "Cache data loaded"}; + cli_status_callback(slicing_status); + } +#endif print->process(true); BOOST_LOG_TRIVIAL(info) << "plate "<< index+1<< ": finished print::process."; } @@ -2099,7 +2137,7 @@ int CLI::run(int argc, char **argv) #if defined(__linux__) || defined(__LINUX__) if (g_cli_callback_mgr.is_started()) { int plate_count = (plate_to_slice== 0)?partplate_list.get_plate_count():1; - g_cli_callback_mgr.set_plate_info(plate_count+1, plate_count); + g_cli_callback_mgr.set_plate_info(0, plate_count); } #endif /* @@ -2153,7 +2191,7 @@ int CLI::run(int argc, char **argv) #if defined(__linux__) || defined(__LINUX__) if (g_cli_callback_mgr.is_started()) { - PrintBase::SlicingStatus slicing_status{91, "Generate thumbnails"}; + PrintBase::SlicingStatus slicing_status{94, "Generate thumbnails"}; cli_status_callback(slicing_status); } #endif @@ -2626,7 +2664,7 @@ int CLI::run(int argc, char **argv) #if defined(__linux__) || defined(__LINUX__) if (g_cli_callback_mgr.is_started()) { - PrintBase::SlicingStatus slicing_status{95, "Exporting 3mf"}; + PrintBase::SlicingStatus slicing_status{97, "Exporting 3mf"}; cli_status_callback(slicing_status); } #endif diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 4e91ec4e3..eea798626 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4634,14 +4634,12 @@ CLIActionsConfigDef::CLIActionsConfigDef() def = this->add("no_check", coBool); def->label = L("No check"); def->tooltip = L("Do not run any validity checks, such as gcode path conflicts check."); - def->cli = "no_check"; def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); def = this->add("normative_check", coBool); def->label = L("Normative check"); def->tooltip = L("Check the normative items."); - def->cli = "normative_check"; def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(true));