mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-13 20:05:58 +08:00
small_perimeter now disable that modifier if set to 0
first_layer_infill_speed now take the first_layer_speed if set tot 0 supermerill/SuperSlicer#1948
This commit is contained in:
parent
3795a55e68
commit
66941e7e96
@ -267,9 +267,9 @@ group:sidetext_width$7:Modifiers
|
||||
setting:label_width$8:width$4:first_layer_infill_speed
|
||||
end_line
|
||||
line:Small perimeter speed
|
||||
setting:label_width$8:width$4:small_perimeter_speed
|
||||
setting:label_width$8:width$4:small_perimeter_min_length
|
||||
setting:label_width$8:width$4:small_perimeter_max_length
|
||||
setting:label_width$8:width$4:small_perimeter_speed
|
||||
group:Acceleration control (advanced)
|
||||
setting:default_acceleration
|
||||
setting:perimeter_acceleration
|
||||
|
@ -3033,7 +3033,7 @@ std::string GCode::extrude_loop_vase(const ExtrusionLoop &original_loop, const s
|
||||
if (paths.empty()) return "";
|
||||
|
||||
// apply the small/external? perimeter speed
|
||||
if (speed == -1 && is_perimeter(paths.front().role())){
|
||||
if (speed == -1 && is_perimeter(paths.front().role()) && this->m_config.small_perimeter_speed.value > 0){
|
||||
coordf_t min_length = scale_d(this->m_config.small_perimeter_min_length.get_abs_value(EXTRUDER_CONFIG_WITH_DEFAULT(nozzle_diameter, 0)));
|
||||
coordf_t max_length = scale_d(this->m_config.small_perimeter_max_length.get_abs_value(EXTRUDER_CONFIG_WITH_DEFAULT(nozzle_diameter, 0)));
|
||||
max_length = std::max(min_length, max_length);
|
||||
@ -4077,18 +4077,21 @@ double_t GCode::_compute_speed_mm_per_sec(const ExtrusionPath& path, double spee
|
||||
// don't modify bridge speed
|
||||
if (factor < 1 && !(is_bridge(path.role()))) {
|
||||
float small_speed = (float)m_config.small_perimeter_speed.get_abs_value(m_config.perimeter_speed);
|
||||
if (small_speed > 0)
|
||||
//apply factor between feature speed and small speed
|
||||
speed = (speed * factor) + double((1.f - factor) * small_speed);
|
||||
}
|
||||
// Apply first layer modifier
|
||||
if (this->on_first_layer()) {
|
||||
const double base_speed = speed;
|
||||
double first_layer_speed = m_config.first_layer_speed.get_abs_value(base_speed);
|
||||
if (path.role() == erInternalInfill || path.role() == erSolidInfill) {
|
||||
double first_layer_infill_speed = m_config.first_layer_infill_speed.get_abs_value(base_speed);
|
||||
if (first_layer_infill_speed > 0)
|
||||
speed = std::min(first_layer_infill_speed, speed);
|
||||
else if (first_layer_speed > 0)
|
||||
speed = std::min(first_layer_speed, speed);
|
||||
} else {
|
||||
double first_layer_speed = m_config.first_layer_speed.get_abs_value(base_speed);
|
||||
if (first_layer_speed > 0)
|
||||
speed = std::min(first_layer_speed, speed);
|
||||
}
|
||||
|
@ -1994,12 +1994,13 @@ void PrintConfigDef::init_fff_params()
|
||||
def->set_default_value(new ConfigOptionFloatOrPercent(30, false));
|
||||
|
||||
def = this->add("first_layer_infill_speed", coFloatOrPercent);
|
||||
def->label = L("Infill");
|
||||
def->full_label = L("Infill first layer speed");
|
||||
def->label = L("Max infill");
|
||||
def->full_label = L("Infill max first layer speed");
|
||||
def->category = OptionCategory::speed;
|
||||
def->tooltip = L("If expressed as absolute value in mm/s, this speed will be applied as a maximum for all infill print moves of the first layer."
|
||||
"\nIf expressed as a percentage it will scale the current infill speed."
|
||||
"\nSet it at 100% to remove any infill first layer speed modification.");
|
||||
"\nSet it at 100% to remove any infill first layer speed modification."
|
||||
"\nSet zero to disable (using first_layer_speed instead).");
|
||||
def->sidetext = L("mm/s or %");
|
||||
def->ratio_over = "depends";
|
||||
def->min = 0;
|
||||
@ -3696,7 +3697,8 @@ void PrintConfigDef::init_fff_params()
|
||||
def->category = OptionCategory::speed;
|
||||
def->tooltip = L("This separate setting will affect the speed of perimeters having radius <= 6.5mm "
|
||||
"(usually holes). If expressed as percentage (for example: 80%) it will be calculated "
|
||||
"on the perimeters speed setting above. Set zero for auto.");
|
||||
"on the perimeters speed setting above."
|
||||
"\nSet zero to disable.");
|
||||
def->sidetext = L("mm/s or %");
|
||||
def->ratio_over = "perimeter_speed";
|
||||
def->min = 0;
|
||||
|
@ -390,6 +390,10 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config)
|
||||
// gap fill can appear in infill
|
||||
//toggle_field("gap_fill_speed", have_perimeters && config->opt_bool("gap_fill"));
|
||||
|
||||
//speed
|
||||
for (auto el : { "small_perimeter_min_length", "small_perimeter_max_length" })
|
||||
toggle_field(el, config->option("small_perimeter_speed")->getFloat() > 0);
|
||||
|
||||
bool has_ironing_pattern = config->opt_enum<InfillPattern>("top_fill_pattern") == InfillPattern::ipSmooth
|
||||
|| config->opt_enum<InfillPattern>("bottom_fill_pattern") == InfillPattern::ipSmooth
|
||||
|| config->opt_enum<InfillPattern>("solid_fill_pattern") == InfillPattern::ipSmooth;
|
||||
|
Loading…
x
Reference in New Issue
Block a user