diff options
author | supermerill <merill@free.fr> | 2021-12-23 01:26:51 +0300 |
---|---|---|
committer | supermerill <merill@free.fr> | 2021-12-23 01:26:51 +0300 |
commit | de7bfabae8677914aab6bb047e5fcaf24f7b7d6d (patch) | |
tree | 9c88fd4ee36aa796d5733583d296715fedbcd4ea /src/libslic3r/PrintConfig.cpp | |
parent | 8dc30cf6353e085134d5d8147437e368f269e924 (diff) | |
parent | 9198f9e26eb4f49296d3a88e6f182ae95c908968 (diff) |
merge fixes
Diffstat (limited to 'src/libslic3r/PrintConfig.cpp')
-rw-r--r-- | src/libslic3r/PrintConfig.cpp | 99 |
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; |