diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 69dd3f029..b355a78de 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -283,7 +283,7 @@ static constexpr const char* SLICE_PREDICTION_ATTR = "prediction"; static constexpr const char* SLICE_WEIGHT_ATTR = "weight"; static constexpr const char* OUTSIDE_ATTR = "outside"; static constexpr const char* SUPPORT_USED_ATTR = "support_used"; - +static constexpr const char* LABEL_OBJECT_ENABLED_ATTR = "label_object_enabled"; static constexpr const char* OBJECT_TYPE = "object"; static constexpr const char* VOLUME_TYPE = "volume"; @@ -1417,6 +1417,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) plate->gcode_weight = it->second->gcode_weight; plate->toolpath_outside = it->second->toolpath_outside; plate->is_support_used = it->second->is_support_used; + plate->is_label_object_enabled = it->second->is_label_object_enabled; plate->slice_filaments_info = it->second->slice_filaments_info; plate->warnings = it->second->warnings; plate->thumbnail_file = it->second->thumbnail_file; @@ -2048,6 +2049,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) plate_data_list[it->first-1]->gcode_weight = it->second->gcode_weight; plate_data_list[it->first-1]->toolpath_outside = it->second->toolpath_outside; plate_data_list[it->first-1]->is_support_used = it->second->is_support_used; + plate_data_list[it->first-1]->is_label_object_enabled = it->second->is_label_object_enabled; plate_data_list[it->first-1]->slice_filaments_info = it->second->slice_filaments_info; plate_data_list[it->first-1]->warnings = it->second->warnings; plate_data_list[it->first-1]->thumbnail_file = (m_load_restore || it->second->thumbnail_file.empty()) ? it->second->thumbnail_file : m_backup_path + "/" + it->second->thumbnail_file; @@ -3923,6 +3925,11 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (m_curr_plater) std::istringstream(value) >> std::boolalpha >> m_curr_plater->is_support_used; } + else if (key == LABEL_OBJECT_ENABLED_ATTR) + { + if (m_curr_plater) + std::istringstream(value) >> std::boolalpha >> m_curr_plater->is_label_object_enabled; + } } return true; @@ -7208,6 +7215,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << SLICE_WEIGHT_ATTR << "\" " << VALUE_ATTR << "=\"" << plate_data->get_gcode_weight_str() << "\"/>\n"; stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << OUTSIDE_ATTR << "\" " << VALUE_ATTR << "=\"" << std::boolalpha<< plate_data->toolpath_outside << "\"/>\n"; stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << SUPPORT_USED_ATTR << "\" " << VALUE_ATTR << "=\"" << std::boolalpha<< plate_data->is_support_used << "\"/>\n"; + stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << LABEL_OBJECT_ENABLED_ATTR << "\" " << VALUE_ATTR << "=\"" << std::boolalpha<< plate_data->is_label_object_enabled << "\"/>\n"; for (auto it = plate_data->slice_filaments_info.begin(); it != plate_data->slice_filaments_info.end(); it++) { diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index f28daba04..9ce4c12df 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -82,6 +82,7 @@ struct PlateData bool is_support_used {false}; bool is_sliced_valid = false; bool toolpath_outside {false}; + bool is_label_object_enabled {false}; std::vector warnings; diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 78ddb5811..5c4aaa69c 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1138,6 +1138,8 @@ void GCode::do_export(Print* print, const char* path, GCodeProcessorResult* resu BOOST_LOG_TRIVIAL(info) << "Exporting G-code finished" << log_memory_info(); print->set_done(psGCodeExport); + //BBS: set enable_label_object + result->label_object_enabled = m_enable_label_object; // Write the profiler measurements to file PROFILE_UPDATE(); diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 0383fa958..25dab81f9 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -767,6 +767,8 @@ void GCodeProcessorResult::reset() { bed_exclude_area = Pointfs(); //BBS: add toolpath_outside toolpath_outside = false; + //BBS: add label_object_enabled + label_object_enabled = false; printable_height = 0.0f; settings_ids.reset(); extruders_count = 0; @@ -792,6 +794,8 @@ void GCodeProcessorResult::reset() { bed_exclude_area = Pointfs(); //BBS: add toolpath_outside toolpath_outside = false; + //BBS: add label_object_enabled + label_object_enabled = false; printable_height = 0.0f; settings_ids.reset(); extruders_count = 0; diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 5f614ef90..22d5d1187 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -177,6 +177,8 @@ namespace Slic3r { Pointfs bed_exclude_area; //BBS: add toolpath_outside bool toolpath_outside; + //BBS: add object_label_enabled + bool label_object_enabled; float printable_height; SettingsIds settings_ids; size_t extruders_count; @@ -208,6 +210,7 @@ namespace Slic3r { printable_area = other.printable_area; bed_exclude_area = other.bed_exclude_area; toolpath_outside = other.toolpath_outside; + label_object_enabled = other.label_object_enabled; printable_height = other.printable_height; settings_ids = other.settings_ids; extruders_count = other.extruders_count; diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 919f164dc..3395ba61d 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -4583,6 +4583,7 @@ int PartPlateList::store_to_3mf_structure(PlateDataPtrs& plate_data_list, bool w plate_data_item->gcode_prediction = std::to_string( (int) m_plate_list[i]->get_slice_result()->print_statistics.modes[static_cast(PrintEstimatedStatistics::ETimeMode::Normal)].time); plate_data_item->toolpath_outside = m_plate_list[i]->m_gcode_result->toolpath_outside; + plate_data_item->is_label_object_enabled = m_plate_list[i]->m_gcode_result->label_object_enabled; Print *print = nullptr; m_plate_list[i]->get_print((PrintBase **) &print, nullptr, nullptr); if (print) { @@ -4631,8 +4632,8 @@ int PartPlateList::load_from_3mf_structure(PlateDataPtrs& plate_data_list) { BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(":plate index %1% seems invalid, skip it")% plate_data_list[i]->plate_index; } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": plate %1%, gcode_file %2%, is_sliced_valid %3%, toolpath_outside %4%, is_support_used %5%") - %i %plate_data_list[i]->gcode_file %plate_data_list[i]->is_sliced_valid %plate_data_list[i]->toolpath_outside %plate_data_list[i]->is_support_used; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": plate %1%, gcode_file %2%, is_sliced_valid %3%, toolpath_outside %4%, is_support_used %5% is_label_object_enabled %6%") + %i %plate_data_list[i]->gcode_file %plate_data_list[i]->is_sliced_valid %plate_data_list[i]->toolpath_outside %plate_data_list[i]->is_support_used %plate_data_list[i]->is_label_object_enabled; //load object and instance from 3mf //just test for file correct or not, we will rebuild later /*for (std::vector>::iterator it = plate_data_list[i]->objects_and_instances.begin(); it != plate_data_list[i]->objects_and_instances.end(); ++it) @@ -4653,6 +4654,7 @@ int PartPlateList::load_from_3mf_structure(PlateDataPtrs& plate_data_list) } ps.total_used_filament *= 1000; //koef gcode_result->toolpath_outside = plate_data_list[i]->toolpath_outside; + gcode_result->label_object_enabled = plate_data_list[i]->is_label_object_enabled; m_plate_list[index]->slice_filaments_info = plate_data_list[i]->slice_filaments_info; gcode_result->warnings = plate_data_list[i]->warnings; if (m_plater && !plate_data_list[i]->thumbnail_file.empty()) {