diff options
Diffstat (limited to 'src/libslic3r/PrintConfig.cpp')
-rw-r--r-- | src/libslic3r/PrintConfig.cpp | 200 |
1 files changed, 140 insertions, 60 deletions
diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 35a5e7a14..46d77e229 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -97,6 +97,13 @@ void PrintConfigDef::init_common_params() def->mode = comExpert; def->set_default_value(new ConfigOptionBool(false)); + def = this->add("thumbnails_end_file", coBool); + def->label = L("Print at the end"); + def->tooltip = L("Print the thumbnail code at the end of the gcode file instead of the front." + "\nBe careful! Most firmwares expect it at the front, so be sure that your firmware support it."); + def->mode = comExpert; + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("thumbnails_with_bed", coBool); def->label = L("Bed on thumbnail"); def->tooltip = L("Show the bed texture on the thumbnail picture."); @@ -313,6 +320,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s² or %"); def->ratio_over = "default_acceleration"; def->min = 0; + def->max_literal = { -220, false }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(0,false)); @@ -332,7 +340,6 @@ void PrintConfigDef::init_fff_params() def->label = L("Bridges fan speed"); def->category = OptionCategory::cooling; def->tooltip = L("This fan speed is enforced during bridges and overhangs. It won't slow down the fan if it's currently running at a higher speed." - "\nSet to 1 to disable the fan." "\nSet to -1 to disable this override." "\nCan only be overriden by disable_fan_first_layers."); def->sidetext = L("%"); @@ -346,8 +353,8 @@ void PrintConfigDef::init_fff_params() def->label = L("Infill bridges fan speed"); def->category = OptionCategory::cooling; def->tooltip = L("This fan speed is enforced during all infill bridges. It won't slow down the fan if it's currently running at a higher speed." - "\nSet to 1 to disable the fan." - "\nSet to -1 to disable this override (will take the value of Bridges fan speed)." + "\nSet to 1 to follow default speed." + "\nSet to -1 to disable this override (internal bridges will use Bridges fan speed)." "\nCan only be overriden by disable_fan_first_layers."); def->sidetext = L("%"); def->min = -1; @@ -657,6 +664,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s² or %"); def->ratio_over = "machine_max_acceleration_X"; def->min = 0; + def->max_literal = { -200, false }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(0,false)); @@ -684,7 +692,7 @@ void PrintConfigDef::init_fff_params() def->max = 1000; def->mode = comExpert; def->is_vector_extruder = true; - def->set_default_value(new ConfigOptionInts { 3 }); + def->set_default_value(new ConfigOptionInts { 1 }); def = this->add("dont_support_bridges", coBool); def->label = L("Don't support bridges"); @@ -708,7 +716,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->aliases = { "multiply_distance" }; def->min = 0; - def->set_default_value(new ConfigOptionFloat(0)); + def->set_default_value(new ConfigOptionFloat(6)); def = this->add("end_gcode", coString); def->label = L("End G-code"); @@ -740,7 +748,8 @@ void PrintConfigDef::init_fff_params() def->label = L("Ensure vertical shell thickness"); def->category = OptionCategory::perimeter; def->tooltip = L("Add solid infill near sloping surfaces to guarantee the vertical shell thickness " - "(top+bottom solid layers)."); + "(top+bottom solid layers)." + "\n!! solid_over_perimeters may erase these surfaces !! So you should deactivate it if you want to use this."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); @@ -848,6 +857,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/%"); def->ratio_over = "perimeter_extrusion_width"; def->min = 0; + def->max_literal = { 50, true }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(150, true)); @@ -859,6 +869,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/%"); def->ratio_over = "external_perimeter_extrusion_width"; def->min = 0; + def->max_literal = { 50, true }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(200, true)); @@ -874,10 +885,11 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); + def->set_default_value(new ConfigOptionFloatOrPercent(105, true, false)); def = this->add("external_perimeter_extrusion_spacing", coFloatOrPercent); def->label = L("External perimeters"); @@ -890,6 +902,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; @@ -1154,7 +1167,7 @@ void PrintConfigDef::init_fff_params() def = this->add("extruder_colour", coStrings); def->label = L("Extruder Color"); def->category = OptionCategory::extruders; - def->tooltip = L("This is only used in the Slic3r interface as a visual help."); + def->tooltip = L("This is only used in Slic3r interface as a visual help."); def->gui_type = "color"; // Empty string means no color assigned yet. def->mode = comAdvanced; @@ -1239,10 +1252,11 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false, true)); def = this->add("extrusion_spacing", coFloatOrPercent); def->label = L("Default extrusion spacing"); @@ -1253,10 +1267,11 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false, true)); + def->set_default_value(new ConfigOptionFloatOrPercent(100, true, false)); def = this->add("fan_always_on", coBools); def->label = L("Keep fan always on"); @@ -1265,7 +1280,7 @@ void PrintConfigDef::init_fff_params() " Useful for PLA, harmful for ABS."); def->mode = comSimple; def->is_vector_extruder = true; - def->set_default_value(new ConfigOptionBools{ false }); + def->set_default_value(new ConfigOptionBools{ true }); def = this->add("fan_below_layer_time", coInts); def->label = L("Enable fan if layer print time is below"); @@ -1576,8 +1591,8 @@ void PrintConfigDef::init_fff_params() def = this->add("filament_max_overlap", coPercents); def->label = L("Max line overlap"); - def->tooltip = L("This settign will ensure that all overlap are no hgher than this value." - " This is useful for filament that are too viscous, as the line can't flow under the previous one."); + def->tooltip = L("This setting will ensure that all 'overlap' are not higher than this value." + " This is useful for filaments that are too viscous, as the line can't flow under the previous one."); def->sidetext = L("%"); def->ratio_over = ""; def->min = 0; @@ -1835,6 +1850,7 @@ void PrintConfigDef::init_fff_params() " A value too low will make your extruder eat the filament."); def->ratio_over = "top_infill_extrusion_width"; def->min = 0; + def->max_literal = { 1, true }; def->mode = comExpert; def->sidetext = L("mm/%"); def->set_default_value(new ConfigOptionFloatOrPercent(50, true)); @@ -1862,6 +1878,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s² or %"); def->ratio_over = "default_acceleration"; def->min = 0; + def->max_literal = { -200, false }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); @@ -1891,10 +1908,11 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(140, true)); + def->set_default_value(new ConfigOptionFloatOrPercent(140, true, false)); def = this->add("first_layer_extrusion_spacing", coFloatOrPercent); def->label = L("First layer"); @@ -1906,6 +1924,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; @@ -1921,6 +1940,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or %"); def->ratio_over = "nozzle_diameter"; def->min = 0; + def->max_literal = { 20, false }; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(75, true)); @@ -1928,11 +1948,9 @@ void PrintConfigDef::init_fff_params() def->label = L("Max"); def->full_label = L("Default first layer speed"); def->category = OptionCategory::speed; - def->tooltip = L("If expressed as absolute value in mm/s, this speed will be applied to all the print moves " - "but infill of the first layer, it can be overwritten by the 'default' (default depends of the type of the path) " - "speed if it's lower than that. If expressed as a percentage " - "it will scale the current speed." - "\nSet it at 100% to remove any first layer speed modification (with first_layer_infill_speed and first_layer_speed_min)."); + def->tooltip = L("If expressed as absolute value in mm/s, this speed will be applied as a maximum to all the print moves (but infill) of the first layer." + "\nIf expressed as a percentage it will scale the current speed." + "\nSet it at 100% to remove any first layer speed modification (but for infill)."); def->sidetext = L("mm/s or %"); def->ratio_over = "depends"; def->min = 0; @@ -1943,29 +1961,25 @@ void PrintConfigDef::init_fff_params() def->label = L("Infill"); def->full_label = L("Infill first layer speed"); def->category = OptionCategory::speed; - def->tooltip = L("If expressed as absolute value in mm/s, this speed will be applied to infill moves " - "of the first layer, it can be overwritten by the 'default' (solid infill or infill if not bottom) " - "speed if it's lower than that. If expressed as a percentage " - "(for example: 40%) it will scale the current infill 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."); def->sidetext = L("mm/s or %"); def->ratio_over = "depends"; def->min = 0; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(30, false)); - def = this->add("first_layer_min_speed", coFloatOrPercent); + def = this->add("first_layer_min_speed", coFloat); def->label = L("Min"); def->full_label = L("Min first layer speed"); def->category = OptionCategory::speed; - def->tooltip = L("If expressed as absolute value in mm/s, this speed will be applied to all the print moves" - ", it can be overwritten by the 'default' (default depends of the type of the path) speed if it's higher than that." - " If expressed as a percentage it will scale the current speed." + def->tooltip = L("Minimum speed when printing the first layer." "\nSet zero to disable."); - def->sidetext = L("mm/s or %"); - def->ratio_over = "depends"; + def->sidetext = L("mm/s"); def->min = 0; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("first_layer_temperature", coInts); def->label = L("First layer"); @@ -1989,7 +2003,7 @@ void PrintConfigDef::init_fff_params() def->max = 1000; def->mode = comExpert; def->is_vector_extruder = true; - def->set_default_value(new ConfigOptionInts { 0 }); + def->set_default_value(new ConfigOptionInts { 4 }); def = this->add("gap_fill", coBool); def->label = L("Gap fill"); @@ -2006,7 +2020,7 @@ void PrintConfigDef::init_fff_params() def->category = OptionCategory::perimeter; def->tooltip = L("All gaps, between the last perimeter and the infill, which are thinner than a perimeter will be filled by gapfill."); def->mode = comExpert; - def->set_default_value(new ConfigOptionBool{true }); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("gap_fill_min_area", coFloatOrPercent); def->label = L("Min surface"); @@ -2059,7 +2073,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("All characters that are written here will be replaced by '_' when writing the gcode file name." "\nIf the first charater is '[' or '(', then this field will be considered as a regexp (enter '[^a-zA-Z0-9]' to only use ascii char)."); def->mode = comExpert; - def->set_default_value(new ConfigOptionString("")); + def->set_default_value(new ConfigOptionString("[<>:\"/\\\\|?*]")); def = this->add("gcode_flavor", coEnum); def->label = L("G-code flavor"); @@ -2095,7 +2109,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("Lerdge"); def->enum_labels.push_back(L("No extrusion")); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionEnum<GCodeFlavor>(gcfSprinter)); + def->set_default_value(new ConfigOptionEnum<GCodeFlavor>(gcfMarlin)); def = this->add("gcode_filename_illegal_char", coString); def->label = L("Illegal characters"); @@ -2149,6 +2163,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s² or %"); def->ratio_over = "default_acceleration"; def->min = 0; + def->max_literal = { -200, false }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(0,false)); @@ -2201,6 +2216,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = def_infill_anchor_min->ratio_over; def->gui_type = def_infill_anchor_min->gui_type; def->enum_values = def_infill_anchor_min->enum_values; + def->max_literal = def_infill_anchor_min->max_literal; def->enum_labels.push_back(L("0 (Simple connect)")); def->enum_labels.push_back("1 mm"); def->enum_labels.push_back("2 mm"); @@ -2331,10 +2347,11 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false, true)); def = this->add("infill_extrusion_spacing", coFloatOrPercent); def->label = L("Infill"); @@ -2346,10 +2363,11 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false, true)); + def->set_default_value(new ConfigOptionFloatOrPercent(100, true, false)); def = this->add("infill_first", coBool); def->label = L("Infill before perimeters"); @@ -2375,6 +2393,8 @@ void PrintConfigDef::init_fff_params() "as percentage (example: 15%) it is calculated over perimeter extrusion width."); def->sidetext = L("mm or %"); def->ratio_over = "perimeter_extrusion_width"; + def->min = 0; + def->max_literal = { 1, true }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(25, true)); @@ -2512,7 +2532,7 @@ void PrintConfigDef::init_fff_params() def = this->add("remaining_times", coBool); def->label = L("Supports remaining times"); def->category = OptionCategory::firmware; - def->tooltip = L("Emit somethign at 1 minute intervals into the G-code to let the firmware show accurate remaining time."); + def->tooltip = L("Emit something at 1 minute intervals into the G-code to let the firmware show accurate remaining time."); def->mode = comExpert; def->set_default_value(new ConfigOptionBool(false)); @@ -2538,13 +2558,16 @@ void PrintConfigDef::init_fff_params() def->category = OptionCategory::firmware; def->tooltip = L("The firmware supports stealth mode"); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionBool(true)); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("fan_speedup_time", coFloat); def->label = L("Fan startup delay"); def->category = OptionCategory::firmware; def->tooltip = L("Move the fan start in the past by at least this delay (in seconds, you can use decimals)." - " It assumes infinite acceleration for this time estimation, and will only take into account G1 and G0 moves. Use 0 to deactivate."); + " It assumes infinite acceleration for this time estimation, and will only take into account G1 and G0 moves." + "\nIt won't move fan comands from custom gcodes (they act as a sort of 'barrier')." + "\nIt won't move fan comands into the start gcode if the 'only custom start gcode' is activated." + "\nUse 0 to deactivate."); def->sidetext = L("s"); def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0)); @@ -2560,12 +2583,25 @@ void PrintConfigDef::init_fff_params() def->label = L("Fan KickStart time"); def->category = OptionCategory::firmware; def->tooltip = L("Add a M106 S255 (max speed for fan) for this amount of seconds before going down to the desired speed to kick-start the cooling fan." + "\nThis value is used for a 0->100% speedup, it will go down if the delta is lower." "\nSet to 0 to deactivate."); def->sidetext = L("s"); def->min = 0; def->mode = comExpert; def->set_default_value(new ConfigOptionFloat(0)); + def = this->add("lift_min", coFloat); + def->label = L("Min height for travel"); + def->category = OptionCategory::extruders; + def->tooltip = L("When an extruder travels to an object (from the start position or from an object to another), the nozzle height is guaranteed to be at least at this value." + "\nIt's made to ensure the nozzle won't hit clips or things you have on your bed. But be careful to not put a clip in the 'convex shape' of an object." + "\nSet to 0 to disable."); + def->sidetext = L("mm"); + def->min = 0; + def->mode = comExpert; + def->is_vector_extruder = true; + def->set_default_value(new ConfigOptionFloat(0)); + def = this->add("machine_limits_usage", coEnum); def->label = L("How to apply limits"); def->full_label = L("Purpose of Machine Limits"); @@ -2713,6 +2749,7 @@ void PrintConfigDef::init_fff_params() def->category = OptionCategory::speed; def->tooltip = L("If your firmware stops while printing, it may have its gcode queue full." " Set this parameter to merge extrusions into bigger ones to reduce the number of gcode commands the printer has to process each second." + "\nOn 8bit controlers, a value of 150 is typical." "\nNote that reducing your printing speed (at least for the external extrusions) will reduce the number of time this will triggger and so increase quality." "\nSet zero to disable."); def->min = 0; @@ -2731,19 +2768,22 @@ void PrintConfigDef::init_fff_params() def->is_vector_extruder = true; def->set_default_value(new ConfigOptionInts { 100 }); - def = this->add("max_layer_height", coFloats); + def = this->add("max_layer_height", coFloatsOrPercents); def->label = L("Max"); def->full_label = L("Max layer height"); def->category = OptionCategory::general; def->tooltip = L("This is the highest printable layer height for this extruder, used to cap " "the variable layer height and support layer height. Maximum recommended layer height " "is 75% of the extrusion width to achieve reasonable inter-layer adhesion. " - "If set to 0, layer height is limited to 75% of the nozzle diameter."); - def->sidetext = L("mm"); + "\nCan be a % of the nozzle diameter." + "\nIf set to 0, layer height is limited to 75% of the nozzle diameter."); + def->sidetext = L("mm or %"); + def->ratio_over = "nozzle_diameter"; def->min = 0; + def->max_literal = { 10, false }; def->mode = comSimple; def->is_vector_extruder = true; - def->set_default_value(new ConfigOptionFloats { 0. }); + def->set_default_value(new ConfigOptionFloatsOrPercents{ FloatOrPercent{ 75, true} }); def = this->add("max_print_speed", coFloat); def->label = L("Max print speed"); @@ -2823,17 +2863,20 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); - def = this->add("min_layer_height", coFloats); + def = this->add("min_layer_height", coFloatsOrPercents); def->label = L("Min"); def->full_label = L("Min layer height"); def->category = OptionCategory::extruders; def->tooltip = L("This is the lowest printable layer height for this extruder and limits " - "the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm."); - def->sidetext = L("mm"); + "the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm." + "\nCan be a % of the nozzle diameter."); + def->sidetext = L("mm or %"); + def->ratio_over = "nozzle_diameter"; def->min = 0; + def->max_literal = { 5, false }; def->mode = comSimple; def->is_vector_extruder = true; - def->set_default_value(new ConfigOptionFloats { 0.07 }); + def->set_default_value(new ConfigOptionFloatsOrPercents{ FloatOrPercent{ 5, true} }); def = this->add("min_length", coFloat); def->label = L("Minimum extrusion length"); @@ -2856,6 +2899,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or %"); def->ratio_over = "perimeter_extrusion_width"; def->min = 0; + def->max_literal = { 15, false }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(200, true)); @@ -3006,6 +3050,7 @@ void PrintConfigDef::init_fff_params() " Set to 0 to deactivate."); def->ratio_over = "nozzle_diameter"; def->min = 0; + def->max_literal = { 10, true }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(75, true)); @@ -3025,6 +3070,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Number of mm the overhang need to be for the reversal to be considered useful. Can be a % of the perimeter width."); def->ratio_over = "perimeter_extrusion_width"; def->min = 0; + def->max_literal = { 20, false }; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(250, true)); @@ -3080,6 +3126,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s² or %"); def->ratio_over = "default_acceleration"; def->min = 0; + def->max_literal = { -200, false }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(0,false)); @@ -3088,7 +3135,8 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Round corners for perimeters"); def->category = OptionCategory::perimeter; def->tooltip = L("Internal perimeters will go around sharp corners by turning around instead of making the same sharp corner." - " This can help when there are visible holes in sharp corners on perimeters"); + " This can help when there are visible holes in sharp corners on perimeters. It also help to print the letters on the benchy stern." + "\nCan incur some more processing time, and corners are a bit less sharp."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); @@ -3114,10 +3162,11 @@ void PrintConfigDef::init_fff_params() def->aliases = { "perimeters_extrusion_width" }; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false, true)); def = this->add("perimeter_extrusion_spacing", coFloatOrPercent); def->label = L("Perimeters"); @@ -3129,10 +3178,11 @@ void PrintConfigDef::init_fff_params() def->aliases = { "perimeters_extrusion_width" }; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false, true)); + def->set_default_value(new ConfigOptionFloatOrPercent(100, true, false)); def = this->add("perimeter_speed", coFloat); def->label = L("Internal"); @@ -3430,7 +3480,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("%"); def->min = 0; def->mode = comExpert; - def->set_default_value(new ConfigOptionPercent(100)); + def->set_default_value(new ConfigOptionPercent(80)); def = this->add("seam_travel_cost", coPercent); def->label = L("Travel cost"); @@ -3440,7 +3490,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("%"); def->min = 0; def->mode = comExpert; - def->set_default_value(new ConfigOptionPercent(100)); + def->set_default_value(new ConfigOptionPercent(20)); def = this->add("seam_gap", coFloatsOrPercents); def->label = L("Seam gap"); @@ -3449,6 +3499,7 @@ void PrintConfigDef::init_fff_params() "\nCan be a mm or a % of the current extruder diameter."); def->sidetext = L("mm or %"); def->min = 0; + def->max_literal = { 5, false }; def->mode = comExpert; def->is_vector_extruder = true; def->set_default_value(new ConfigOptionFloatsOrPercents{ FloatOrPercent{15,true} }); @@ -3522,6 +3573,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or %"); def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); @@ -3572,6 +3624,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or %"); def->ratio_over = "nozzle_diameter"; def->min = 0; + def->max_literal = { 100, false }; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(6, false)); @@ -3586,6 +3639,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or %"); def->ratio_over = "nozzle_diameter"; def->min = 0; + def->max_literal = { 500, false }; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(20, false)); @@ -3686,10 +3740,11 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false, true)); def = this->add("solid_infill_extrusion_spacing", coFloatOrPercent); def->label = L("Solid spacing"); @@ -3701,10 +3756,11 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false, true)); + def->set_default_value(new ConfigOptionFloatOrPercent(100, true, false)); def = this->add("solid_infill_speed", coFloatOrPercent); def->label = L("Solid"); @@ -3871,11 +3927,12 @@ void PrintConfigDef::init_fff_params() 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 somethign higher than 0, you can remove this 'inside filling'." + "\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." - "\nSet zero to disable."); + "\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."); def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(2)); @@ -3902,6 +3959,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or %"); def->ratio_over = "external_perimeter_extrusion_width"; def->min = 0; + def->max_literal = { 10, false}; def->mode = comAdvanced; // Default is half the external perimeter width. def->set_default_value(new ConfigOptionFloatOrPercent(50, true)); @@ -3953,6 +4011,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "top_infill_extrusion_width"; def->sidetext = L("mm"); def->min = 0; + def->max_literal = { 20, true }; def->mode = comAdvanced; def->aliases = { "support_material_contact_distance" }; def->set_default_value(new ConfigOptionFloatOrPercent(0.2, false)); @@ -3966,6 +4025,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "top_infill_extrusion_width"; def->sidetext = L("mm"); def->min = 0; + def->max_literal = { 20, true }; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(0.2,false)); @@ -3989,7 +4049,7 @@ void PrintConfigDef::init_fff_params() "(1+, 0 to use the current extruder to minimize tool changes)."); def->min = 0; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionInt(1)); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("support_material_extrusion_width", coFloatOrPercent); def->label = L("Support material"); @@ -4002,6 +4062,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); @@ -4020,7 +4081,7 @@ void PrintConfigDef::init_fff_params() "(1+, 0 to use the current extruder to minimize tool changes). This affects raft too."); def->min = 0; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionInt(1)); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("support_material_interface_layers", coInt); def->label = L("Interface layers"); @@ -4203,6 +4264,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->mode = comExpert; def->min = 0; + def->max_literal = { 20, true }; def->set_default_value(new ConfigOptionFloatOrPercent(33, true)); def = this->add("thin_walls_overlap", coFloatOrPercent); @@ -4213,6 +4275,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "external_perimeter_extrusion_width"; def->mode = comExpert; def->min = 0; + def->max_literal = { 10, true }; def->set_default_value(new ConfigOptionFloatOrPercent(50, true)); def = this->add("thin_walls_merge", coBool); @@ -4289,10 +4352,11 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); + def->set_default_value(new ConfigOptionFloatOrPercent(105, true, false)); def = this->add("top_infill_extrusion_spacing", coFloatOrPercent); def->label = L("Top solid spacing"); @@ -4303,6 +4367,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "nozzle_diameter"; def->min = 0; def->max = 1000; + def->max_literal = { 10, true }; def->precision = 6; def->can_phony = true; def->mode = comAdvanced; @@ -4354,6 +4419,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s² or %"); def->ratio_over = "default_acceleration"; def->min = 0; + def->max_literal = { -200, false }; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(1500, false)); @@ -4513,6 +4579,8 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Width of the brim for the wipe tower. Can be in mm or in % of the (assumed) only one nozzle diameter."); def->ratio_over = "nozzle_diameter"; def->mode = comAdvanced; + def->min = 0; + def->max_literal = { 100, true }; def->set_default_value(new ConfigOptionFloatOrPercent(150,true)); def = this->add("wipe_tower_x", coFloat); @@ -4645,6 +4713,7 @@ void PrintConfigDef::init_fff_params() " This setting allows you some leway to broaden the detection." "\nIn mm or in % of the radius."); def->sidetext = L("mm or %"); + def->max_literal = { 10, false}; def->mode = comExpert; def->set_default_value(new ConfigOptionFloatOrPercent(0.01, false)); @@ -4870,6 +4939,7 @@ void PrintConfigDef::init_milling_params() " You can set a number of mm or a percentage of the calculated optimal extra width (from flow calculation)."); def->sidetext = L("mm or %"); def->ratio_over = "computed_on_the_fly"; + def->max_literal = { 20, false }; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(150, true)); @@ -4879,6 +4949,7 @@ void PrintConfigDef::init_milling_params() def->tooltip = L("This setting restricts the post-process milling to a certain height, to avoid milling the bed. It can be a mm or a % of the first layer height (so it can depend on the object)."); def->sidetext = L("mm or %"); def->ratio_over = "first_layer_height"; + def->max_literal = { 10, false }; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloatOrPercent(200, true)); @@ -5673,6 +5744,8 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va value = "5"; } } + if ("first_layer_min_speed" == opt_key && value.back() == '%') + value = value.substr(0, value.length() - 1); //no percent. // Ignore the following obsolete configuration keys: static std::set<std::string> ignore = { @@ -5730,6 +5803,10 @@ std::map<std::string,std::string> PrintConfigDef::from_prusa(t_config_option_key if(value == "0") output["infill_connection"] = "notconnected"; } + if ("first_layer_speed" == opt_key) { + output["first_layer_min_speed"] = value; + output["first_layer_infill_speed"] = value; + } return output; } @@ -5851,6 +5928,7 @@ std::unordered_set<std::string> prusa_export_to_remove_keys = { "infill_dense_algo", "infill_dense", "infill_extrusion_spacing", +"lift_min", "machine_max_acceleration_travel", "max_speed_reduction", "milling_after_z", @@ -5914,6 +5992,7 @@ std::unordered_set<std::string> prusa_export_to_remove_keys = { "thin_walls_speed", "thumbnails_color", "thumbnails_custom_color", +"thumbnails_end_file", "thumbnails_with_bed", "thumbnails_with_support", "time_estimation_compensation", @@ -6113,7 +6192,8 @@ double PrintConfig::min_object_distance(const ConfigBase *config, double ref_hei skirts += config->option("skirt_brim")->getInt(); if (skirts > 0 && config->option("skirt_height")->getInt() >= 1 && !config->option("complete_objects_one_skirt")->getBool()) { float overlap_ratio = 1; - if (config->option<ConfigOptionPercents>("filament_max_overlap")) overlap_ratio = config->get_computed_value("filament_max_overlap"); + //can't know the extruder, so we settle on the worst: 100% + //if (config->option<ConfigOptionPercents>("filament_max_overlap")) overlap_ratio = config->get_computed_value("filament_max_overlap"); if (ref_height == 0) { skirt_dist = config->option("skirt_distance")->getFloat(); Flow skirt_flow = Flow::new_from_config_width( |