mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-08 23:46:24 -06:00
Enhancement: Do not slow down external perimeters to meet minimum layer time (#5148)
* POC - Do not slow down external perimeters to meet minimum layer time
* POC - Do not slow down external perimeters to meet minimum layer time - rework
* Revert "POC - Do not slow down external perimeters to meet minimum layer time"
This reverts commit d84ff93f90
.
* Dont slow down external perimeters to meet layer time target v2
* Reverted previous implementation
* UI fixes for dont slow down for layer cooling
* Update dont slow down outer walls naming convention
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
parent
9ee33e30df
commit
12861a6a3d
6 changed files with 31 additions and 2 deletions
|
@ -222,6 +222,9 @@ struct PerExtruderAdjustments
|
||||||
float slow_down_layer_time = 0.f;
|
float slow_down_layer_time = 0.f;
|
||||||
// Minimum print speed allowed for this extruder.
|
// Minimum print speed allowed for this extruder.
|
||||||
float slow_down_min_speed = 0.f;
|
float slow_down_min_speed = 0.f;
|
||||||
|
|
||||||
|
bool dont_slow_down_outer_wall = false;
|
||||||
|
|
||||||
|
|
||||||
// Parsed lines.
|
// Parsed lines.
|
||||||
std::vector<CoolingLine> lines;
|
std::vector<CoolingLine> lines;
|
||||||
|
@ -330,6 +333,8 @@ std::vector<PerExtruderAdjustments> CoolingBuffer::parse_layer_gcode(const std::
|
||||||
adj.cooling_slow_down_enabled = m_config.slow_down_for_layer_cooling.get_at(extruder_id);
|
adj.cooling_slow_down_enabled = m_config.slow_down_for_layer_cooling.get_at(extruder_id);
|
||||||
adj.slow_down_layer_time = float(m_config.slow_down_layer_time.get_at(extruder_id));
|
adj.slow_down_layer_time = float(m_config.slow_down_layer_time.get_at(extruder_id));
|
||||||
adj.slow_down_min_speed = float(m_config.slow_down_min_speed.get_at(extruder_id));
|
adj.slow_down_min_speed = float(m_config.slow_down_min_speed.get_at(extruder_id));
|
||||||
|
// ORCA: To enable dont slow down external perimeters feature per filament (extruder)
|
||||||
|
adj.dont_slow_down_outer_wall = m_config.dont_slow_down_outer_wall.get_at(extruder_id);
|
||||||
map_extruder_to_per_extruder_adjustment[extruder_id] = i;
|
map_extruder_to_per_extruder_adjustment[extruder_id] = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -399,7 +404,15 @@ std::vector<PerExtruderAdjustments> CoolingBuffer::parse_layer_gcode(const std::
|
||||||
line.type |= CoolingLine::TYPE_EXTERNAL_PERIMETER;
|
line.type |= CoolingLine::TYPE_EXTERNAL_PERIMETER;
|
||||||
if (wipe)
|
if (wipe)
|
||||||
line.type |= CoolingLine::TYPE_WIPE;
|
line.type |= CoolingLine::TYPE_WIPE;
|
||||||
if (boost::contains(sline, ";_EXTRUDE_SET_SPEED") && ! wipe) {
|
|
||||||
|
// ORCA: Dont slowdown external perimeters for layer time feature
|
||||||
|
// use the adjustment pointer to ensure the value for the current extruder (filament) is used.
|
||||||
|
bool adjust_external = true;
|
||||||
|
if(adjustment->dont_slow_down_outer_wall && external_perimeter) adjust_external = false;
|
||||||
|
|
||||||
|
// ORCA: Dont slowdown external perimeters for layer time works by not marking the external perimeter as adjustable,
|
||||||
|
// hence the slowdown algorithm ignores it.
|
||||||
|
if (boost::contains(sline, ";_EXTRUDE_SET_SPEED") && ! wipe && adjust_external) {
|
||||||
line.type |= CoolingLine::TYPE_ADJUSTABLE;
|
line.type |= CoolingLine::TYPE_ADJUSTABLE;
|
||||||
active_speed_modifier = adjustment->lines.size();
|
active_speed_modifier = adjustment->lines.size();
|
||||||
}
|
}
|
||||||
|
|
|
@ -825,7 +825,7 @@ static std::vector<std::string> s_Preset_filament_options {
|
||||||
"cool_plate_temp", "eng_plate_temp", "hot_plate_temp", "textured_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer","textured_plate_temp_initial_layer",
|
"cool_plate_temp", "eng_plate_temp", "hot_plate_temp", "textured_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer","textured_plate_temp_initial_layer",
|
||||||
// "bed_type",
|
// "bed_type",
|
||||||
//BBS:temperature_vitrification
|
//BBS:temperature_vitrification
|
||||||
"temperature_vitrification", "reduce_fan_stop_start_freq", "slow_down_for_layer_cooling", "fan_min_speed",
|
"temperature_vitrification", "reduce_fan_stop_start_freq","dont_slow_down_outer_wall", "slow_down_for_layer_cooling", "fan_min_speed",
|
||||||
"fan_max_speed", "enable_overhang_bridge_fan", "overhang_fan_speed", "overhang_fan_threshold", "close_fan_the_first_x_layers", "full_fan_speed_layer", "fan_cooling_layer_time", "slow_down_layer_time", "slow_down_min_speed",
|
"fan_max_speed", "enable_overhang_bridge_fan", "overhang_fan_speed", "overhang_fan_threshold", "close_fan_the_first_x_layers", "full_fan_speed_layer", "fan_cooling_layer_time", "slow_down_layer_time", "slow_down_min_speed",
|
||||||
"filament_start_gcode", "filament_end_gcode",
|
"filament_start_gcode", "filament_end_gcode",
|
||||||
//exhaust fan control
|
//exhaust fan control
|
||||||
|
|
|
@ -109,6 +109,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
|
||||||
"extruder_offset",
|
"extruder_offset",
|
||||||
"filament_flow_ratio",
|
"filament_flow_ratio",
|
||||||
"reduce_fan_stop_start_freq",
|
"reduce_fan_stop_start_freq",
|
||||||
|
"dont_slow_down_outer_wall",
|
||||||
"fan_cooling_layer_time",
|
"fan_cooling_layer_time",
|
||||||
"full_fan_speed_layer",
|
"full_fan_speed_layer",
|
||||||
"fan_kickstart",
|
"fan_kickstart",
|
||||||
|
|
|
@ -1700,6 +1700,15 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->tooltip = L("If enable this setting, part cooling fan will never be stoped and will run at least "
|
def->tooltip = L("If enable this setting, part cooling fan will never be stoped and will run at least "
|
||||||
"at minimum speed to reduce the frequency of starting and stoping");
|
"at minimum speed to reduce the frequency of starting and stoping");
|
||||||
def->set_default_value(new ConfigOptionBools { false });
|
def->set_default_value(new ConfigOptionBools { false });
|
||||||
|
|
||||||
|
def = this->add("dont_slow_down_outer_wall", coBools);
|
||||||
|
def->label = L("Don't slow down outer walls");
|
||||||
|
def->tooltip = L("If enabled, this setting will ensure external perimeters are not slowed down to meet the minimum layer time. "
|
||||||
|
"This is particularly helpful in the below scenarios:\n\n "
|
||||||
|
"1. To avoid changes in shine when printing glossy filaments \n"
|
||||||
|
"2. To avoid changes in external wall speed which may create slight wall artefacts that appear like z banding \n"
|
||||||
|
"3. To avoid printing at speeds which cause VFAs (fine artefacts) on the external walls\n\n");
|
||||||
|
def->set_default_value(new ConfigOptionBools { false });
|
||||||
|
|
||||||
def = this->add("fan_cooling_layer_time", coFloats);
|
def = this->add("fan_cooling_layer_time", coFloats);
|
||||||
def->label = L("Layer time");
|
def->label = L("Layer time");
|
||||||
|
|
|
@ -1174,6 +1174,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
|
||||||
((ConfigOptionStrings, extruder_colour))
|
((ConfigOptionStrings, extruder_colour))
|
||||||
((ConfigOptionPoints, extruder_offset))
|
((ConfigOptionPoints, extruder_offset))
|
||||||
((ConfigOptionBools, reduce_fan_stop_start_freq))
|
((ConfigOptionBools, reduce_fan_stop_start_freq))
|
||||||
|
((ConfigOptionBools, dont_slow_down_outer_wall))
|
||||||
((ConfigOptionFloats, fan_cooling_layer_time))
|
((ConfigOptionFloats, fan_cooling_layer_time))
|
||||||
((ConfigOptionStrings, filament_colour))
|
((ConfigOptionStrings, filament_colour))
|
||||||
((ConfigOptionBools, activate_air_filtration))
|
((ConfigOptionBools, activate_air_filtration))
|
||||||
|
|
|
@ -3330,6 +3330,7 @@ void TabFilament::build()
|
||||||
optgroup->append_line(line);
|
optgroup->append_line(line);
|
||||||
optgroup->append_single_option_line("reduce_fan_stop_start_freq");
|
optgroup->append_single_option_line("reduce_fan_stop_start_freq");
|
||||||
optgroup->append_single_option_line("slow_down_for_layer_cooling", "auto-cooling");
|
optgroup->append_single_option_line("slow_down_for_layer_cooling", "auto-cooling");
|
||||||
|
optgroup->append_single_option_line("dont_slow_down_outer_wall");
|
||||||
optgroup->append_single_option_line("slow_down_min_speed");
|
optgroup->append_single_option_line("slow_down_min_speed");
|
||||||
|
|
||||||
optgroup->append_single_option_line("enable_overhang_bridge_fan", "auto-cooling");
|
optgroup->append_single_option_line("enable_overhang_bridge_fan", "auto-cooling");
|
||||||
|
@ -3504,6 +3505,10 @@ void TabFilament::toggle_options()
|
||||||
toggle_option(el, has_enable_overhang_bridge_fan);
|
toggle_option(el, has_enable_overhang_bridge_fan);
|
||||||
|
|
||||||
toggle_option("additional_cooling_fan_speed", cfg.opt_bool("auxiliary_fan"));
|
toggle_option("additional_cooling_fan_speed", cfg.opt_bool("auxiliary_fan"));
|
||||||
|
|
||||||
|
// Orca: toggle dont slow down for external perimeters if
|
||||||
|
bool has_slow_down_for_layer_cooling = m_config->opt_bool("slow_down_for_layer_cooling", 0);
|
||||||
|
toggle_option("dont_slow_down_outer_wall", has_slow_down_for_layer_cooling);
|
||||||
}
|
}
|
||||||
if (m_active_page->title() == L("Filament"))
|
if (m_active_page->title() == L("Filament"))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue