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
|
setting:label_width$8:width$4:first_layer_infill_speed
|
||||||
end_line
|
end_line
|
||||||
line:Small perimeter speed
|
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_min_length
|
||||||
setting:label_width$8:width$4:small_perimeter_max_length
|
setting:label_width$8:width$4:small_perimeter_max_length
|
||||||
setting:label_width$8:width$4:small_perimeter_speed
|
|
||||||
group:Acceleration control (advanced)
|
group:Acceleration control (advanced)
|
||||||
setting:default_acceleration
|
setting:default_acceleration
|
||||||
setting:perimeter_acceleration
|
setting:perimeter_acceleration
|
||||||
|
@ -3033,7 +3033,7 @@ std::string GCode::extrude_loop_vase(const ExtrusionLoop &original_loop, const s
|
|||||||
if (paths.empty()) return "";
|
if (paths.empty()) return "";
|
||||||
|
|
||||||
// apply the small/external? perimeter speed
|
// 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 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)));
|
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);
|
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
|
// don't modify bridge speed
|
||||||
if (factor < 1 && !(is_bridge(path.role()))) {
|
if (factor < 1 && !(is_bridge(path.role()))) {
|
||||||
float small_speed = (float)m_config.small_perimeter_speed.get_abs_value(m_config.perimeter_speed);
|
float small_speed = (float)m_config.small_perimeter_speed.get_abs_value(m_config.perimeter_speed);
|
||||||
//apply factor between feature speed and small speed
|
if (small_speed > 0)
|
||||||
speed = (speed * factor) + double((1.f - factor) * small_speed);
|
//apply factor between feature speed and small speed
|
||||||
|
speed = (speed * factor) + double((1.f - factor) * small_speed);
|
||||||
}
|
}
|
||||||
// Apply first layer modifier
|
// Apply first layer modifier
|
||||||
if (this->on_first_layer()) {
|
if (this->on_first_layer()) {
|
||||||
const double base_speed = speed;
|
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) {
|
if (path.role() == erInternalInfill || path.role() == erSolidInfill) {
|
||||||
double first_layer_infill_speed = m_config.first_layer_infill_speed.get_abs_value(base_speed);
|
double first_layer_infill_speed = m_config.first_layer_infill_speed.get_abs_value(base_speed);
|
||||||
if (first_layer_infill_speed > 0)
|
if (first_layer_infill_speed > 0)
|
||||||
speed = std::min(first_layer_infill_speed, speed);
|
speed = std::min(first_layer_infill_speed, speed);
|
||||||
|
else if (first_layer_speed > 0)
|
||||||
|
speed = std::min(first_layer_speed, speed);
|
||||||
} else {
|
} else {
|
||||||
double first_layer_speed = m_config.first_layer_speed.get_abs_value(base_speed);
|
|
||||||
if (first_layer_speed > 0)
|
if (first_layer_speed > 0)
|
||||||
speed = std::min(first_layer_speed, speed);
|
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->set_default_value(new ConfigOptionFloatOrPercent(30, false));
|
||||||
|
|
||||||
def = this->add("first_layer_infill_speed", coFloatOrPercent);
|
def = this->add("first_layer_infill_speed", coFloatOrPercent);
|
||||||
def->label = L("Infill");
|
def->label = L("Max infill");
|
||||||
def->full_label = L("Infill first layer speed");
|
def->full_label = L("Infill max first layer speed");
|
||||||
def->category = OptionCategory::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."
|
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."
|
"\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->sidetext = L("mm/s or %");
|
||||||
def->ratio_over = "depends";
|
def->ratio_over = "depends";
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
@ -3696,7 +3697,8 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->category = OptionCategory::speed;
|
def->category = OptionCategory::speed;
|
||||||
def->tooltip = L("This separate setting will affect the speed of perimeters having radius <= 6.5mm "
|
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 "
|
"(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->sidetext = L("mm/s or %");
|
||||||
def->ratio_over = "perimeter_speed";
|
def->ratio_over = "perimeter_speed";
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
|
@ -390,6 +390,10 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config)
|
|||||||
// gap fill can appear in infill
|
// gap fill can appear in infill
|
||||||
//toggle_field("gap_fill_speed", have_perimeters && config->opt_bool("gap_fill"));
|
//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
|
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>("bottom_fill_pattern") == InfillPattern::ipSmooth
|
||||||
|| config->opt_enum<InfillPattern>("solid_fill_pattern") == InfillPattern::ipSmooth;
|
|| config->opt_enum<InfillPattern>("solid_fill_pattern") == InfillPattern::ipSmooth;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user