FIX: CLI: fix some issues

1. JIRA: MAK-1727, color of thumbnail not correct
2. JIRA: MAK-1723, model upload outside issue

Change-Id: I1754d730021c9df8044248e931023899d410d8de
This commit is contained in:
lane.wei 2023-08-21 16:49:38 +08:00 committed by Lane.Wei
parent 6e6c28b0ee
commit 342b8d7338
1 changed files with 18 additions and 9 deletions

View File

@ -470,7 +470,7 @@ int CLI::run(int argc, char **argv)
boost::algorithm::iends_with(boost::filesystem::path(argv[0]).filename().string(), "gcodeviewer"); boost::algorithm::iends_with(boost::filesystem::path(argv[0]).filename().string(), "gcodeviewer");
#endif // _WIN32*/ #endif // _WIN32*/
bool translate_old = false, regenerate_thumbnails = false, shrink_to_new_bed = false; bool translate_old = false, regenerate_thumbnails = false, shrink_to_new_bed = false, filament_color_changed = false;
int current_printable_width, current_printable_depth, current_printable_height; int current_printable_width, current_printable_depth, current_printable_height;
int old_printable_height = 0, old_printable_width = 0, old_printable_depth = 0; int old_printable_height = 0, old_printable_width = 0, old_printable_depth = 0;
Pointfs old_printable_area, old_exclude_area; Pointfs old_printable_area, old_exclude_area;
@ -1620,6 +1620,14 @@ int CLI::run(int argc, char **argv)
if (!selected_filament_colors[index].empty()) if (!selected_filament_colors[index].empty())
{ {
BOOST_LOG_TRIVIAL(info) << boost::format("changed to new color %1%")%selected_filament_colors[index]; BOOST_LOG_TRIVIAL(info) << boost::format("changed to new color %1%")%selected_filament_colors[index];
unsigned char ori_rgb_color[4] = {}, new_rgb_color[4] = {};
Slic3r::GUI::BitmapCache::parse_color4(project_filament_colors[index], ori_rgb_color);
Slic3r::GUI::BitmapCache::parse_color4(selected_filament_colors[index], new_rgb_color);
if ((ori_rgb_color[0] != new_rgb_color[0]) || (ori_rgb_color[1] != new_rgb_color[1]) || (ori_rgb_color[2] != new_rgb_color[2]) || (ori_rgb_color[3] != new_rgb_color[3]))
{
BOOST_LOG_TRIVIAL(info) << boost::format("found color changes, need to regenerate thumbnail");
filament_color_changed = true;
}
project_filament_colors[index] = selected_filament_colors[index]; project_filament_colors[index] = selected_filament_colors[index];
} }
} }
@ -2177,11 +2185,9 @@ int CLI::run(int argc, char **argv)
orients_requirement.clear(); orients_requirement.clear();
oriented_or_arranged |= need_arrange; oriented_or_arranged |= need_arrange;
BOOST_LOG_TRIVIAL(info) << boost::format("before arrange, need_arrange=%1%, duplicate_count %2%")%need_arrange%duplicate_count; BOOST_LOG_TRIVIAL(info) << boost::format("before arrange, need_arrange=%1%, duplicate_count %2%, filament_color_changed %3%")%need_arrange %duplicate_count %filament_color_changed;
if (need_arrange) if (need_arrange || filament_color_changed)
{ {
ArrangePolygons selected, unselected, unprintable, locked_aps;
for (int index = 0; index < partplate_list.get_plate_count(); index ++) for (int index = 0; index < partplate_list.get_plate_count(); index ++)
{ {
if ((plate_to_slice != 0) && (plate_to_slice != (index + 1))) { if ((plate_to_slice != 0) && (plate_to_slice != (index + 1))) {
@ -2203,6 +2209,11 @@ int CLI::run(int argc, char **argv)
} }
} }
} }
}
if (need_arrange)
{
ArrangePolygons selected, unselected, unprintable, locked_aps;
//for (Model &model : m_models) //for (Model &model : m_models)
if (m_models.size() > 0) if (m_models.size() > 0)
@ -2742,8 +2753,6 @@ int CLI::run(int argc, char **argv)
//BBS: slice 0 means all plates, i means plate i; //BBS: slice 0 means all plates, i means plate i;
plate_to_slice = m_config.option<ConfigOptionInt>("slice")->value; plate_to_slice = m_config.option<ConfigOptionInt>("slice")->value;
bool pre_check = (plate_to_slice == 0)?true:false; bool pre_check = (plate_to_slice == 0)?true:false;
if (partplate_list.get_plate_count() == 1)
pre_check = false;
bool finished = false; bool finished = false;
/*if (opt_key == "export_gcode" && printer_technology == ptSLA) { /*if (opt_key == "export_gcode" && printer_technology == ptSLA) {
@ -2937,7 +2946,7 @@ int CLI::run(int argc, char **argv)
flush_and_exit(CLI_NO_SUITABLE_OBJECTS); flush_and_exit(CLI_NO_SUITABLE_OBJECTS);
} }
else { else {
if (pre_check) //continue to next plate directly if (pre_check && (partplate_list.get_plate_count() > 1)) //continue to next plate directly
continue; continue;
try { try {
std::string outfile_final; std::string outfile_final;
@ -3075,7 +3084,7 @@ int CLI::run(int argc, char **argv)
} }
} }
} }
if (pre_check) if (pre_check&& (partplate_list.get_plate_count() > 1))
pre_check = false; pre_check = false;
else else
finished = true; finished = true;