Pick updates from BS 1.9.3

sync bbl profiles
FIX: [#4320] crash when edit project preset

github: #4320

Change-Id: I81eb5f0d461565d63a32100a5bebb4569cfb0b1b
ENH: add pctg type

Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Ie01fcd4bef0d3ebec5bbd7185a87a1740068bdba
(cherry picked from commit c6276932dd92bc4283600954415eedeac6d351ce)
ENH: CLI: add logic to save metadata into 3mf from CLI

JIRA: no jira
Change-Id: I7f96c2ab9671ec1c0115e90f6d64230b8170eb38
(cherry picked from commit 3d2d6e23ba318a2b331a62e320f8ca199168f1f5)
This commit is contained in:
SoftFever 2024-06-21 18:16:14 +08:00
parent 6a28bae6fd
commit b7a0b30578
16 changed files with 134 additions and 14 deletions

View file

@ -1,7 +1,7 @@
{
"name": "Bambulab",
"url": "http://www.bambulab.com/Parameters/vendor/BBL.json",
"version": "01.09.00.12",
"version": "01.09.00.14",
"force_update": "0",
"description": "the initial version of BBL configurations",
"machine_model_list": [
@ -625,6 +625,10 @@
"name": "fdm_filament_pc",
"sub_path": "filament/fdm_filament_pc.json"
},
{
"name": "fdm_filament_pctg",
"sub_path": "filament/fdm_filament_pctg.json"
},
{
"name": "fdm_filament_asa",
"sub_path": "filament/fdm_filament_asa.json"

View file

@ -1,7 +1,7 @@
{
"type": "filament",
"name": "Generic PCTG @base",
"inherits": "fdm_filament_pet",
"inherits": "fdm_filament_pctg",
"from": "system",
"filament_id": "GFG97",
"instantiation": "false",

View file

@ -0,0 +1,64 @@
{
"type": "filament",
"name": "fdm_filament_pctg",
"inherits": "fdm_filament_common",
"from": "system",
"instantiation": "false",
"eng_plate_temp": [
"0"
],
"eng_plate_temp_initial_layer": [
"0"
],
"fan_cooling_layer_time": [
"20"
],
"fan_min_speed": [
"20"
],
"filament_cost": [
"30"
],
"filament_density": [
"1.27"
],
"filament_max_volumetric_speed": [
"25"
],
"filament_type": [
"PCTG"
],
"hot_plate_temp": [
"80"
],
"hot_plate_temp_initial_layer": [
"80"
],
"nozzle_temperature": [
"255"
],
"nozzle_temperature_initial_layer": [
"255"
],
"nozzle_temperature_range_high": [
"260"
],
"nozzle_temperature_range_low": [
"220"
],
"reduce_fan_stop_start_freq": [
"1"
],
"temperature_vitrification": [
"70"
],
"textured_plate_temp": [
"80"
],
"textured_plate_temp_initial_layer": [
"80"
],
"filament_start_gcode": [
"; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S255\n{endif};Prevent PLA from jamming\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
]
}

File diff suppressed because one or more lines are too long

View file

@ -1203,6 +1203,15 @@ int CLI::run(int argc, char **argv)
DynamicPrintConfig load_process_config, load_machine_config;
bool new_process_config_is_system = true, new_printer_config_is_system = true;
std::string pipe_name, makerlab_name, makerlab_version, different_process_setting;
const std::vector<std::string> &metadata_name = m_config.option<ConfigOptionStrings>("metadata_name", true)->values;
const std::vector<std::string> &metadata_value = m_config.option<ConfigOptionStrings>("metadata_value", true)->values;
if (metadata_name.size() != metadata_value.size())
{
BOOST_LOG_TRIVIAL(error) << boost::format("metadata_name should be the same size with metadata_value");
record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info);
flush_and_exit(CLI_INVALID_PARAMS);
}
// Read input file(s) if any.
BOOST_LOG_TRIVIAL(info) << "Will start to read model file now, file count :" << m_input_files.size() << "\n";
@ -5852,6 +5861,18 @@ int CLI::run(int argc, char **argv)
model.mk_version = makerlab_version;
BOOST_LOG_TRIVIAL(info) << boost::format("mk_name %1%, mk_version %2%")%makerlab_name %makerlab_version;
}
if (!metadata_name.empty()) {
Model &model = m_models[0];
model.md_value = metadata_value;
model.md_name = metadata_name;
for (unsigned int i = 0; i < metadata_name.size(); i++)
{
BOOST_LOG_TRIVIAL(info) << boost::format("index %1% metadata_name %2%, metadata_value %3%")%i %metadata_name[i] %metadata_value[i];
}
}
if (!this->export_project(&m_models[0], export_3mf_file, plate_data_list, project_presets, thumbnails, no_light_thumbnails, top_thumbnails, pick_thumbnails,
calibration_thumbnails, plate_bboxes, &m_print_config, minimum_save, plate_to_slice - 1))
{

View file

@ -590,7 +590,8 @@ double getadhesionCoeff(const PrintObject* printObject)
for (auto iter = extrudersFirstLayer.begin(); iter != extrudersFirstLayer.end(); iter++)
if (modelVolume->extruder_id() == *iter) {
if (Model::extruderParamsMap.find(modelVolume->extruder_id()) != Model::extruderParamsMap.end())
if (Model::extruderParamsMap.at(modelVolume->extruder_id()).materialName == "PETG") {
if (Model::extruderParamsMap.at(modelVolume->extruder_id()).materialName == "PETG" ||
Model::extruderParamsMap.at(modelVolume->extruder_id()).materialName == "PCTG") {
adhesionCoeff = 2;
}
else if (Model::extruderParamsMap.at(modelVolume->extruder_id()).materialName == "TPU") {

View file

@ -6450,6 +6450,13 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result)
metadata_item_map[BBL_MAKERLAB_VERSION_TAG] = xml_escape(model.mk_version);
BOOST_LOG_TRIVIAL(info) << "saved mk_version " << model.mk_version;
}
if (!model.md_name.empty()) {
for (unsigned int i = 0; i < model.md_name.size(); i++)
{
BOOST_LOG_TRIVIAL(info) << boost::format("saved metadata_name %1%, metadata_value %2%") %model.md_name[i] %model.md_value[i];
metadata_item_map[model.md_name[i]] = xml_escape(model.md_value[i]);
}
}
// store metadata info
for (auto item : metadata_item_map) {

View file

@ -96,6 +96,8 @@ Model& Model::assign_copy(const Model &rhs)
this->mk_name = rhs.mk_name;
this->mk_version = rhs.mk_version;
this->md_name = rhs.md_name;
this->md_value = rhs.md_value;
return *this;
}
@ -129,6 +131,8 @@ Model& Model::assign_copy(Model &&rhs)
this->stl_design_country = rhs.stl_design_country;
this->mk_name = rhs.mk_name;
this->mk_version = rhs.mk_version;
this->md_name = rhs.md_name;
this->md_value = rhs.md_value;
this->backup_path = std::move(rhs.backup_path);
this->object_backup_id_map = std::move(rhs.object_backup_id_map);
this->next_object_backup_id = rhs.next_object_backup_id;
@ -983,6 +987,8 @@ void Model::load_from(Model& model)
profile_info = model.profile_info;
mk_name = model.mk_name;
mk_version = model.mk_version;
md_name = model.md_name;
md_value = model.md_value;
model.design_info.reset();
model.model_info.reset();
model.profile_info.reset();
@ -2956,7 +2962,7 @@ bool Model::obj_import_vertex_color_deal(const std::vector<unsigned char> &verte
case _3_SAME_COLOR: {
std::string result;
get_real_filament_id(filament_id0, result);
volume->mmu_segmentation_facets.set_triangle_from_string(i, result);
volume->mmu_segmentation_facets.set_triangle_from_string(i, result);
break;
}
case _3_DIFF_COLOR: {
@ -3161,7 +3167,8 @@ double getadhesionCoeff(const ModelVolumePtrs objectVolumes)
double adhesionCoeff = 1;
for (const ModelVolume* modelVolume : objectVolumes) {
if (Model::extruderParamsMap.find(modelVolume->extruder_id()) != Model::extruderParamsMap.end())
if (Model::extruderParamsMap.at(modelVolume->extruder_id()).materialName == "PETG") {
if (Model::extruderParamsMap.at(modelVolume->extruder_id()).materialName == "PETG" ||
Model::extruderParamsMap.at(modelVolume->extruder_id()).materialName == "PCTG") {
adhesionCoeff = 2;
}
else if (Model::extruderParamsMap.at(modelVolume->extruder_id()).materialName == "TPU") {

View file

@ -423,7 +423,7 @@ public:
bool is_mm_painted() const;
// This object may have a varying layer height by painting or by a table.
// Even if true is returned, the layer height profile may be "flat" with no difference to default layering.
bool has_custom_layering() const
bool has_custom_layering() const
{ return ! this->layer_config_ranges.empty() || ! this->layer_height_profile.empty(); }
ModelInstance* add_instance();
@ -1508,6 +1508,8 @@ public:
//makerlab information
std::string mk_name;
std::string mk_version;
std::vector<std::string> md_name;
std::vector<std::string> md_value;
void SetDesigner(std::string designer, std::string designer_user_id) {
if (design_info == nullptr) {

View file

@ -2452,9 +2452,9 @@ FilamentTempType Print::get_filament_temp_type(const std::string& filament_type)
catch (const json::parse_error& err){
in.close();
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": parse " << file_path.string() << " got a nlohmann::detail::parse_error, reason = " << err.what();
filament_temp_type_map[HighTempFilamentStr] = {"ABS","ASA","PC","PA","PA-CF","PA6-CF","PET-CF","PPS","PPS-CF","PPA-GF","PPA-CF"};
filament_temp_type_map[LowTempFilamentStr] = {"PLA","TPU","PLA-CF","PLA-AERO","PVA"};
filament_temp_type_map[HighLowCompatibleFilamentStr] = { "HIPS","PETG" };
filament_temp_type_map[HighTempFilamentStr] = {"ABS","ASA","PC","PA","PA-CF","PA-GF","PA6-CF","PET-CF","PPS","PPS-CF","PPA-GF","PPA-CF","ABS-Aero","ABS-GF"};
filament_temp_type_map[LowTempFilamentStr] = {"PLA","TPU","PLA-CF","PLA-AERO","PVA","BVOH"};
filament_temp_type_map[HighLowCompatibleFilamentStr] = { "HIPS","PETG","PCTG","PE","PP","EVA","PE-CF","PP-CF","PP-GF","PHA"};
}
}

View file

@ -1944,6 +1944,7 @@ void PrintConfigDef::init_fff_params()
def->enum_values.push_back("ASA");
def->enum_values.push_back("ASA-Aero");
def->enum_values.push_back("BVOH");
def->enum_values.push_back("PCTG");
def->enum_values.push_back("EVA");
def->enum_values.push_back("HIPS");
def->enum_values.push_back("PA");
@ -7074,6 +7075,18 @@ CLIMiscConfigDef::CLIMiscConfigDef()
def->cli_params = "version";
def->set_default_value(new ConfigOptionString());
def = this->add("metadata_name", coStrings);
def->label = "metadata name list";
def->tooltip = "matadata name list added into 3mf";
def->cli_params = "\"name1;name2;...\"";
def->set_default_value(new ConfigOptionStrings());
def = this->add("metadata_value", coStrings);
def->label = "metadata value list";
def->tooltip = "matadata value list added into 3mf";
def->cli_params = "\"value1;value2;...\"";
def->set_default_value(new ConfigOptionStrings());
def = this->add("allow_newer_file", coBool);
def->label = "Allow 3mf with newer version to be sliced";
def->tooltip = "Allow 3mf with newer version to be sliced";

View file

@ -151,6 +151,7 @@ void ConfigManipulation::check_chamber_temperature(DynamicPrintConfig* config)
{"PVA",45},
{"TPU",50},
{"PETG",55},
{"PCTG",55},
{"PETG-CF",55}
};
bool support_chamber_temp_control=GUI::wxGetApp().preset_bundle->printers.get_selected_preset().config.opt_bool("support_chamber_temp_control");

View file

@ -4732,7 +4732,7 @@ void CreatePresetForPrinterDialog::get_visible_printer_and_compatible_filament_p
m_preset_bundle->update_compatible(PresetSelectCompatibleType::Always);
const std::deque<Preset> &filament_presets = m_preset_bundle->filaments.get_presets();
for (const Preset &filament_preset : filament_presets) {
if (filament_preset.is_default || !filament_preset.is_compatible) continue;
if (filament_preset.is_default || !filament_preset.is_compatible || filament_preset.is_project_embedded) continue;
ConfigOptionStrings *filament_types;
const Preset * filament_preset_base = m_preset_bundle->filaments.get_preset_base(filament_preset);
if (filament_preset_base == &filament_preset) {

View file

@ -57,7 +57,7 @@ static wxString update_custom_filaments()
bool not_need_show = false;
std::string filament_name;
for (const Preset *preset : filament_id_to_presets.second) {
if (preset->is_system) {
if (preset->is_system || preset->is_project_embedded) {
not_need_show = true;
break;
}

View file

@ -240,7 +240,7 @@ Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plat
SetSizer(v_sizer);
wxBoxSizer* choice_sizer = new wxBoxSizer(wxHORIZONTAL);
wxString m_rbFilamentTypeChoices[] = { _L("PLA"), _L("ABS/ASA"), _L("PETG"), _L("TPU"), _L("PA-CF"), _L("PET-CF"), _L("Custom") };
wxString m_rbFilamentTypeChoices[] = { _L("PLA"), _L("ABS/ASA"), _L("PETG"), _L("PCTG"), _L("TPU"), _L("PA-CF"), _L("PET-CF"), _L("Custom") };
int m_rbFilamentTypeNChoices = sizeof(m_rbFilamentTypeChoices) / sizeof(wxString);
m_rbFilamentType = new wxRadioBox(this, wxID_ANY, _L("Filament type"), wxDefaultPosition, wxDefaultSize, m_rbFilamentTypeNChoices, m_rbFilamentTypeChoices, 2, wxRA_SPECIFY_COLS);
m_rbFilamentType->SetSelection(0);

View file

@ -17,4 +17,4 @@ set(ORCA_VERSION_MAJOR ${CMAKE_MATCH_1})
set(ORCA_VERSION_MINOR ${CMAKE_MATCH_2})
set(ORCA_VERSION_PATCH ${CMAKE_MATCH_3})
set(SLIC3R_VERSION "01.09.02.57")
set(SLIC3R_VERSION "01.09.03.50")