FIX: fix flow ratio calib bug for single extruder printer

2. modify the filament_flow_ratio to nullable
jira:none

Change-Id: I3f0569ee643cfe9473c6029ca0e04f4b80c8332e
(cherry picked from commit ed61d1d31bdc79f064567deacf35e05bd123880d)
This commit is contained in:
zhimin.zeng
2024-09-05 14:48:21 +08:00
committed by Noisyfox
parent e7d2c51326
commit 8eb0a59723
10 changed files with 63 additions and 38 deletions

View File

@@ -619,8 +619,10 @@ std::string AppConfig::load()
for (auto cali_it = calis_j["presets"].begin(); cali_it != calis_j["presets"].end(); cali_it++) {
CaliPresetInfo preset_info;
preset_info.tray_id = cali_it.value()["tray_id"].get<int>();
preset_info.extruder_id = cali_it.value()["extruder_id"].get<int>();
preset_info.nozzle_volume_type = NozzleVolumeType(cali_it.value()["nozzle_volume_type"].get<int>());
if (cali_it.value().contains("extruder_id"))
preset_info.extruder_id = cali_it.value()["extruder_id"].get<int>();
if (cali_it.value().contains("nozzle_volume_type"))
preset_info.nozzle_volume_type = NozzleVolumeType(cali_it.value()["nozzle_volume_type"].get<int>());
preset_info.nozzle_diameter = cali_it.value()["nozzle_diameter"].get<float>();
preset_info.filament_id = cali_it.value()["filament_id"].get<std::string>();
preset_info.setting_id = cali_it.value()["setting_id"].get<std::string>();

View File

@@ -1961,7 +1961,8 @@ void PrintConfigDef::init_fff_params()
"You may be able to tune this value to get a nice flat surface if there is slight overflow or underflow.");
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloats { 1. });
def->nullable = true;
def->set_default_value(new ConfigOptionFloatsNullable { 1. });
def = this->add("print_flow_ratio", coFloat);
def->label = L("Flow ratio");
@@ -7214,6 +7215,7 @@ std::set<std::string> print_options_with_variant = {
};
std::set<std::string> filament_options_with_variant = {
"filament_flow_ratio",
"filament_max_volumetric_speed",
//"filament_extruder_id",
"filament_extruder_variant",

View File

@@ -1184,7 +1184,7 @@ PRINT_CONFIG_CLASS_DEFINE(
((ConfigOptionBool, enable_arc_fitting))
((ConfigOptionString, machine_end_gcode))
((ConfigOptionStrings, filament_end_gcode))
((ConfigOptionFloats, filament_flow_ratio))
((ConfigOptionFloatsNullable, filament_flow_ratio))
((ConfigOptionBools, enable_pressure_advance))
((ConfigOptionFloats, pressure_advance))
// Orca: adaptive pressure advance and calibration model

View File

@@ -242,7 +242,7 @@ std::string CalibPressureAdvance::draw_line(
const double e_per_mm = CalibPressureAdvance::e_per_mm(line_width, layer_height,
m_config.option<ConfigOptionFloats>("nozzle_diameter")->get_at(0),
m_config.option<ConfigOptionFloats>("filament_diameter")->get_at(0),
m_config.option<ConfigOptionFloats>("filament_flow_ratio")->get_at(0));
m_config.option<ConfigOptionFloatsNullable>("filament_flow_ratio")->get_at(0));
const double length = get_distance(Vec2d(m_last_pos.x(), m_last_pos.y()), to_pt);
auto dE = e_per_mm * length;