Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsupermerill <merill@free.fr>2021-12-23 01:26:51 +0300
committersupermerill <merill@free.fr>2021-12-23 01:26:51 +0300
commitde7bfabae8677914aab6bb047e5fcaf24f7b7d6d (patch)
tree9c88fd4ee36aa796d5733583d296715fedbcd4ea /src/libslic3r/PrintConfig.cpp
parent8dc30cf6353e085134d5d8147437e368f269e924 (diff)
parent9198f9e26eb4f49296d3a88e6f182ae95c908968 (diff)
merge fixes
Diffstat (limited to 'src/libslic3r/PrintConfig.cpp')
-rw-r--r--src/libslic3r/PrintConfig.cpp99
1 files changed, 69 insertions, 30 deletions
diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp
index d50cbecf8..de22a6689 100644
--- a/src/libslic3r/PrintConfig.cpp
+++ b/src/libslic3r/PrintConfig.cpp
@@ -138,7 +138,7 @@ void PrintConfigDef::init_common_params()
def = this->add("slice_closing_radius", coFloat);
def->label = L("Slice gap closing radius");
def->category = OptionCategory::slicing;
- def->tooltip = L("Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. "
+ def->tooltip = L("Fill cracks smaller than 2x gap closing radius during the triangle mesh slicing. "
"The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low.");
def->sidetext = L("mm");
def->min = 0;
@@ -223,7 +223,7 @@ void PrintConfigDef::init_fff_params()
def->label = L("Allow empty layers");
def->full_label = L("Allow empty layers");
def->category = OptionCategory::slicing;
- def->tooltip = L("Do not prevent the gcode builder to trigger an exception if a full layer is empty and so the print will have to start from thin air afterward.");
+ def->tooltip = L("Prevent the gcode builder from triggering an exception if a full layer is empty, and allow the print to start from thin air afterward.");
def->mode = comExpert;
def->set_default_value(new ConfigOptionBool(false));
@@ -240,7 +240,7 @@ void PrintConfigDef::init_fff_params()
def->label = L("Don't avoid crossing on 1st layer");
def->full_label = L("Don't avoid crossing on 1st layer");
def->category = OptionCategory::perimeter;
- def->tooltip = L("Do not use the 'Avoid crossing perimeters' on the first layer.");
+ def->tooltip = L("Disable 'Avoid crossing perimeters' for the first layer.");
def->mode = comExpert;
def->set_default_value(new ConfigOptionBool(true));
@@ -249,7 +249,7 @@ void PrintConfigDef::init_fff_params()
def->category = OptionCategory::perimeter;
def->tooltip = L("The maximum detour length for avoid crossing perimeters. "
"If the detour is longer than this value, avoid crossing perimeters is not applied for this travel path. "
- "Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path.");
+ "Detour length can be specified either as an absolute value or as percentage (for example 50%) of a direct travel path.");
def->sidetext = L("mm or % (zero to disable)");
def->min = 0;
def->mode = comExpert;
@@ -259,7 +259,7 @@ void PrintConfigDef::init_fff_params()
def->label = L("Other layers");
def->category = OptionCategory::filament;
def->tooltip = L("Bed temperature for layers after the first one. "
- "Set this to zero to disable bed temperature control commands in the output.");
+ "Set zero to disable bed temperature control commands in the output.");
def->sidetext = L("°C");
def->full_label = L("Bed temperature");
def->sidetext = L("°C");
@@ -627,7 +627,7 @@ void PrintConfigDef::init_fff_params()
def->label = L("Allow only one skirt loop");
def->category = OptionCategory::output;
def->tooltip = L("When using 'Complete individual objects', the default behavior is to draw the skirt around each object."
- " if you prefer to have only one skirt for the whole plater, use this option.");
+ " if you prefer to have only one skirt for the whole platter, use this option.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
@@ -756,7 +756,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("duplicate_distance", coFloat);
def->label = L("Default distance between objects");
def->category = OptionCategory::output;
- def->tooltip = L("Default distance used for the auto-arrange feature of the plater.\nSet to 0 to use the last value instead.");
+ def->tooltip = L("Default distance used for the auto-arrange feature of the platter.\nSet to 0 to use the last value instead.");
def->sidetext = L("mm");
def->aliases = { "multiply_distance" };
def->min = 0;
@@ -1215,7 +1215,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("Set this to the clearance radius around your extruder. "
"If the extruder is not centered, choose the largest value for safety. "
"This setting is used to check for collisions and to display the graphical preview "
- "in the plater."
+ "in the platter."
"\nSet zero to disable clearance checking.");
def->sidetext = L("mm");
def->min = 0;
@@ -1329,7 +1329,7 @@ void PrintConfigDef::init_fff_params()
def->precision = 6;
def->can_phony = true;
def->mode = comAdvanced;
- def->set_default_value(new ConfigOptionFloatOrPercent(100, true, false));
+ def->set_default_value(new ConfigOptionFloatOrPercent(0, false, false));
def = this->add("fan_always_on", coBools);
def->label = L("Keep fan always on");
@@ -1399,7 +1399,7 @@ void PrintConfigDef::init_fff_params()
def->category = OptionCategory::filament;
def->tooltip = L("Maximum speed allowed for this filament. Limits the maximum "
"speed of a print to the minimum of the print speed and the filament speed. "
- "Set to zero for no limit.");
+ "Set zero for no limit.");
def->sidetext = L("mm/s");
def->min = 0;
def->mode = comAdvanced;
@@ -1411,7 +1411,7 @@ void PrintConfigDef::init_fff_params()
def->category = OptionCategory::filament;
def->tooltip = L("Maximum volumetric speed allowed for this filament. Limits the maximum volumetric "
"speed of a print to the minimum of print and filament volumetric speed. "
- "Set to zero for no limit.");
+ "Set zero for no limit.");
def->sidetext = L("mm³/s");
def->min = 0;
def->mode = comAdvanced;
@@ -1964,7 +1964,7 @@ void PrintConfigDef::init_fff_params()
def->label = L("First layer");
def->full_label = L("First layer bed temperature");
def->category = OptionCategory::filament;
- def->tooltip = L("Heated build plate temperature for the first layer. Set this to zero to disable "
+ def->tooltip = L("Heated build plate temperature for the first layer. Set zero to disable "
"bed temperature control commands in the output.");
def->sidetext = L("°C");
def->max = 0;
@@ -2064,7 +2064,7 @@ void PrintConfigDef::init_fff_params()
def->full_label = L("First layer nozzle temperature");
def->category = OptionCategory::filament;
def->tooltip = L("Extruder nozzle temperature for first layer. If you want to control temperature manually "
- "during print, set this to zero to disable temperature control commands in the output file.");
+ "during print, set zero to disable temperature control commands in the output file.");
def->sidetext = L("°C");
def->min = 0;
def->max = max_temp;
@@ -2917,7 +2917,10 @@ void PrintConfigDef::init_fff_params()
def = this->add("max_speed_reduction", coPercents);
def->label = L("Max speed reduction");
def->category = OptionCategory::speed;
- def->tooltip = L("Set to 90% if you don't want the speed to be reduced by more than 90%.");
+ def->tooltip = L("This setting control by how much the speed can be reduced to increase the layer time."
+ " It's a maximum reduction, so a lower value makes the minimum speed higher."
+ " Set to 90% if you don't want the speed to go below 10% of the current speed."
+ "\nSet zero to disable");
def->sidetext = L("%");
def->min = 0;
def->max = 100;
@@ -3580,7 +3583,7 @@ void PrintConfigDef::init_fff_params()
def->full_label = L("Enforce lift on first layer");
def->category = OptionCategory::extruders;
def->tooltip = L("Select this option to enforce z-lift on the first layer."
- "\nIf this is enabled and the lift value is 0 or deactivated, then every first move before each object will be lifted by the first layer height.");
+ "\nUseful to still use the lift on the first layer even if the 'Only lift Z below' (retract_lift_above) is higher than 0.");
def->mode = comAdvanced;
def->is_vector_extruder = true;
def->set_default_value(new ConfigOptionBools{ false });
@@ -3726,7 +3729,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("skirt_distance", coFloat);
def->label = L("Distance from object");
def->category = OptionCategory::skirtBrim;
- def->tooltip = L("Distance between skirt and object(s). Set this to zero to attach the skirt "
+ def->tooltip = L("Distance between skirt and object(s). Set zero to attach the skirt "
"to the object(s) and get a brim for better adhesion.");
def->sidetext = L("mm");
def->min = 0;
@@ -3763,14 +3766,14 @@ void PrintConfigDef::init_fff_params()
def->max_literal = { 10, true };
def->precision = 6;
def->mode = comAdvanced;
- def->set_default_value(new ConfigOptionFloatOrPercent(0, false));
+ def->set_default_value(new ConfigOptionFloatOrPercent(130, true));
def = this->add("skirts", coInt);
def->label = L("Loops (minimum)");
def->full_label = L("Skirt Loops");
def->category = OptionCategory::skirtBrim;
def->tooltip = L("Number of loops for the skirt. If the Minimum Extrusion Length option is set, "
- "the number of loops might be greater than the one configured here. Set this to zero "
+ "the number of loops might be greater than the one configured here. Set zero "
"to disable skirt completely.");
def->min = 0;
def->mode = comSimple;
@@ -4135,14 +4138,16 @@ void PrintConfigDef::init_fff_params()
def->sidetext = L("perimeters");
def->sidetext_width = 20;
def->category = OptionCategory::perimeter;
- def->tooltip = L("When you have a medium/hight number of top/bottom solid layers, and a low/medium of perimeters,"
- " then it have to put some solid infill inside the part to have enough solid layers."
- "\nBy setting this to something higher than 0, you can remove this 'inside filling'."
- " This number allow to keep some if there is a low number of perimeter over the void."
- "\nIf this setting is equal or higher than the top/bottom solid layer count, it won't evict anything."
- "\nIf this setting is set to 1, it will evict all solid fill are are only over perimeters."
+ def->tooltip = L("In sloping areas, when you have a number of top / bottom solid layers and few perimeters, "
+ " it may be necessary to put some solid infill above/below the perimeters to fulfill the top/bottom layers criteria."
+ "\nBy setting this to something higher than 0, you can control this behaviour, which might be desirable if "
+ "\nundesirable solid infill is being generated on slopes."
+ "\nThe number set here indicates the number of layers between the inside of the part and the air"
+ " at and beyond which solid infill should no longer be added above/below. If this setting is equal or higher than "
+ " the top/bottom solid layer count, it won't do anything. If this setting is set to 1, it will evict "
+ " all solid fill above/below perimeters. "
"\nSet zero to disable."
- "\n!! ensure_vertical_shell_thickness may be erased by this setting !! You may want to deactivate at least one of the two.");
+ "\n!! ensure_vertical_shell_thickness may be erased by this setting !!.");
def->min = 0;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionInt(2));
@@ -4426,7 +4431,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("Support material will not be generated for overhangs whose slope angle "
"(90° = vertical) is above the given threshold. In other words, this value "
"represent the most horizontal slope (measured from the horizontal plane) "
- "that you can print without support material. Set to zero for automatic detection "
+ "that you can print without support material. Set zero for automatic detection "
"(recommended).");
def->sidetext = L("°");
def->min = 0;
@@ -4446,7 +4451,7 @@ void PrintConfigDef::init_fff_params()
def->label = L("Other layers");
def->full_label = L("Temperature");
def->category = OptionCategory::filament;
- def->tooltip = L("Extruder nozzle temperature for layers after the first one. Set this to zero to disable "
+ def->tooltip = L("Extruder nozzle temperature for layers after the first one. Set zero to disable "
"temperature control commands in the output G-code.");
def->sidetext = L("°C");
def->full_label = L("Nozzle temperature");
@@ -4773,6 +4778,14 @@ void PrintConfigDef::init_fff_params()
def->is_vector_extruder = true;
def->set_default_value(new ConfigOptionBools{ false });
+ def = this->add("wipe_only_crossing", coBools);
+ def->label = L("Wipe only when crossing perimeters");
+ def->category = OptionCategory::extruders;
+ def->tooltip = L("Don't wipe when you don't cross a perimeter.");
+ def->mode = comAdvanced;
+ def->is_vector_extruder = true;
+ def->set_default_value(new ConfigOptionBools{ true });
+
def = this->add("wipe_speed", coFloats);
def->label = L("Wipe speed");
def->category = OptionCategory::extruders;
@@ -5021,7 +5034,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("z_step", coFloat);
def->label = L("Z full step");
def->tooltip = L("Set this to the height moved when your Z motor (or equivalent) turns one step."
- "If your motor needs 200 steps to move your head/plater by 1mm, this field should be 1/200 = 0.005."
+ "If your motor needs 200 steps to move your head/platter by 1mm, this field should be 1/200 = 0.005."
"\nNote that the gcode will write the z values with 6 digits after the dot if z_step is set (it's 3 digits if it's disabled)."
"\nSet zero to disable.");
def->cli = "z-step=f";
@@ -5047,7 +5060,7 @@ void PrintConfigDef::init_fff_params()
"retract_length", "retract_lift", "retract_lift_above", "retract_lift_below", "retract_speed", "deretract_speed", "retract_restart_extra", "retract_before_travel",
"wipe_extra_perimeter", "wipe_speed",
// bools
- "retract_layer_change", "wipe",
+ "retract_layer_change", "wipe", "wipe_only_crossing",
// percents
"retract_before_wipe",
// floatsOrPercents
@@ -5100,6 +5113,7 @@ void PrintConfigDef::init_extruder_option_keys()
"tool_name",
"wipe",
"wipe_extra_perimeter",
+ "wipe_only_crossing",
"wipe_speed",
};
@@ -5117,6 +5131,7 @@ void PrintConfigDef::init_extruder_option_keys()
"seam_gap",
"wipe",
"wipe_extra_perimeter",
+ "wipe_only_crossing",
"wipe_speed",
};
assert(std::is_sorted(m_extruder_retract_keys.begin(), m_extruder_retract_keys.end()));
@@ -5736,7 +5751,7 @@ void PrintConfigDef::init_sla_params()
def = this->add("pad_wall_height", coFloat);
def->label = L("Pad wall height");
- def->tooltip = L("Defines the pad cavity depth. Set to zero to disable the cavity. "
+ def->tooltip = L("Defines the pad cavity depth. Set zero to disable the cavity. "
"Be careful when enabling this feature, as some resins may "
"produce an extreme suction effect inside the cavity, "
"which makes peeling the print off the vat foil difficult.");
@@ -6328,6 +6343,7 @@ std::unordered_set<std::string> prusa_export_to_remove_keys = {
"wipe_advanced_nozzle_melted_volume",
"wipe_advanced",
"wipe_extra_perimeter",
+"wipe_only_crossing",
"wipe_speed",
"wipe_tower_brim",
"xy_inner_size_compensation",
@@ -6754,6 +6770,9 @@ std::set<const DynamicPrintConfig*> DynamicPrintConfig::value_changed(const t_co
if (width_option) {
width_option->set_phony(true);
spacing_option->set_phony(false);
+ if (spacing_value == 0)
+ width_option->value = 0;
+ else
width_option->value = (spacing_option->percent) ? std::round(100 * flow.width / max_nozzle_diameter) : (std::round(flow.width * 10000) / 10000);
width_option->percent = spacing_option->percent;
something_changed = true;
@@ -6764,6 +6783,9 @@ std::set<const DynamicPrintConfig*> DynamicPrintConfig::value_changed(const t_co
if (width_option) {
width_option->set_phony(true);
spacing_option->set_phony(false);
+ if (spacing_value == 0)
+ width_option->value = 0;
+ else
width_option->value = (spacing_option->percent) ? std::round(100 * flow.width / max_nozzle_diameter) : (std::round(flow.width * 10000) / 10000);
width_option->percent = spacing_option->percent;
something_changed = true;
@@ -6775,9 +6797,13 @@ std::set<const DynamicPrintConfig*> DynamicPrintConfig::value_changed(const t_co
if (width_option && perimeter_overlap_option) {
width_option->set_phony(true);
spacing_option->set_phony(false);
+ if(spacing_value == 0)
+ width_option->value = 0;
+ else {
flow.spacing_ratio = std::min(flow.spacing_ratio, float(perimeter_overlap_option->get_abs_value(1)));
flow.width = spacing_option->get_abs_value(max_nozzle_diameter) + layer_height_option->value * (1. - 0.25 * PI) * flow.spacing_ratio;
width_option->value = (spacing_option->percent) ? std::round(100 * flow.width / max_nozzle_diameter) : (std::round(flow.width * 10000) / 10000);
+ }
width_option->percent = spacing_option->percent;
something_changed = true;
}
@@ -6789,9 +6815,13 @@ std::set<const DynamicPrintConfig*> DynamicPrintConfig::value_changed(const t_co
if (width_option && external_perimeter_overlap_option) {
width_option->set_phony(true);
spacing_option->set_phony(false);
+ if (spacing_value == 0)
+ width_option->value = 0;
+ else {
flow.spacing_ratio = std::min(flow.spacing_ratio * 0.5f, float(external_perimeter_overlap_option->get_abs_value(0.25) + perimeter_overlap_option->get_abs_value(0.25)));
flow.width = spacing_option->get_abs_value(max_nozzle_diameter) + layer_height_option->value * (1. - 0.25 * PI) * flow.spacing_ratio;
width_option->value = (spacing_option->percent) ? std::round(100 * flow.width / max_nozzle_diameter) : (std::round(flow.width * 10000) / 10000);
+ }
width_option->percent = spacing_option->percent;
something_changed = true;
}
@@ -6801,6 +6831,9 @@ std::set<const DynamicPrintConfig*> DynamicPrintConfig::value_changed(const t_co
if (width_option) {
width_option->set_phony(true);
spacing_option->set_phony(false);
+ if (spacing_value == 0)
+ width_option->value = 0;
+ else
width_option->value = (spacing_option->percent) ? std::round(100 * flow.width / max_nozzle_diameter) : (std::round(flow.width * 10000) / 10000);
width_option->percent = spacing_option->percent;
something_changed = true;
@@ -6811,6 +6844,9 @@ std::set<const DynamicPrintConfig*> DynamicPrintConfig::value_changed(const t_co
if (width_option) {
width_option->set_phony(true);
spacing_option->set_phony(false);
+ if (spacing_value == 0)
+ width_option->value = 0;
+ else
width_option->value = (spacing_option->percent) ? std::round(100 * flow.width / max_nozzle_diameter) : (std::round(flow.width * 10000) / 10000);
width_option->percent = spacing_option->percent;
something_changed = true;
@@ -6821,6 +6857,9 @@ std::set<const DynamicPrintConfig*> DynamicPrintConfig::value_changed(const t_co
if (width_option) {
width_option->set_phony(true);
spacing_option->set_phony(false);
+ if (spacing_value == 0)
+ width_option->value = 0;
+ else
width_option->value = (spacing_option->percent) ? std::round(100 * flow.width / max_nozzle_diameter) : (std::round(flow.width * 10000) / 10000);
width_option->percent = spacing_option->percent;
something_changed = true;