diff --git a/src/PrintConfigs/config_metadata.proto b/src/PrintConfigs/config_metadata.proto new file mode 100644 index 0000000000..f2a5f36da9 --- /dev/null +++ b/src/PrintConfigs/config_metadata.proto @@ -0,0 +1,144 @@ +// OrcaSlicer Print Config - Custom Field Options +// This file defines the metadata annotations used on all config setting fields. +// These annotations are read by the codegen tool to produce: +// - PrintConfigDef_generated.cpp (init_fff_params replacement) +// - PrintConfig_generated.hpp (struct definitions) +// - Preset_options_generated.cpp (preset option lists) +// - Invalidation_generated.cpp (invalidation map) +// - OptionKeys_generated.cpp (extruder/filament/variant key lists) + +syntax = "proto3"; + +import "google/protobuf/descriptor.proto"; + +package orca; + +// --- Enums for annotations --- + +enum ConfigMode { + MODE_SIMPLE = 0; + MODE_ADVANCED = 1; + MODE_DEVELOP = 2; +} + +enum PresetType { + PRESET_PRINT = 0; + PRESET_FILAMENT = 1; + PRESET_PRINTER = 2; +} + +enum InvalidationStep { + STEP_GCODE_EXPORT = 0; + STEP_SKIRT_BRIM = 1; + STEP_WIPE_TOWER = 2; + STEP_SLICE = 3; + STEP_PERIMETERS = 4; + STEP_INFILL = 5; + STEP_SUPPORT = 6; + STEP_NONE = 7; +} + +enum OptionListMembership { + LIST_NONE = 0; + LIST_EXTRUDER_OPTION_KEYS = 1; + LIST_FILAMENT_OPTION_KEYS = 2; + LIST_VARIANT_OPTION_KEYS = 3; +} + +// --- Custom field options --- + +extend google.protobuf.FieldOptions { + // Display metadata + string label = 50001; + string full_label = 50002; + string tooltip = 50003; + string category = 50004; + string sidetext = 50005; + + // Numeric constraints + double min_value = 50006; + double max_value = 50007; + double max_literal = 50008; + + // UI behavior + ConfigMode mode = 50009; + string ratio_over = 50010; + bool multiline = 50013; + bool full_width = 50014; + int32 height = 50015; + + // Classification + PresetType preset = 50011; + repeated InvalidationStep invalidates = 50012; + repeated OptionListMembership list_membership = 50018; + + // Migration + string legacy_name = 50016; + + // Nullable support (for ConfigOptionFloatsNullable, etc.) + bool is_nullable = 50017; + + // GUI type override (e.g. "i_enum_open", "color", "f_enum_open") + string gui_type = 50019; + string gui_flags = 50020; + + // Enum metadata (key map reference for C++ enum binding) + string enum_keys_map_ref = 50021; + + // Whether this option should not appear in CLI + bool no_cli = 50022; + + // ConfigOptionDef::readonly + bool readonly = 50023; + + // Override the auto-detected co_type (e.g. "coPercent", "coEnum") + // Used when proto type (float, int32) is ambiguous + string co_type_hint = 50024; + + // Default value — constructor args only (e.g. "1.0", "5000.0, 5000.0") + // Codegen reconstructs full C++ from co_type + this value + string default_value = 50025; + + // Whether a default value is present (needed because proto3 can't + // distinguish "set to empty string" from "not set") + bool has_default = 50028; + + // Enum values (string keys for coEnum options) + repeated string enum_value_entries = 50026; + + // Enum labels (display names for enum values) + repeated string enum_label_entries = 50027; + + // UI layout: where this option appears in Tab.cpp + // tab_type = "Print" | "Filament" | "Printer" + // tab_page = page title as shown in the UI (e.g. "Quality") + // tab_optgroup = optgroup title within that page (e.g. "Layer height") + string tab_type = 50029; + string tab_page = 50030; + string tab_optgroup = 50031; +} + +// --- Message-level options --- + +extend google.protobuf.MessageOptions { + // Virtual keys: preset option keys that belong to this preset type but have + // no ConfigOptionDef entry (printer metadata, host settings, compatibility + // flags, filament retraction overrides, cross-preset keys, etc.). + // The codegen emits these directly into s_Preset_*_options alongside the + // field-derived keys, so no hand-written extender is needed in Preset.cpp. + repeated string virtual_preset_keys = 60001; +} + +// --- Wrapper messages for complex types --- + +// Represents ConfigOptionFloatOrPercent +message FloatOrPercent { + double value = 1; + bool percent = 2; +} + +// Represents ConfigOptionPoint (Vec2d) +message Point2D { + double x = 1; + double y = 2; +} diff --git a/src/PrintConfigs/generated/filament.proto b/src/PrintConfigs/generated/filament.proto new file mode 100644 index 0000000000..d81126e2d8 --- /dev/null +++ b/src/PrintConfigs/generated/filament.proto @@ -0,0 +1,1744 @@ +// OrcaSlicer - FilamentSettings +// Edit this file and re-run: python tools/run_codegen.py + +syntax = "proto3"; + +import "config_metadata.proto"; + +package orca; + +message FilamentSettings { + + // ── Virtual keys: not in PrintConfigDef, but required in filament presets ── + // Compatibility / inheritance metadata + option (virtual_preset_keys) = "compatible_prints"; + option (virtual_preset_keys) = "compatible_printers"; + option (virtual_preset_keys) = "filament_flush_temp"; + option (virtual_preset_keys) = "inherits"; + // Per-filament retraction overrides (filament_extruder_override_keys in PrintConfig.cpp) + option (virtual_preset_keys) = "filament_deretraction_speed"; + option (virtual_preset_keys) = "filament_long_retractions_when_cut"; + option (virtual_preset_keys) = "filament_retract_before_wipe"; + option (virtual_preset_keys) = "filament_retract_lift_above"; + option (virtual_preset_keys) = "filament_retract_lift_below"; + option (virtual_preset_keys) = "filament_retract_lift_enforce"; + option (virtual_preset_keys) = "filament_retract_restart_extra"; + option (virtual_preset_keys) = "filament_retract_when_changing_layer"; + option (virtual_preset_keys) = "filament_retraction_distances_when_cut"; + option (virtual_preset_keys) = "filament_retraction_length"; + option (virtual_preset_keys) = "filament_retraction_minimum_travel"; + option (virtual_preset_keys) = "filament_retraction_speed"; + option (virtual_preset_keys) = "filament_wipe"; + option (virtual_preset_keys) = "filament_wipe_distance"; + option (virtual_preset_keys) = "filament_z_hop"; + option (virtual_preset_keys) = "filament_z_hop_types"; + + repeated string filament_end_gcode = 1 [ + (label) = "End G-code", + (tooltip) = "End G-code when finishing the printing of this filament.", + (category) = "Filament/Advanced", + (tab_type) = "Filament", + (tab_page) = "Advanced", + (tab_optgroup) = "Filament end G-code", + (height) = 120, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "\" \"", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated string filament_start_gcode = 2 [ + (label) = "Start G-code", + (tooltip) = "Start G-code when starting the printing of this filament.", + (category) = "Filament/Advanced", + (tab_type) = "Filament", + (tab_page) = "Advanced", + (tab_optgroup) = "Filament start G-code", + (height) = 12, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "\" \"", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated string filament_change_extrusion_role_gcode = 3 [ + (label) = "Change extrusion role G-code (filament)", + (tooltip) = "This G-code is inserted when the extrusion role is changed for the active filament.", + (category) = "Filament/Advanced", + (tab_type) = "Filament", + (tab_page) = "Advanced", + (tab_optgroup) = "Change extrusion role G-code", + (height) = 5, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "\"\"" + ]; + + + repeated bool enable_overhang_bridge_fan = 4 [ + (label) = "Force cooling for overhangs and bridges", + (tooltip) = "Enable this option to allow adjustment of the part cooling fan speed for specifically for overhangs, internal and external bridges. Setting the fan speed specifically for these features can improve overall print quality and reduce warping.", + (category) = "Filament/Cooling", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 overhang_fan_speed = 5 [ + (label) = "Overhangs and external bridges fan speed", + (tooltip) = "Use this part cooling fan speed when printing bridges or overhang walls with an overhang threshold that exceeds the value set in the 'Overhangs cooling threshold' parameter above. Increasing the cooling specifically for overhangs and bridges can improve the overall print quality of these features.\\n\\nPlease note, this fan speed is clamped on the lower end by the minimum fan speed threshold set above. It is also adjusted upwards up to the maximum fan speed threshold when the minimum layer time threshold is not met.", + (category) = "Filament/Cooling", + (sidetext) = "%", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "100", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 overhang_fan_threshold = 6 [ + (label) = "Overhang cooling activation threshold", + (tooltip) = "When the overhang exceeds this specified threshold, force the cooling fan to run at the 'Overhang Fan Speed' set below. This threshold is expressed as a percentage, indicating the portion of each line's width that is unsupported by the layer beneath it. Setting this value to 0% forces the cooling fan to run for all outer walls, regardless of the overhang degree.", + (category) = "Filament/Cooling", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnums", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "(int)Overhang_threshold_bridge", + (enum_value_entries) = "0%", + (enum_value_entries) = "10%", + (enum_value_entries) = "25%", + (enum_value_entries) = "50%", + (enum_value_entries) = "75%", + (enum_value_entries) = "95%", + (enum_label_entries) = "0%", + (enum_label_entries) = "10%", + (enum_label_entries) = "25%", + (enum_label_entries) = "50%", + (enum_label_entries) = "75%", + (enum_label_entries) = "95%", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated bool slow_down_for_layer_cooling = 7 [ + (label) = "Slow printing down for better layer cooling", + (tooltip) = "Enable this option to slow printing speed down to make the final layer time not shorter than the layer time threshold in \\\"Max fan speed threshold\\\", so that layer can be cooled for longer time. This can improve the cooling quality for needle and small details.", + (category) = "Filament/Cooling", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated bool activate_air_filtration = 8 [ + (label) = "Activate air filtration", + (tooltip) = "Activate for better air filtration. G-code command: M106 P3 S(0-255)", + (category) = "Filament/Cooling", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Exhaust fan", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated bool activate_air_filtration_during_print = 9 [ + (full_label) = "During print", + (tooltip) = "Enable this to override the fan speed set in custom G-code during print.", + (category) = "Filament/Cooling", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Exhaust fan", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated bool activate_air_filtration_on_completion = 10 [ + (full_label) = "On completion", + (tooltip) = "Enable this to override the fan speed set in custom G-code after print completion.", + (category) = "Filament/Cooling", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Exhaust fan", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 during_print_exhaust_fan_speed = 11 [ + (label) = "Fan speed", + (tooltip) = "Speed of exhaust fan during printing. This speed will override the speed in filament custom G-code.", + (category) = "Filament/Cooling", + (sidetext) = "%", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Exhaust fan", + (min_value) = 0, + (max_value) = 100, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "60", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 complete_print_exhaust_fan_speed = 12 [ + (label) = "Fan speed", + (tooltip) = "Speed of exhaust fan after printing completes.", + (category) = "Filament/Cooling", + (sidetext) = "%", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Exhaust fan", + (min_value) = 0, + (max_value) = 100, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "80", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 close_fan_the_first_x_layers = 13 [ + (label) = "No cooling for the first", + (tooltip) = "Turn off all cooling fans for the first few layers. This can be used to improve build plate adhesion.", + (category) = "Filament/Cooling", + (sidetext) = "layers", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Cooling for specific layer", + (min_value) = 0, + (max_value) = 1000, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "1", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated bool reduce_fan_stop_start_freq = 14 [ + (label) = "Keep fan always on", + (tooltip) = "Enabling this setting means that the part cooling fan will never stop completely and will run at least at minimum speed to reduce the frequency of starting and stopping.", + (category) = "Filament/Cooling", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated bool dont_slow_down_outer_wall = 15 [ + (label) = "Don't slow down outer walls", + (tooltip) = "If enabled, this setting will ensure external perimeters are not slowed down to meet the minimum layer time. This is particularly helpful in the below scenarios:\\n1. To avoid changes in shine when printing glossy filaments\\n2. To avoid changes in external wall speed which may create slight wall artifacts that appear like Z banding\\n3. To avoid printing at speeds which cause VFAs (fine artifacts) on the external walls", + (category) = "Filament/Cooling", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float fan_cooling_layer_time = 16 [ + (label) = "Layer time", + (tooltip) = "Part cooling fan will be enabled for layers of which estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time.", + (category) = "Filament/Cooling", + (sidetext) = "s", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (min_value) = 0, + (max_value) = 1000, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "60.0f", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 full_fan_speed_layer = 17 [ + (label) = "Full fan speed at layer", + (tooltip) = "Fan speed will be ramped up linearly from zero at layer \\\"close_fan_the_first_x_layers\\\" to maximum at layer \\\"full_fan_speed_layer\\\". \\\"full_fan_speed_layer\\\" will be ignored if lower than \\\"close_fan_the_first_x_layers\\\", in which case the fan will be running at maximum allowed speed at layer \\\"close_fan_the_first_x_layers\\\" + 1.", + (category) = "Filament/Cooling", + (sidetext) = "layer", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Cooling for specific layer", + (min_value) = 0, + (max_value) = 1000, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 support_material_interface_fan_speed = 18 [ + (label) = "Support interface fan speed", + (tooltip) = "This part cooling fan speed is applied when printing support interfaces. Setting this parameter to a higher than regular speed reduces the layer binding strength between supports and the supported part, making them easier to separate.\\nSet to -1 to disable it.\\nThis setting is overridden by disable_fan_first_layers.", + (category) = "Filament/Cooling", + (sidetext) = "%", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (min_value) = -1, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "-1", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 internal_bridge_fan_speed = 19 [ + (label) = "Internal bridges fan speed", + (tooltip) = "The part cooling fan speed used for all internal bridges. Set to -1 to use the overhang fan speed settings instead.\\n\\nReducing the internal bridges fan speed, compared to your regular fan speed, can help reduce part warping due to excessive cooling applied over a large surface for a prolonged period of time.", + (category) = "Filament/Cooling", + (sidetext) = "%", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (min_value) = -1, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "-1", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 ironing_fan_speed = 20 [ + (label) = "Ironing fan speed", + (tooltip) = "This part cooling fan speed is applied when ironing. Setting this parameter to a lower than regular speed reduces possible nozzle clogging due to the low volumetric flow rate, making the interface smoother.\\nSet to -1 to disable it.", + (category) = "Filament/Cooling", + (sidetext) = "%", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (min_value) = -1, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "-1", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float fan_max_speed = 21 [ + (label) = "Fan speed", + (tooltip) = "Part cooling fan speed may be increased when auto cooling is enabled. This is the maximum speed for the part cooling fan.", + (category) = "Filament/Cooling", + (sidetext) = "%", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (min_value) = 0, + (max_value) = 100, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "100", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float fan_min_speed = 22 [ + (label) = "Fan speed", + (tooltip) = "Minimum speed for part cooling fan.", + (category) = "Filament/Cooling", + (sidetext) = "%", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (min_value) = 0, + (max_value) = 100, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "20", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 additional_cooling_fan_speed = 23 [ + (label) = "Fan speed", + (tooltip) = "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing except the first several layers which is defined by no cooling layers.\\nPlease enable auxiliary_fan in printer settings to use this feature. G-code command: M106 P2 S(0-255)", + (category) = "Filament/Cooling", + (sidetext) = "%", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Auxiliary part cooling fan", + (min_value) = 0, + (max_value) = 100, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float slow_down_min_speed = 24 [ + (label) = "Min print speed", + (tooltip) = "The minimum print speed to which the printer slows down to maintain the minimum layer time defined above when the slowdown for better layer cooling is enabled.", + (category) = "Filament/Cooling", + (sidetext) = "mm/s", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "10.", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float slow_down_layer_time = 25 [ + (label) = "Layer time", + (tooltip) = "The printing speed in exported G-code will be slowed down when the estimated layer time is shorter than this value in order to get better cooling for these layers.", + (category) = "Filament/Cooling", + (sidetext) = "s", + (tab_type) = "Filament", + (tab_page) = "Cooling", + (tab_optgroup) = "Part cooling fan", + (min_value) = 0, + (max_value) = 1000, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "5.0f", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + string compatible_printers_condition = 26 [ + (label) = "Condition", + (tooltip) = "A boolean expression using the configuration values of an active printer profile. If this expression evaluates to true, this profile is considered compatible with the active printer profile.", + (category) = "Filament/Dependencies", + (tab_type) = "Filament", + (tab_page) = "Dependencies", + (tab_optgroup) = "Compatible printers", + (mode) = MODE_ADVANCED, + (no_cli) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "" + ]; + + + string compatible_prints_condition = 27 [ + (label) = "Condition", + (tooltip) = "A boolean expression using the configuration values of an active print profile. If this expression evaluates to true, this profile is considered compatible with the active print profile.", + (category) = "Filament/Dependencies", + (tab_type) = "Filament", + (tab_page) = "Dependencies", + (tab_optgroup) = "Compatible process profiles", + (mode) = MODE_ADVANCED, + (no_cli) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "" + ]; + + + repeated int32 supertack_plate_temp = 28 [ + (label) = "Other layers", + (full_label) = "Bed temperature", + (tooltip) = "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 120, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "35", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 cool_plate_temp = 29 [ + (label) = "Other layers", + (full_label) = "Bed temperature", + (tooltip) = "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 300, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "35", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 textured_cool_plate_temp = 30 [ + (label) = "Other layers", + (full_label) = "Bed temperature", + (tooltip) = "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Textured Cool Plate.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 300, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "40", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 eng_plate_temp = 31 [ + (label) = "Other layers", + (full_label) = "Bed temperature", + (tooltip) = "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Engineering Plate.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 300, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "45", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 hot_plate_temp = 32 [ + (label) = "Other layers", + (full_label) = "Bed temperature", + (tooltip) = "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the High Temp Plate.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 300, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "45", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 textured_plate_temp = 33 [ + (label) = "Other layers", + (full_label) = "Bed temperature", + (tooltip) = "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Textured PEI Plate.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 300, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "45", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 supertack_plate_temp_initial_layer = 34 [ + (label) = "First layer", + (full_label) = "First layer bed temperature", + (tooltip) = "Bed temperature of the first layer. A value of 0 means the filament does not support printing on the Cool Plate SuperTack.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 120, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "35", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 cool_plate_temp_initial_layer = 35 [ + (label) = "First layer", + (full_label) = "First layer bed temperature", + (tooltip) = "Bed temperature of the first layer. A value of 0 means the filament does not support printing on the Cool Plate.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 120, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "35", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 textured_cool_plate_temp_initial_layer = 36 [ + (label) = "First layer", + (full_label) = "First layer bed temperature", + (tooltip) = "Bed temperature of the first layer. A value of 0 means the filament does not support printing on the Textured Cool Plate.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 120, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "40", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 eng_plate_temp_initial_layer = 37 [ + (label) = "First layer", + (full_label) = "First layer bed temperature", + (tooltip) = "Bed temperature of the first layer. A value of 0 means the filament does not support printing on the Engineering Plate.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 300, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "45", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 hot_plate_temp_initial_layer = 38 [ + (label) = "First layer", + (full_label) = "First layer bed temperature", + (tooltip) = "Bed temperature of the first layer. A value of 0 means the filament does not support printing on the High Temp Plate.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (max_value) = 300, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "45", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 textured_plate_temp_initial_layer = 39 [ + (label) = "First layer", + (full_label) = "First layer bed temperature", + (tooltip) = "Bed temperature of the first layer. A value of 0 means the filament does not support printing on the Textured PEI Plate.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Bed temperature", + (min_value) = 0, + (max_value) = 300, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "45", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float filament_flow_ratio = 40 [ + (label) = "Flow ratio", + (tooltip) = "The material may have volumetric change after switching between molten and crystalline states. This setting changes all extrusion flow of this filament in G-code proportionally. The recommended value range is between 0.95 and 1.05. You may be able to tune this value to get a nice flat surface if there is slight overflow or underflow.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Flow ratio and Pressure Advance", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "1.", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated bool enable_pressure_advance = 41 [ + (label) = "Enable pressure advance", + (tooltip) = "Enable pressure advance, auto calibration result will be overwritten once enabled.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Flow ratio and Pressure Advance", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float pressure_advance = 42 [ + (label) = "Pressure advance", + (tooltip) = "Pressure advance (Klipper) AKA Linear advance factor (Marlin).", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Flow ratio and Pressure Advance", + (max_value) = 2, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0.02", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated bool adaptive_pressure_advance = 43 [ + (label) = "Enable adaptive pressure advance (beta)", + (tooltip) = "With increasing print speeds (and hence increasing volumetric flow through the nozzle) and increasing accelerations, it has been observed that the effective PA value typically decreases. This means that a single PA value is not always 100% optimal for all features and a compromise value is usually used that does not cause too much bulging on features with lower flow speed and accelerations while also not causing gaps on faster features.\\n\\nThis feature aims to address this limitation by modeling the response of your printer's extrusion system depending on the volumetric flow speed and acceleration it is printing at. Internally, it generates a fitted model that can extrapolate the needed pressure advance for any given volumetric flow speed and acceleration, which is then emitted to the printer depending on the current print conditions.\\n\\nWhen enabled, the pressure advance value above is overridden. However, a reasonable default value above is strongly recommended to act as a fallback and for when tool changing.\\n\\n", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Flow ratio and Pressure Advance", + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false" + ]; + + + repeated string adaptive_pressure_advance_model = 44 [ + (label) = "Adaptive pressure advance measurements (beta)", + (tooltip) = "Add sets of pressure advance (PA) values, the volumetric flow speeds and accelerations they were measured at, separated by a comma. One set of values per line. For example\\n0.04,3.96,3000\\n0.033,3.96,10000\\n0.029,7.91,3000\\n0.026,7.91,10000\\n\\nHow to calibrate:\\n1. Run the pressure advance test for at least 3 speeds per acceleration value. It is recommended that the test is run for at least the speed of the external perimeters, the speed of the internal perimeters and the fastest feature print speed in your profile (usually its the sparse or solid infill). Then run them for the same speeds for the slowest and fastest print accelerations, and no faster than the recommended maximum acceleration as given by the Klipper input shaper\\n2. Take note of the optimal PA value for each volumetric flow speed and acceleration. You can find the flow number by selecting flow from the color scheme drop down and move the horizontal slider over the PA pattern lines. The number should be visible at the bottom of the page. The ideal PA value should be decreasing the higher the volumetric flow is. If it is not, confirm that your extruder is functioning correctly. The slower and with less acceleration you print, the larger the range of acceptable PA values. If no difference is visible, use the PA value from the faster test\\n3. Enter the triplets of PA values, Flow and Accelerations in the text box here and save your filament profile.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Flow ratio and Pressure Advance", + (height) = 15, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "\"0,0,0\n0,0,0\"" + ]; + + + repeated bool adaptive_pressure_advance_overhangs = 45 [ + (label) = "Enable adaptive pressure advance for overhangs (beta)", + (tooltip) = "Enable adaptive PA for overhangs as well as when flow changes within the same feature. This is an experimental option, as if the PA profile is not set accurately, it will cause uniformity issues on the external surfaces before and after overhangs.\\n", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Flow ratio and Pressure Advance", + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false" + ]; + + + repeated float adaptive_pressure_advance_bridges = 46 [ + (label) = "Pressure advance for bridges", + (tooltip) = "Pressure advance value for bridges. Set to 0 to disable.\\n\\nA lower PA value when printing bridges helps reduce the appearance of slight under extrusion immediately after bridges. This is caused by the pressure drop in the nozzle when printing in the air and a lower PA helps counteract this.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Flow ratio and Pressure Advance", + (max_value) = 2, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0.0" + ]; + + + repeated string default_filament_colour = 47 [ + (label) = "Default color", + (tooltip) = "Default filament color.\\nRight click to reset value to system default.", + (category) = "Filament/Filament", + (gui_type) = "color", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "\"\"", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 required_nozzle_HRC = 48 [ + (label) = "Required nozzle HRC", + (tooltip) = "Minimum HRC of nozzle required to print the filament. Zero means no checking of nozzle's HRC.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 0, + (max_value) = 500, + (mode) = MODE_DEVELOP, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float filament_max_volumetric_speed = 49 [ + (label) = "Max volumetric speed", + (tooltip) = "This setting stands for how much volume of filament can be melted and extruded per second. Printing speed is limited by max volumetric speed, in case of too high and unreasonable speed setting. Can't be zero.", + (category) = "Filament/Filament", + (sidetext) = "mm³/s", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Volumetric speed limitation", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "2.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_diameter = 50 [ + (label) = "Diameter", + (tooltip) = "Filament diameter is used to calculate extrusion in G-code, so it is important and should be accurate.", + (category) = "Filament/Filament", + (sidetext) = "mm", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 0, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "1.75", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float pellet_flow_coefficient = 51 [ + (label) = "Pellet flow coefficient", + (tooltip) = "Pellet flow coefficient is empirically derived and allows for volume calculation for pellet printers.\\n\\nInternally it is converted to filament_diameter. All other volume calculations remain the same.\\n\\nfilament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Flow ratio and Pressure Advance", + (min_value) = 0, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0.4157" + ]; + + + repeated bool filament_adaptive_volumetric_speed = 52 [ + (label) = "Adaptive volumetric speed", + (tooltip) = "When enabled, the extrusion flow is limited by the smaller of the fitted value (calculated from line width and layer height) and the user-defined maximum flow. When disabled, only the user-defined maximum flow is applied.\\n\\nNote: Experimental and incomplete feature imported from BBS. Functional for some profiles that already have the variable saved.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Volumetric speed limitation", + (mode) = MODE_DEVELOP, + (is_nullable) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_shrink = 53 [ + (label) = "Shrinkage (XY)", + (tooltip) = "Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm). The part will be scaled in XY to compensate. For multi-material prints, ensure filament shrinkage matches across all used filaments\\nBe sure to allow enough space between objects, as this compensation is done after the checks.", + (category) = "Filament/Filament", + (sidetext) = "%", + (co_type_hint) = "coPercents", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 50, + (max_value) = 150, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "100", + (invalidates) = STEP_SLICE + ]; + + + repeated float filament_shrinkage_compensation_z = 54 [ + (label) = "Shrinkage (Z)", + (tooltip) = "Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm). The part will be scaled in Z to compensate.", + (category) = "Filament/Filament", + (sidetext) = "%", + (co_type_hint) = "coPercents", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 50, + (max_value) = 150, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "100", + (invalidates) = STEP_SLICE + ]; + + + repeated int32 filament_adhesiveness_category = 55 [ + (label) = "Adhesiveness Category", + (tooltip) = "Filament category.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 0, + (mode) = MODE_DEVELOP, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_density = 56 [ + (label) = "Density", + (tooltip) = "Filament density. For statistics only.", + (category) = "Filament/Filament", + (sidetext) = "g/cm³", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0.", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated string filament_type = 57 [ + (label) = "Type", + (tooltip) = "The material type of filament.", + (category) = "Filament/Filament", + (gui_type) = "f_enum_open", + (gui_flags) = "show_value", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "\"PLA\"", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated bool filament_soluble = 58 [ + (label) = "Soluble material", + (tooltip) = "Soluble material is commonly used to print supports and support interfaces.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_change_length = 59 [ + (label) = "Filament ramming length", + (tooltip) = "When changing the extruder, it is recommended to extrude a certain length of filament from the original extruder. This helps minimize nozzle oozing.", + (category) = "Filament/Filament", + (sidetext) = "mm", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "10", + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated bool filament_is_support = 60 [ + (label) = "Support material", + (tooltip) = "Support material is commonly used to print supports and support interfaces.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 temperature_vitrification = 61 [ + (label) = "Softening temperature", + (tooltip) = "The material softens at this temperature, so when the bed temperature is equal to or greater than this, it's highly recommended to open the front door and/or remove the upper glass to avoid clogging.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "100" + ]; + + + repeated float filament_cost = 62 [ + (label) = "Price", + (tooltip) = "Filament price. For statistics only.", + (category) = "Filament/Filament", + (sidetext) = "money/kg", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0.", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated string filament_vendor = 63 [ + (label) = "Vendor", + (tooltip) = "Vendor of filament. For show only.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (mode) = MODE_ADVANCED, + (no_cli) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "L(\"(Undefined)\")" + ]; + + + repeated int32 nozzle_temperature_initial_layer = 64 [ + (label) = "First layer", + (full_label) = "First layer nozzle temperature", + (tooltip) = "Nozzle temperature for printing the first layer when using this filament.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Print temperature", + (min_value) = 0, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "200", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated bool activate_chamber_temp_control = 65 [ + (label) = "Activate temperature control", + (tooltip) = "Enable this option for automated chamber temperature control. This option activates the emitting of an M191 command before the \\\"machine_start_gcode\\\"\\n which sets the chamber temperature and waits until it is reached. In addition, it emits an M141 command at the end of the print to turn off the chamber heater, if present.\\n\\nThis option relies on the firmware supporting the M191 and M141 commands either via macros or natively and is usually used when an active chamber heater is installed.", + (category) = "Filament/Filament", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Print chamber temperature", + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 chamber_temperature = 66 [ + (label) = "Chamber temperature", + (full_label) = "Chamber temperature", + (tooltip) = "For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber temperature can help suppress or reduce warping and potentially lead to higher interlayer bonding strength. However, at the same time, a higher chamber temperature will reduce the efficiency of air filtration for ABS and ASA.\\n\\nFor PLA, PETG, TPU, PVA, and other low-temperature materials, this option should be disabled (set to 0) as the chamber temperature should be low to avoid extruder clogging caused by material softening at the heat break.\\n\\nIf enabled, this parameter also sets a G-code variable named chamber_temperature, which can be used to pass the desired chamber temperature to your print start macro, or a heat soak macro like this: PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may be useful if your printer does not support M141/M191 commands, or if you desire to handle heat soaking in the print start macro if no active chamber heater is installed.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Print chamber temperature", + (min_value) = 0, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 nozzle_temperature = 67 [ + (label) = "Other layers", + (full_label) = "Nozzle temperature", + (tooltip) = "Nozzle temperature for layers after the initial one.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Print temperature", + (min_value) = 0, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "200", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 nozzle_temperature_range_low = 68 [ + (label) = "Min", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 0, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "190" + ]; + + + repeated int32 nozzle_temperature_range_high = 69 [ + (label) = "Max", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 0, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "240" + ]; + + + repeated int32 idle_temperature = 70 [ + (label) = "Idle temperature", + (tooltip) = "Nozzle temperature when the tool is currently not used in multi-tool setups. This is only used when 'Ooze prevention' is active in Print Settings. Set to 0 to disable.", + (category) = "Filament/Filament", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Filament", + (tab_optgroup) = "Basic information", + (min_value) = 0, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_loading_speed = 71 [ + (label) = "Loading speed", + (tooltip) = "Speed used for loading the filament on the wipe tower.", + (category) = "Filament/Multimaterial", + (sidetext) = "mm/s", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with single extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "28.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_loading_speed_start = 72 [ + (label) = "Loading speed at the start", + (tooltip) = "Speed used at the very beginning of loading phase.", + (category) = "Filament/Multimaterial", + (sidetext) = "mm/s", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with single extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "3.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_unloading_speed = 73 [ + (label) = "Unloading speed", + (tooltip) = "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming).", + (category) = "Filament/Multimaterial", + (sidetext) = "mm/s", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with single extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "90.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_unloading_speed_start = 74 [ + (label) = "Unloading speed at the start", + (tooltip) = "Speed used for unloading the tip of the filament immediately after ramming.", + (category) = "Filament/Multimaterial", + (sidetext) = "mm/s", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with single extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "100.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_toolchange_delay = 75 [ + (label) = "Delay after unloading", + (tooltip) = "Time to wait after the filament is unloaded. May help to get reliable tool changes with flexible materials that may need more time to shrink to original dimensions.", + (category) = "Filament/Multimaterial", + (sidetext) = "s", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with single extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 filament_cooling_moves = 76 [ + (label) = "Number of cooling moves", + (tooltip) = "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves.", + (category) = "Filament/Multimaterial", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with single extruder MM printers", + (min_value) = 0, + (max_value) = 20, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "4", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_stamping_loading_speed = 77 [ + (label) = "Stamping loading speed", + (tooltip) = "Speed used for stamping.", + (category) = "Filament/Multimaterial", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with single extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_stamping_distance = 78 [ + (label) = "Stamping distance measured from the center of the cooling tube", + (tooltip) = "If set to non-zero value, filament is moved toward the nozzle between the individual cooling moves (\\\"stamping\\\"). This option configures how long this movement should be before the filament is retracted again.", + (category) = "Filament/Multimaterial", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with single extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_cooling_initial_speed = 79 [ + (label) = "Speed of the first cooling move", + (tooltip) = "Cooling moves are gradually accelerating beginning at this speed.", + (category) = "Filament/Multimaterial", + (sidetext) = "mm/s", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with single extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "2.2", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_minimal_purge_on_wipe_tower = 80 [ + (label) = "Minimal purge on wipe tower", + (tooltip) = "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Orca Slicer will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably.", + (category) = "Filament/Multimaterial", + (sidetext) = "mm³", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Wipe tower parameters", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "15.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_tower_interface_pre_extrusion_dist = 81 [ + (label) = "Interface layer pre-extrusion distance", + (tooltip) = "Pre-extrusion distance for prime tower interface layer (where different materials meet).", + (category) = "Filament/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Wipe tower parameters", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "10.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_tower_interface_pre_extrusion_length = 82 [ + (label) = "Interface layer pre-extrusion length", + (tooltip) = "Pre-extrusion length for prime tower interface layer (where different materials meet).", + (category) = "Filament/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Wipe tower parameters", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "0.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_tower_ironing_area = 83 [ + (label) = "Tower ironing area", + (tooltip) = "Ironing area for prime tower interface layer (where different materials meet).", + (category) = "Filament/Multimaterial", + (sidetext) = "mm²", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Wipe tower parameters", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "4.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_tower_interface_purge_volume = 84 [ + (label) = "Interface layer purge length", + (tooltip) = "Purge length for prime tower interface layer (where different materials meet).", + (category) = "Filament/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Wipe tower parameters", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "20.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 filament_tower_interface_print_temp = 85 [ + (label) = "Interface layer print temperature", + (tooltip) = "Print temperature for prime tower interface layer (where different materials meet). If set to -1, use max recommended nozzle temperature.", + (category) = "Filament/Multimaterial", + (sidetext) = "\\u2103", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Wipe tower parameters", + (min_value) = -1, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "-1", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_cooling_final_speed = 86 [ + (label) = "Speed of the last cooling move", + (tooltip) = "Cooling moves are gradually accelerating towards this speed.", + (category) = "Filament/Multimaterial", + (sidetext) = "mm/s", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with single extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "3.4", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated bool filament_multitool_ramming = 87 [ + (label) = "Enable ramming for multi-tool setups", + (tooltip) = "Perform ramming when using multi-tool printer (i.e. when the 'Single Extruder Multimaterial' in Printer Settings is unchecked). When checked, a small amount of filament is rapidly extruded on the wipe tower just before the tool change. This option is only used when the wipe tower is enabled.", + (category) = "Filament/Multimaterial", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with multi extruder MM printers", + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_multitool_ramming_volume = 88 [ + (label) = "Multi-tool ramming volume", + (tooltip) = "The volume to be rammed before the tool change.", + (category) = "Filament/Multimaterial", + (sidetext) = "mm³", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with multi extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "10.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float filament_multitool_ramming_flow = 89 [ + (label) = "Multi-tool ramming flow", + (tooltip) = "Flow used for ramming the filament before the tool change.", + (category) = "Filament/Multimaterial", + (sidetext) = "mm³/s", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Tool change parameters with multi extruder MM printers", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "10.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated bool long_retractions_when_ec = 90 [ + (label) = "Long retraction when extruder change", + (category) = "Filament/Multimaterial", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Multi Filament", + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "false" + ]; + + + repeated float retraction_distances_when_ec = 91 [ + (label) = "Retraction distance when extruder change", + (category) = "Filament/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Filament", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Multi Filament", + (min_value) = 0, + (max_value) = 10, + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "10" + ]; + + + repeated string filament_notes = 92 [ + (label) = "Filament notes", + (tooltip) = "You can put your notes regarding the filament here.", + (category) = "Filament/Notes", + (tab_type) = "Filament", + (tab_page) = "Notes", + (tab_optgroup) = "Notes", + (height) = 13, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_FILAMENT, + (has_default) = true, + (default_value) = "\"\"", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float filament_ironing_flow = 93 [ + (label) = "Ironing flow", + (tooltip) = "Filament-specific override for ironing flow. This allows you to customize the ironing flow for each filament type. Too high value results in overextrusion on the surface.", + (category) = "Quality", + (sidetext) = "%", + (co_type_hint) = "coPercents", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (has_default) = true, + (default_value) = "ConfigOptionPercentsNullable::nil_value()", + (preset) = PRESET_FILAMENT + ]; + + + repeated float filament_ironing_spacing = 94 [ + (label) = "Ironing line spacing", + (tooltip) = "Filament-specific override for ironing line spacing. This allows you to customize the spacing between ironing lines for each filament type.", + (category) = "Quality", + (sidetext) = "mm", + (min_value) = 0, + (max_value) = 1, + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (has_default) = true, + (default_value) = "ConfigOptionFloatsNullable::nil_value()", + (preset) = PRESET_FILAMENT + ]; + + + repeated float filament_ironing_inset = 95 [ + (label) = "Ironing inset", + (tooltip) = "Filament-specific override for ironing inset. This allows you to customize the distance to keep from the edges when ironing for each filament type.", + (category) = "Quality", + (sidetext) = "mm", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (has_default) = true, + (default_value) = "ConfigOptionFloatsNullable::nil_value()", + (preset) = PRESET_FILAMENT + ]; + + + repeated float filament_ironing_speed = 96 [ + (label) = "Ironing speed", + (tooltip) = "Filament-specific override for ironing speed. This allows you to customize the print speed of ironing lines for each filament type.", + (category) = "Speed", + (sidetext) = "mm/s", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (has_default) = true, + (default_value) = "ConfigOptionFloatsNullable::nil_value()", + (preset) = PRESET_FILAMENT + ]; + + + repeated float filament_flush_volumetric_speed = 97 [ + (label) = "Flush volumetric speed", + (tooltip) = "Volumetric speed when flushing filament. 0 indicates the max volumetric speed.", + (sidetext) = "mm³/s", + (min_value) = 0, + (max_value) = 200, + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (has_default) = true, + (default_value) = "0", + (preset) = PRESET_FILAMENT + ]; + + + repeated float filament_cooling_before_tower = 98 [ + (label) = "Wipe tower cooling", + (tooltip) = "Temperature drop before entering filament tower", + (sidetext) = "\\u2103", + (mode) = MODE_DEVELOP, + (is_nullable) = true, + (has_default) = true, + (default_value) = "10.", + (preset) = PRESET_FILAMENT + ]; + + + repeated int32 filament_printable = 99 [ + (label) = "Filament printable", + (tooltip) = "The filament is printable in extruder.", + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "3", + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_WIPE_TOWER, + (preset) = PRESET_FILAMENT + ]; + + + repeated int32 close_additional_fan_first_x_layers = 100 [ + (label) = "For the first", + (tooltip) = "Set special auxiliary cooling fan for the first certain layers.", + (sidetext) = "layers", + (min_value) = 0, + (max_value) = 1000, + (has_default) = true, + (default_value) = "1", + (preset) = PRESET_FILAMENT + ]; + + + repeated int32 additional_fan_full_speed_layer = 101 [ + (label) = "Full fan speed at layer", + (tooltip) = "Auxiliary fan speed will be ramped up linearly from layer \\\"For the first\\\" to maximum at layer \\\"Full fan speed at layer\\\".\\n\\\"Full fan speed at layer\\\" will be ignored if lower than \\\"For the first\\\", in which case the fan will run at maximum allowed speed at layer \\\"For the first\\\" + 1.", + (min_value) = 0, + (max_value) = 1000, + (has_default) = true, + (default_value) = "0", + (preset) = PRESET_FILAMENT + ]; + + + repeated float first_x_layer_fan_speed = 102 [ + (label) = "Fan speed", + (tooltip) = "Special auxiliary cooling fan speed, effective only for the first x layers.", + (sidetext) = "%", + (min_value) = 0, + (max_value) = 100, + (has_default) = true, + (default_value) = "0", + (preset) = PRESET_FILAMENT + ]; + + + repeated string filament_extruder_variant = 103 [ + (label) = "Filament's extruder variant", + (tooltip) = "Filament's extruder variant.", + (no_cli) = true, + (has_default) = true, + (default_value) = "\"Direct Drive Standard\"", + (preset) = PRESET_FILAMENT + ]; +} diff --git a/src/PrintConfigs/generated/print.proto b/src/PrintConfigs/generated/print.proto new file mode 100644 index 0000000000..9283571fa3 --- /dev/null +++ b/src/PrintConfigs/generated/print.proto @@ -0,0 +1,6974 @@ +// OrcaSlicer - PrintSettings +// Edit this file and re-run: python tools/run_codegen.py + +syntax = "proto3"; + +import "config_metadata.proto"; + +package orca; + +message PrintSettings { + + + int32 extruder = 1 [ + (label) = "Extruder", + (category) = "Extruders", + (gui_type) = "i_enum_open", + (mode) = MODE_ADVANCED, + (enum_label_entries) = "default", + (enum_label_entries) = "1", + (enum_label_entries) = "2", + (enum_label_entries) = "3", + (enum_label_entries) = "4", + (enum_label_entries) = "5" + ]; + + + bool has_scarf_joint_seam = 2 [ + (full_label) = "Maximum jerk %1%", + (tooltip) = "Maximum jerk of the %1% axis", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0, + (has_default) = true, + (default_value) = "axis.max_jerk" + ]; + + + repeated float machine_max_junction_deviation = 3 [ + (full_label) = "Maximum Junction Deviation", + (tooltip) = "Maximum junction deviation (M205 J, only apply if JD > 0 for Marlin Firmware\\nIf your Marlin 2 printer uses Classic Jerk set this value to 0.)", + (category) = "Machine limits", + (sidetext) = "mm", + (min_value) = 0, + (max_value) = 0.3, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.01f" + ]; + + + repeated float machine_min_extruding_rate = 4 [ + (full_label) = "Minimum speed for extruding", + (tooltip) = "Minimum speed for extruding (M205 S)", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0, + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "0., 0." + ]; + + + repeated float machine_min_travel_rate = 5 [ + (full_label) = "Minimum travel speed", + (tooltip) = "Minimum travel speed (M205 T)", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0, + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "0., 0." + ]; + + + repeated float machine_max_acceleration_extruding = 6 [ + (full_label) = "Maximum acceleration for extruding", + (tooltip) = "Maximum acceleration for extruding (M204 P)", + (category) = "Machine limits", + (sidetext) = "mm/s²", + (min_value) = 0, + (has_default) = true, + (default_value) = "1500., 1250." + ]; + + + repeated float machine_max_acceleration_retracting = 7 [ + (full_label) = "Maximum acceleration for retracting", + (tooltip) = "Maximum acceleration for retracting (M204 R)", + (category) = "Machine limits", + (sidetext) = "mm/s²", + (min_value) = 0, + (has_default) = true, + (default_value) = "1500., 1250." + ]; + + + repeated float machine_max_acceleration_travel = 8 [ + (full_label) = "Maximum acceleration for travel", + (tooltip) = "Maximum acceleration for travel (M204 T), it only applies to Marlin 2.", + (category) = "Machine limits", + (sidetext) = "mm/s²", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0., 0." + ]; + + + repeated float machine_max_speed_x = 9 [ + (full_label) = "Maximum speed X", + (tooltip) = "Maximum speed of X axis", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0 + ]; + + + repeated float machine_max_acceleration_x = 10 [ + (full_label) = "Maximum acceleration X", + (tooltip) = "Maximum acceleration of the X axis", + (category) = "Machine limits", + (sidetext) = "mm/s²", + (min_value) = 0 + ]; + + + repeated float machine_max_jerk_x = 11 [ + (full_label) = "Maximum jerk X", + (tooltip) = "Maximum jerk of the X axis", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0 + ]; + + + repeated float machine_max_speed_y = 12 [ + (full_label) = "Maximum speed Y", + (tooltip) = "Maximum speed of Y axis", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0 + ]; + + + repeated float machine_max_acceleration_y = 13 [ + (full_label) = "Maximum acceleration Y", + (tooltip) = "Maximum acceleration of the Y axis", + (category) = "Machine limits", + (sidetext) = "mm/s²", + (min_value) = 0 + ]; + + + repeated float machine_max_jerk_y = 14 [ + (full_label) = "Maximum jerk Y", + (tooltip) = "Maximum jerk of the Y axis", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0 + ]; + + + repeated float machine_max_speed_z = 15 [ + (full_label) = "Maximum speed Z", + (tooltip) = "Maximum speed of Z axis", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0 + ]; + + + repeated float machine_max_acceleration_z = 16 [ + (full_label) = "Maximum acceleration Z", + (tooltip) = "Maximum acceleration of the Z axis", + (category) = "Machine limits", + (sidetext) = "mm/s²", + (min_value) = 0 + ]; + + + repeated float machine_max_jerk_z = 17 [ + (full_label) = "Maximum jerk Z", + (tooltip) = "Maximum jerk of the Z axis", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0 + ]; + + + repeated float machine_max_speed_e = 18 [ + (full_label) = "Maximum speed E", + (tooltip) = "Maximum speed of E axis", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0 + ]; + + + repeated float machine_max_acceleration_e = 19 [ + (full_label) = "Maximum acceleration E", + (tooltip) = "Maximum acceleration of the E axis", + (category) = "Machine limits", + (sidetext) = "mm/s²", + (min_value) = 0 + ]; + + + repeated float machine_max_jerk_e = 20 [ + (full_label) = "Maximum jerk E", + (tooltip) = "Maximum jerk of the E axis", + (category) = "Machine limits", + (sidetext) = "mm/s", + (min_value) = 0 + ]; + + + bool emit_machine_limits_to_gcode = 21 [ + (label) = "Emit limits to G-code", + (tooltip) = "If enabled, the machine limits will be emitted to G-code file.\\nThis option will be ignored if the G-code flavor is set to Klipper.", + (category) = "PrinterKinematics/Motion ability", + (tab_type) = "PrinterKinematics", + (tab_page) = "Motion ability", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true" + ]; + + + bool resonance_avoidance = 22 [ + (label) = "Resonance avoidance", + (tooltip) = "By reducing the speed of the outer wall to avoid the resonance zone of the printer, ringing on the surface of the model are avoided.\\nPlease turn this option off when testing ringing.", + (category) = "PrinterKinematics/Motion ability", + (tab_type) = "PrinterKinematics", + (tab_page) = "Motion ability", + (tab_optgroup) = "Resonance Compensation", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float min_resonance_avoidance_speed = 23 [ + (label) = "Min", + (tooltip) = "Minimum speed of resonance avoidance.", + (category) = "PrinterKinematics/Motion ability", + (sidetext) = "mm/s", + (tab_type) = "PrinterKinematics", + (tab_page) = "Motion ability", + (tab_optgroup) = "Resonance Compensation", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "70" + ]; + + + float max_resonance_avoidance_speed = 24 [ + (label) = "Max", + (tooltip) = "Maximum speed of resonance avoidance.", + (category) = "PrinterKinematics/Motion ability", + (sidetext) = "mm/s", + (tab_type) = "PrinterKinematics", + (tab_page) = "Motion ability", + (tab_optgroup) = "Resonance Compensation", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "120" + ]; + + + bool input_shaping_emit = 25 [ + (label) = "Emit input shaping", + (tooltip) = "Override firmware input shaping settings.\\nIf disabled, firmware settings are used.", + (category) = "PrinterKinematics/Motion ability", + (tab_type) = "PrinterKinematics", + (tab_page) = "Motion ability", + (tab_optgroup) = "Resonance Compensation", + (has_default) = true, + (default_value) = "false" + ]; + + + int32 input_shaping_type = 26 [ + (label) = "Input shaper type", + (tooltip) = "Choose the input shaper algorithm.\\nDefault uses the firmware default settings.\\nDisable turns off input shaping in the firmware.", + (category) = "PrinterKinematics/Motion ability", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "PrinterKinematics", + (tab_page) = "Motion ability", + (tab_optgroup) = "Resonance Compensation", + (has_default) = true, + (default_value) = "InputShaperType::Default" + ]; + + + float input_shaping_freq_x = 27 [ + (label) = "X", + (tooltip) = "Resonant frequency for the X axis input shaper.\\nZero will use the firmware frequency.\\nTo disable input shaping, use the Disable type.\\nRRF: X and Y values are equal.", + (category) = "PrinterKinematics/Motion ability", + (sidetext) = "Hz", + (tab_type) = "PrinterKinematics", + (tab_page) = "Motion ability", + (tab_optgroup) = "Resonance Compensation", + (min_value) = 0, + (max_value) = 1000, + (has_default) = true, + (default_value) = "0" + ]; + + + float input_shaping_freq_y = 28 [ + (label) = "Y", + (tooltip) = "Resonant frequency for the Y axis input shaper.\\nZero will use the firmware frequency.\\nTo disable input shaping, use the Disable type.", + (category) = "PrinterKinematics/Motion ability", + (sidetext) = "Hz", + (tab_type) = "PrinterKinematics", + (tab_page) = "Motion ability", + (tab_optgroup) = "Resonance Compensation", + (min_value) = 0, + (max_value) = 1000, + (has_default) = true, + (default_value) = "0" + ]; + + + float input_shaping_damp_x = 29 [ + (label) = "X", + (tooltip) = "Damping ratio for the X axis input shaper.\\nZero will use the firmware damping ratio.\\nTo disable input shaping, use the Disable type.\\nRRF: X and Y values are equal.", + (category) = "PrinterKinematics/Motion ability", + (tab_type) = "PrinterKinematics", + (tab_page) = "Motion ability", + (tab_optgroup) = "Resonance Compensation", + (min_value) = 0, + (max_value) = 1, + (has_default) = true, + (default_value) = "0.1" + ]; + + + float input_shaping_damp_y = 30 [ + (label) = "Y", + (tooltip) = "Damping ratio for the Y axis input shaper.\\nZero will use the firmware damping ratio.\\nTo disable input shaping, use the Disable type.", + (category) = "PrinterKinematics/Motion ability", + (tab_type) = "PrinterKinematics", + (tab_page) = "Motion ability", + (tab_optgroup) = "Resonance Compensation", + (min_value) = 0, + (max_value) = 1, + (has_default) = true, + (default_value) = "0.1" + ]; + + + float brim_width = 31 [ + (label) = "Brim width", + (tooltip) = "Distance from model to the outermost brim line.", + (category) = "Print/Others", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Brim", + (min_value) = 0, + (max_value) = 100, + (has_default) = true, + (default_value) = "0." + ]; + + + int32 brim_type = 32 [ + (label) = "Brim type", + (tooltip) = "This controls the generation of the brim at outer and/or inner side of models. Auto means the brim width is analyzed and calculated automatically.", + (category) = "Print/Others", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Brim", + (has_default) = true, + (default_value) = "btAutoBrim", + (enum_value_entries) = "auto_brim", + (enum_value_entries) = "brim_ears", + (enum_value_entries) = "painted", + (enum_value_entries) = "outer_only", + (enum_value_entries) = "inner_only", + (enum_value_entries) = "outer_and_inner", + (enum_value_entries) = "no_brim", + (enum_label_entries) = "Auto", + (enum_label_entries) = "Mouse ear", + (enum_label_entries) = "Painted", + (enum_label_entries) = "Outer brim only", + (enum_label_entries) = "Inner brim only", + (enum_label_entries) = "Outer and inner brim", + (enum_label_entries) = "No-brim" + ]; + + + float brim_object_gap = 33 [ + (label) = "Brim-object gap", + (tooltip) = "A gap between innermost brim line and object can make brim be removed more easily.", + (category) = "Print/Others", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Brim", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0." + ]; + + + float brim_flow_ratio = 34 [ + (label) = "Brim flow ratio", + (tooltip) = "This factor affects the amount of material for brims.\\n\\nThe actual brim flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.\\n\\nNote: The resulting value will not be affected by the first-layer flow ratio.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Brim", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + bool brim_use_efc_outline = 35 [ + (label) = "Brim follows compensated outline", + (tooltip) = "When enabled, the brim is aligned with the first-layer perimeter geometry after Elephant Foot Compensation is applied.\\nThis option is intended for cases where Elephant Foot Compensation significantly alters the first-layer footprint.\\n\\nIf your current setup already works well, enabling it may be unnecessary and can cause the brim to fuse with upper layers.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Brim", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + bool combine_brims = 36 [ + (label) = "Combine brims", + (tooltip) = "Combine multiple brims into one when they are close to each other. This can improve brim adhesion.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Brim", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float brim_ears_max_angle = 37 [ + (label) = "Brim ear max angle", + (tooltip) = "Maximum angle to let a brim ear appear.\\nIf set to 0, no brim will be created.\\nIf set to ~180, brim will be created on everything but straight sections.", + (category) = "Print/Others", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Brim", + (min_value) = 0, + (max_value) = 180, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "125" + ]; + + + float brim_ears_detection_length = 38 [ + (label) = "Brim ear detection radius", + (tooltip) = "The geometry will be decimated before detecting sharp angles. This parameter indicates the minimum length of the deviation for the decimation.\\n0 to deactivate.", + (category) = "Print/Others", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Brim", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + int32 print_sequence = 39 [ + (label) = "Print sequence", + (tooltip) = "Print sequence, layer by layer or object by object.", + (category) = "Print/Others", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Special mode", + (has_default) = true, + (default_value) = "PrintSequence::ByLayer", + (enum_value_entries) = "by layer", + (enum_value_entries) = "by object", + (enum_label_entries) = "By layer", + (enum_label_entries) = "By object", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + int32 print_order = 40 [ + (label) = "Intra-layer order", + (tooltip) = "Print order within a single layer.", + (category) = "Print/Others", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Special mode", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "PrintOrder::Default", + (enum_value_entries) = "default", + (enum_value_entries) = "as_obj_list", + (enum_label_entries) = "Default", + (enum_label_entries) = "As object list", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_INFILL, + (invalidates) = STEP_PERIMETERS + ]; + + + int32 fuzzy_skin = 41 [ + (label) = "Fuzzy Skin", + (tooltip) = "Randomly jitter while printing the wall, so that the surface has a rough look. This setting controls the fuzzy position.", + (category) = "Print/Others", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (has_default) = true, + (default_value) = "FuzzySkinType::Disabled_fuzzy", + (enum_value_entries) = "none", + (enum_value_entries) = "external", + (enum_value_entries) = "hole", + (enum_value_entries) = "all", + (enum_value_entries) = "allwalls", + (enum_value_entries) = "disabled_fuzzy", + (enum_label_entries) = "Painted only", + (enum_label_entries) = "Contour", + (enum_label_entries) = "Hole", + (enum_label_entries) = "Contour and hole", + (enum_label_entries) = "All walls", + (enum_label_entries) = "Disabled" + ]; + + + float fuzzy_skin_thickness = 42 [ + (label) = "Fuzzy skin thickness", + (tooltip) = "The width within which to jitter. It's advised to be below outer wall line width.", + (category) = "Print/Others", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (min_value) = 0, + (max_value) = 2, + (has_default) = true, + (default_value) = "0.2" + ]; + + + float fuzzy_skin_point_distance = 43 [ + (label) = "Fuzzy skin point distance", + (tooltip) = "The average distance between the random points introduced on each line segment.", + (category) = "Print/Others", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (max_value) = 5, + (has_default) = true, + (default_value) = "0.3f" + ]; + + + bool fuzzy_skin_first_layer = 44 [ + (label) = "Apply fuzzy skin to first layer", + (tooltip) = "Whether to apply fuzzy skin on the first layer.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (has_default) = true, + (default_value) = "0" + ]; + + + int32 fuzzy_skin_mode = 45 [ + (label) = "Fuzzy skin generator mode", + (tooltip) = "Fuzzy skin generation mode. Works only with Arachne!\\nDisplacement: Сlassic mode when the pattern is formed by shifting the nozzle sideways from the original path.\\nExtrusion: The mode when the pattern formed by the amount of extruded plastic. This is the fast and straight algorithm without unnecessary nozzle shake that gives a smooth pattern. But it is more useful for forming loose walls in the entire they array.\\nCombined: Joint mode [Displacement] + [Extrusion]. The appearance of the walls is similar to [Displacement] Mode, but it leaves no pores between the perimeters.\\n\\nAttention! The [Extrusion] and [Combined] modes works only the fuzzy_skin_thickness parameter not more than the thickness of printed loop. At the same time, the width of the extrusion for a particular layer should also not be below a certain level. It is usually equal 15-25%% of a layer height. Therefore, the maximum fuzzy skin thickness with a perimeter width of 0.4 mm and a layer height of 0.2 mm will be 0.4-(0.2*0.25)=±0.35mm! If you enter a higher parameter than this, the error Flow::spacing() will displayed, and the model will not be sliced. You can choose this number until this error is repeated.", + (category) = "Print/Others", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (has_default) = true, + (default_value) = "FuzzySkinMode::Displacement", + (enum_value_entries) = "displacement", + (enum_value_entries) = "extrusion", + (enum_value_entries) = "combined", + (enum_label_entries) = "Displacement", + (enum_label_entries) = "Extrusion", + (enum_label_entries) = "Combined" + ]; + + + int32 fuzzy_skin_noise_type = 46 [ + (label) = "Fuzzy skin noise type", + (tooltip) = "Noise type to use for fuzzy skin generation:\\nClassic: Classic uniform random noise.\\nPerlin: Perlin noise, which gives a more consistent texture.\\nBillow: Similar to perlin noise, but clumpier.\\nRidged Multifractal: Ridged noise with sharp, jagged features. Creates marble-like textures.\\nVoronoi: Divides the surface into voronoi cells, and displaces each one by a random amount. Creates a patchwork texture.\\nRipple: Uniform ripple pattern that ripples left and right of the original path. Repeating pattern, woven appearance.", + (category) = "Print/Others", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (has_default) = true, + (default_value) = "NoiseType::Classic", + (enum_value_entries) = "classic", + (enum_value_entries) = "perlin", + (enum_value_entries) = "billow", + (enum_value_entries) = "ridgedmulti", + (enum_value_entries) = "voronoi", + (enum_value_entries) = "ripple", + (enum_label_entries) = "Classic", + (enum_label_entries) = "Perlin", + (enum_label_entries) = "Billow", + (enum_label_entries) = "Ridged Multifractal", + (enum_label_entries) = "Voronoi", + (enum_label_entries) = "Ripple" + ]; + + + float fuzzy_skin_scale = 47 [ + (label) = "Fuzzy skin feature size", + (tooltip) = "The base size of the coherent noise features, in mm. Higher values will result in larger features.", + (category) = "Print/Others", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (min_value) = 0.1, + (max_value) = 500, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1.0" + ]; + + + int32 fuzzy_skin_octaves = 48 [ + (label) = "Fuzzy Skin Noise Octaves", + (tooltip) = "The number of octaves of coherent noise to use. Higher values increase the detail of the noise, but also increase computation time.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (min_value) = 1, + (max_value) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "4" + ]; + + + float fuzzy_skin_persistence = 49 [ + (label) = "Fuzzy skin noise persistence", + (tooltip) = "The decay rate for higher octaves of the coherent noise. Lower values will result in smoother noise.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (min_value) = 0.01, + (max_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.5" + ]; + + + int32 fuzzy_skin_ripples_per_layer = 50 [ + (label) = "Number of ripples per layer", + (tooltip) = "Controls how many full cycles of ripples will be added per layer.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "15" + ]; + + + float fuzzy_skin_ripple_offset = 51 [ + (label) = "Ripple offset", + (tooltip) = "Shifts the ripple phase forward along the print path by the specified percentage of a wavelength each layer period.\\n- 0% keeps every layer identical.\\n- 50% shifts the pattern by half a wavelength, effectively inverting the phase.\\n- 100% shifts the pattern by a full wavelength, returning to the original phase.\\n\\nThe shift is applied once every number of layers set by Layers between ripple offset, so layers within the same group are printed identically.", + (category) = "Print/Others", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "50" + ]; + + + int32 fuzzy_skin_layers_between_ripple_offset = 52 [ + (label) = "Layers between ripple offset", + (tooltip) = "Specifies how many consecutive layers share the same ripple phase before the offset is applied.\\nFor example:\\n- 1 = Layer 1 is printed with the base ripple pattern, then layer 2 is shifted by the configured offset, then layer 3 returns to the base pattern, and so on.\\n- 3 = Layers 1 to 3 are printed with the base ripple pattern, then layers 4 to 6 are shifted by the configured offset, then layers 7 to 9 return to the base pattern, etc.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Fuzzy Skin", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + bool gcode_add_line_number = 53 [ + (label) = "Add line number", + (tooltip) = "Enable this to add line number(Nx) at the beginning of each G-code line.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "G-code output", + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + bool gcode_label_objects = 54 [ + (label) = "Label objects", + (tooltip) = "Enable this to add comments into the G-code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plug-in. This setting is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "G-code output", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + bool exclude_object = 55 [ + (label) = "Exclude objects", + (tooltip) = "Enable this option to add EXCLUDE OBJECT command in G-code.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "G-code output", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + bool gcode_comments = 56 [ + (label) = "Verbose G-code", + (tooltip) = "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "G-code output", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + bool enable_wrapping_detection = 57 [ + (label) = "Enable clumping detection", + (tooltip) = "Enable clumping detection", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Special mode", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + string notes = 58 [ + (label) = "Configuration notes", + (tooltip) = "You can put here your personal notes. This text will be added to the G-code header comments.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Notes", + (height) = 13, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (has_default) = true, + (default_value) = "" + ]; + + + bool reduce_infill_retraction = 59 [ + (label) = "Reduce infill retraction", + (tooltip) = "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "G-code output", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + string filename_format = 60 [ + (label) = "Filename format", + (tooltip) = "Users can define the project file name when exporting.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "G-code output", + (mode) = MODE_ADVANCED, + (full_width) = true, + (has_default) = true, + (default_value) = "\"{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode\"", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated string post_process = 61 [ + (label) = "Post-processing Scripts", + (tooltip) = "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Orca Slicer config settings by reading environment variables.", + (category) = "Print/Others", + (gui_flags) = "serialized", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Post-processing Scripts", + (height) = 6, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (has_default) = true, + (default_value) = "", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + string process_change_extrusion_role_gcode = 62 [ + (label) = "Change extrusion role G-code (process)", + (tooltip) = "This G-code is inserted when the extrusion role is changed. It runs after the machine and filament extrusion role G-code.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Change extrusion role G-code", + (height) = 5, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (has_default) = true, + (default_value) = "" + ]; + + + float skirt_distance = 63 [ + (label) = "Skirt distance", + (tooltip) = "The distance from the skirt to the brim or the object.", + (category) = "Print/Others", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Skirt", + (min_value) = 0, + (max_value) = 60, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "2", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + float skirt_start_angle = 64 [ + (label) = "Skirt start point", + (tooltip) = "Angle from the object center to skirt start point. Zero is the most right position, counter clockwise is positive angle.", + (category) = "Print/Others", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Skirt", + (min_value) = -180, + (max_value) = 180, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "-135", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + int32 skirt_height = 65 [ + (label) = "Skirt height", + (tooltip) = "How many layers of skirt. Usually only one layer.", + (category) = "Print/Others", + (sidetext) = "layers", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Skirt", + (max_value) = 10000, + (has_default) = true, + (default_value) = "1", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + bool single_loop_draft_shield = 66 [ + (label) = "Single loop after first layer", + (tooltip) = "Limits the skirt/draft shield loops to one wall after the first layer. This is useful, on occasion, to conserve filament but may cause the draft shield/skirt to warp / crack.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Skirt", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + int32 draft_shield = 67 [ + (label) = "Draft shield", + (tooltip) = "A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure.\\n\\nEnabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used.\\nNote: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\\n", + (category) = "Print/Others", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Skirt", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "dsDisabled", + (enum_value_entries) = "disabled", + (enum_value_entries) = "enabled", + (enum_label_entries) = "Disabled", + (enum_label_entries) = "Enabled", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + int32 skirt_type = 68 [ + (label) = "Skirt type", + (full_label) = "Skirt type", + (tooltip) = "Combined - single skirt for all objects, Per object - individual object skirt.", + (category) = "Print/Others", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Skirt", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "stCombined", + (enum_value_entries) = "combined", + (enum_value_entries) = "perobject", + (enum_label_entries) = "Combined", + (enum_label_entries) = "Per object", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + int32 skirt_loops = 69 [ + (label) = "Skirt loops", + (full_label) = "Skirt loops", + (tooltip) = "Number of loops for the skirt. Zero means disabling skirt.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Skirt", + (min_value) = 0, + (max_value) = 10, + (has_default) = true, + (default_value) = "1", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + float skirt_speed = 70 [ + (label) = "Skirt speed", + (full_label) = "Skirt speed", + (tooltip) = "Speed of skirt, in mm/s. Zero means use default layer extrusion speed.", + (category) = "Print/Others", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Skirt", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "50.0", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + float min_skirt_length = 71 [ + (label) = "Skirt minimum extrusion length", + (full_label) = "Skirt minimum extrusion length", + (tooltip) = "Minimum filament extrusion length in mm when printing the skirt. Zero means this feature is disabled.\\n\\nUsing a non-zero value is useful if the printer is set up to print without a prime line.\\nFinal number of loops is not taking into account while arranging or validating objects distance. Increase loop number in such case.", + (category) = "Print/Others", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Skirt", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.0", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + bool spiral_mode = 72 [ + (label) = "Spiral vase", + (tooltip) = "Spiralize smooths out the Z moves of the outer contour. And turns a solid model into a single walled print with solid bottom layers. The final generated model has no seam.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Special mode", + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SLICE + ]; + + + bool spiral_mode_smooth = 73 [ + (label) = "Smooth Spiral", + (tooltip) = "Smooth Spiral smooths out X and Y moves as well, resulting in no visible seam at all, even in the XY directions on walls that are not vertical.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Special mode", + (has_default) = true, + (default_value) = "false" + ]; + + + FloatOrPercent spiral_mode_max_xy_smoothing = 74 [ + (label) = "Max XY Smoothing", + (tooltip) = "Maximum distance to move points in XY to try to achieve a smooth spiral. If expressed as a %, it will be computed over nozzle diameter.", + (category) = "Print/Others", + (sidetext) = "mm or %", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Special mode", + (min_value) = 0, + (max_value) = 1000, + (max_literal) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "200, true" + ]; + + + float spiral_starting_flow_ratio = 75 [ + (label) = "Spiral starting flow ratio", + (tooltip) = "Sets the starting flow ratio while transitioning from the last bottom layer to the spiral. Normally the spiral transition scales the flow ratio from 0% to 100% during the first loop which can in some cases lead to under extrusion at the start of the spiral.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Special mode", + (min_value) = 0, + (max_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + float spiral_finishing_flow_ratio = 76 [ + (label) = "Spiral finishing flow ratio", + (tooltip) = "Sets the finishing flow ratio while ending the spiral. Normally the spiral transition scales the flow ratio from 100% to 0% during the last loop which can in some cases lead to under extrusion at the end of the spiral.", + (category) = "Print/Others", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Special mode", + (min_value) = 0, + (max_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + int32 timelapse_type = 77 [ + (label) = "Timelapse", + (tooltip) = "If smooth or traditional mode is selected, a timelapse video will be generated for each print. After each layer is printed, a snapshot is taken with the chamber camera. All of these snapshots are composed into a timelapse video when printing completes. If smooth mode is selected, the toolhead will move to the excess chute after each layer is printed and then take a snapshot. Since the melt filament may leak from the nozzle during the process of taking a snapshot, a prime tower is required for smooth mode to wipe nozzle.", + (category) = "Print/Others", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Special mode", + (has_default) = true, + (default_value) = "tlTraditional", + (enum_value_entries) = "0", + (enum_value_entries) = "1", + (enum_label_entries) = "Traditional", + (enum_label_entries) = "Smooth" + ]; + + + int32 slicing_mode = 78 [ + (label) = "Slicing Mode", + (tooltip) = "Use \\\"Even-odd\\\" for 3DLabPrint airplane models. Use \\\"Close holes\\\" to close all holes in the model.", + (category) = "Print/Others", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Others", + (tab_optgroup) = "Special mode", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "SlicingMode::Regular", + (enum_value_entries) = "regular", + (enum_value_entries) = "even_odd", + (enum_value_entries) = "close_holes", + (enum_label_entries) = "Regular", + (enum_label_entries) = "Even-odd", + (enum_label_entries) = "Close holes" + ]; + + + int32 sparse_infill_filament = 79 [ + (label) = "Infill", + (tooltip) = "Filament to print internal sparse infill.", + (category) = "Print/Multimaterial", + (gui_type) = "i_enum_open", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Filament for Features", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + bool interface_shells = 80 [ + (label) = "Interface shells", + (tooltip) = "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float mmu_segmented_region_max_width = 81 [ + (label) = "Maximum width of a segmented region", + (tooltip) = "Maximum width of a segmented region. Zero disables this feature.", + (category) = "Print/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0." + ]; + + + float mmu_segmented_region_interlocking_depth = 82 [ + (label) = "Interlocking depth of a segmented region", + (tooltip) = "Interlocking depth of a segmented region. It will be ignored if \\\"mmu_segmented_region_max_width\\\" is zero or if \\\"mmu_segmented_region_interlocking_depth\\\" is bigger than \\\"mmu_segmented_region_max_width\\\". Zero disables this feature.", + (category) = "Print/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0." + ]; + + + bool interlocking_beam = 83 [ + (label) = "Use beam interlocking", + (tooltip) = "Generate interlocking beam structure at the locations where different filaments touch. This improves the adhesion between filaments, especially models printed in different materials.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float interlocking_beam_width = 84 [ + (label) = "Interlocking beam width", + (tooltip) = "The width of the interlocking structure beams.", + (category) = "Print/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Advanced", + (min_value) = 0.01, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.8" + ]; + + + float interlocking_orientation = 85 [ + (label) = "Interlocking direction", + (tooltip) = "Orientation of interlock beams.", + (category) = "Print/Multimaterial", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (max_value) = 360, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "22.5" + ]; + + + int32 interlocking_beam_layer_count = 86 [ + (label) = "Interlocking beam layers", + (tooltip) = "The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Advanced", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "2" + ]; + + + int32 interlocking_depth = 87 [ + (label) = "Interlocking depth", + (tooltip) = "The distance from the boundary between filaments to generate interlocking structure, measured in cells. Too few cells will result in poor adhesion.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Advanced", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "2" + ]; + + + int32 interlocking_boundary_avoidance = 88 [ + (label) = "Interlocking boundary avoidance", + (tooltip) = "The distance from the outside of a model where interlocking structures will not be generated, measured in cells.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "2" + ]; + + + bool ooze_prevention = 89 [ + (label) = "Enable", + (tooltip) = "This option will drop the temperature of the inactive extruders to prevent oozing.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Ooze prevention", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + int32 wall_filament = 90 [ + (label) = "Walls", + (tooltip) = "Filament to print walls.", + (category) = "Print/Multimaterial", + (gui_type) = "i_enum_open", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Filament for Features", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + int32 solid_infill_filament = 91 [ + (label) = "Solid infill", + (tooltip) = "Filament to print solid infill.", + (category) = "Print/Multimaterial", + (gui_type) = "i_enum_open", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Filament for Features", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + int32 standby_temperature_delta = 92 [ + (label) = "Temperature variation", + (tooltip) = "Temperature difference to be applied when an extruder is not active. The value is not used when 'idle_temperature' in filament settings is set to non-zero value.", + (category) = "Print/Multimaterial", + (sidetext) = "\\u2206\\u2103", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Ooze prevention", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "-5", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float preheat_time = 93 [ + (label) = "Preheat time", + (tooltip) = "To reduce the waiting time after tool change, Orca can preheat the next tool while the current tool is still in use. This setting specifies the time in seconds to preheat the next tool. Orca will insert a M104 command to preheat the tool in advance.", + (category) = "Print/Multimaterial", + (sidetext) = "s", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Ooze prevention", + (min_value) = 0, + (max_value) = 120, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "30.0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + int32 preheat_steps = 94 [ + (label) = "Preheat steps", + (tooltip) = "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Ooze prevention", + (min_value) = 1, + (max_value) = 10, + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "1", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + bool wipe_tower_no_sparse_layers = 95 [ + (label) = "No sparse layers (beta)", + (tooltip) = "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool single_extruder_multi_material_priming = 96 [ + (label) = "Prime all printing extruders", + (tooltip) = "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + bool enable_prime_tower = 97 [ + (label) = "Enable", + (tooltip) = "The wiping tower can be used to clean up the residue on the nozzle and stabilize the chamber pressure inside the nozzle, in order to avoid appearance defects when printing objects.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool prime_tower_enable_framework = 98 [ + (label) = "Internal ribs", + (tooltip) = "Enable internal ribs to increase the stability of the prime tower.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float prime_volume = 99 [ + (label) = "Prime volume", + (tooltip) = "The volume of material to prime extruder on tower.", + (category) = "Print/Multimaterial", + (sidetext) = "mm³", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (min_value) = 1, + (has_default) = true, + (default_value) = "45.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float prime_tower_width = 100 [ + (label) = "Width", + (tooltip) = "Width of the prime tower.", + (category) = "Print/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (min_value) = 2, + (has_default) = true, + (default_value) = "60.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float wipe_tower_rotation_angle = 101 [ + (label) = "Wipe tower rotation angle", + (tooltip) = "Wipe tower rotation angle with respect to X axis.", + (category) = "Print/Multimaterial", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + float prime_tower_brim_width = 102 [ + (label) = "Brim width", + (tooltip) = "Brim width of prime tower, negative number means auto calculated width based on the height of prime tower.", + (category) = "Print/Multimaterial", + (sidetext) = "mm", + (gui_type) = "f_enum_open", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (min_value) = -1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "3.", + (enum_value_entries) = "-1", + (enum_label_entries) = "Auto", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float wipe_tower_cone_angle = 103 [ + (label) = "Stabilization cone apex angle", + (tooltip) = "Angle at the apex of the cone that is used to stabilize the wipe tower. Larger angle means wider base.", + (category) = "Print/Multimaterial", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (min_value) = 0, + (max_value) = 90, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "30.0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float wipe_tower_max_purge_speed = 104 [ + (label) = "Maximum wipe tower print speed", + (tooltip) = "The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\\n\\nWhen printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\\n\\nIncreasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\\n\\nBefore increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\\n\\nFor the wipe tower external perimeters the internal perimeter speed is used regardless of this setting.", + (category) = "Print/Multimaterial", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (min_value) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "90.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + int32 wipe_tower_wall_type = 105 [ + (label) = "Wall type", + (tooltip) = "Wipe tower outer wall type.\\n1. Rectangle: The default wall type, a rectangle with fixed width and height.\\n2. Cone: A cone with a fillet at the bottom to help stabilize the wipe tower.\\n3. Rib: Adds four ribs to the tower wall for enhanced stability.", + (category) = "Print/Multimaterial", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "wtwRib", + (enum_value_entries) = "rectangle", + (enum_value_entries) = "cone", + (enum_value_entries) = "rib", + (enum_label_entries) = "Rectangle", + (enum_label_entries) = "Cone", + (enum_label_entries) = "Rib", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float wipe_tower_extra_rib_length = 106 [ + (label) = "Extra rib length", + (tooltip) = "Positive values can increase the size of the rib wall, while negative values can reduce the size. However, the size of the rib wall can not be smaller than that determined by the cleaning volume.", + (category) = "Print/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (max_value) = 300, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float wipe_tower_rib_width = 107 [ + (label) = "Rib width", + (tooltip) = "Rib width is always less than half the prime tower side length.", + (category) = "Print/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (min_value) = 0, + (max_value) = 300, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "8", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool wipe_tower_fillet_wall = 108 [ + (label) = "Fillet wall", + (tooltip) = "The wall of prime tower will fillet.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + int32 wipe_tower_filament = 109 [ + (label) = "Wipe tower", + (tooltip) = "The extruder to use when printing perimeter of the wipe tower. Set to 0 to use the one that is available (non-soluble would be preferred).", + (category) = "Print/Multimaterial", + (gui_type) = "i_enum_open", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Filament for Features", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool prime_tower_skip_points = 110 [ + (label) = "Skip points", + (tooltip) = "The wall of prime tower will skip the start points of wipe path.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool enable_tower_interface_features = 111 [ + (label) = "Enable tower interface features", + (tooltip) = "Enable optimized prime tower interface behavior when different materials meet.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool enable_tower_interface_cooldown_during_tower = 112 [ + (label) = "Cool down from interface boost during prime tower", + (tooltip) = "When interface-layer temperature boost is active, set the nozzle back to print temperature at the start of the prime tower so it cools down during the tower.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float prime_tower_infill_gap = 113 [ + (label) = "Infill gap", + (tooltip) = "Infill gap.", + (category) = "Print/Multimaterial", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (min_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "150" + ]; + + + bool flush_into_infill = 114 [ + (label) = "Flush into objects' infill", + (tooltip) = "Purging after filament change will be done inside objects' infills. This may lower the amount of waste and decrease the print time. If the walls are printed with transparent filament, the mixed color infill will be seen outside. It will not take effect, unless the prime tower is enabled.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Flush options", + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool flush_into_support = 115 [ + (label) = "Flush into objects' support", + (tooltip) = "Purging after filament change will be done inside objects' support. This may lower the amount of waste and decrease the print time. It will not take effect, unless the prime tower is enabled.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Flush options", + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool flush_into_objects = 116 [ + (label) = "Flush into this object", + (tooltip) = "This object will be used to purge the nozzle after a filament change to save filament and decrease the print time. Colors of the objects will be mixed as a result. It will not take effect unless the prime tower is enabled.", + (category) = "Print/Multimaterial", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Flush options", + (has_default) = true, + (default_value) = "false" + ]; + + + float wipe_tower_bridging = 117 [ + (label) = "Maximal bridging distance", + (tooltip) = "Maximal distance between supports on sparse infill sections.", + (category) = "Print/Multimaterial", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "10.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float wipe_tower_extra_spacing = 118 [ + (label) = "Wipe tower purge lines spacing", + (tooltip) = "Spacing of purge lines on the wipe tower.", + (category) = "Print/Multimaterial", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (min_value) = 100, + (max_value) = 300, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float wipe_tower_extra_flow = 119 [ + (label) = "Extra flow for purging", + (tooltip) = "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically.", + (category) = "Print/Multimaterial", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Multimaterial", + (tab_optgroup) = "Prime tower", + (min_value) = 100, + (max_value) = 300, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool reduce_crossing_wall = 120 [ + (label) = "Avoid crossing walls", + (tooltip) = "Detour to avoid traveling across walls, which may cause blobs on the surface.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "INITIAL_REDUCE_CROSSING_WALL", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + FloatOrPercent max_travel_detour_distance = 121 [ + (label) = "Avoid crossing walls - Max detour length", + (tooltip) = "Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is larger than this value. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_literal) = 1000, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0., false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float bridge_density = 122 [ + (label) = "External bridge density", + (tooltip) = "Controls the density (spacing) of external bridge lines. Default is 100%.\\n\\nLower density external bridges can help improve reliability as there is more space for air to circulate around the extruded bridge, improving its cooling speed. Minimum is 10%.\\n\\nHigher densities can produce smoother bridge surfaces, as overlapping lines provide additional support during printing. Maximum is 120%.\\nNote: Bridge density that is too high can cause warping or overextrusion.", + (category) = "Print/Quality", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Bridging", + (min_value) = 10, + (max_value) = 120, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100" + ]; + + + float internal_bridge_density = 123 [ + (label) = "Internal bridge density", + (tooltip) = "Controls the density (spacing) of internal bridge lines. 100% means solid bridge. Default is 100%.\\n\\nLower density internal bridges can help reduce top surface pillowing and improve internal bridge reliability as there is more space for air to circulate around the extruded bridge, improving its cooling speed.\\n\\nThis option works particularly well when combined with the second internal bridge over infill option, further improving internal bridging structure before solid infill is extruded.", + (category) = "Print/Quality", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Bridging", + (min_value) = 10, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100" + ]; + + + float bridge_flow = 124 [ + (label) = "Bridge flow ratio", + (tooltip) = "Decrease this value slightly (for example 0.9) to reduce the amount of material for bridge, to improve sag.\\n\\nThe actual bridge flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Bridging", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float internal_bridge_flow = 125 [ + (label) = "Internal bridge flow ratio", + (tooltip) = "This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill.\\n\\nThe actual internal bridge flow used is calculated by multiplying this value with the bridge flow ratio, the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Bridging", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float top_solid_infill_flow_ratio = 126 [ + (label) = "Top surface flow ratio", + (tooltip) = "This factor affects the amount of material for top solid infill. You can decrease it slightly to have smooth surface finish.\\n\\nThe actual top surface flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float bottom_solid_infill_flow_ratio = 127 [ + (label) = "Bottom surface flow ratio", + (tooltip) = "This factor affects the amount of material for bottom solid infill.\\n\\nThe actual bottom solid infill flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + bool set_other_flow_ratios = 128 [ + (label) = "Set other flow ratios", + (tooltip) = "Change flow ratios for other extrusion path types.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float first_layer_flow_ratio = 129 [ + (label) = "First layer flow ratio", + (tooltip) = "This factor affects the amount of material on the first layer for the extrusion path roles listed in this section.\\n\\nFor the first layer, the actual flow ratio for each path role (does not affect brims and skirts) will be multiplied by this value.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float outer_wall_flow_ratio = 130 [ + (label) = "Outer wall flow ratio", + (tooltip) = "This factor affects the amount of material for outer walls.\\n\\nThe actual outer wall flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float inner_wall_flow_ratio = 131 [ + (label) = "Inner wall flow ratio", + (tooltip) = "This factor affects the amount of material for inner walls.\\n\\nThe actual inner wall flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float overhang_flow_ratio = 132 [ + (label) = "Overhang flow ratio", + (tooltip) = "This factor affects the amount of material for overhangs.\\n\\nThe actual overhang flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float sparse_infill_flow_ratio = 133 [ + (label) = "Sparse infill flow ratio", + (tooltip) = "This factor affects the amount of material for sparse infill.\\n\\nThe actual sparse infill flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float internal_solid_infill_flow_ratio = 134 [ + (label) = "Internal solid infill flow ratio", + (tooltip) = "This factor affects the amount of material for internal solid infill.\\n\\nThe actual internal solid infill flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float gap_fill_flow_ratio = 135 [ + (label) = "Gap fill flow ratio", + (tooltip) = "This factor affects the amount of material for filling the gaps.\\n\\nThe actual gap filling flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float support_flow_ratio = 136 [ + (label) = "Support flow ratio", + (tooltip) = "This factor affects the amount of material for support.\\n\\nThe actual support flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float support_interface_flow_ratio = 137 [ + (label) = "Support interface flow ratio", + (tooltip) = "This factor affects the amount of material for the support interface.\\n\\nThe actual support interface flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + bool precise_outer_wall = 138 [ + (label) = "Precise wall", + (tooltip) = "Improve shell precision by adjusting outer wall spacing. This also improves layer consistency. NOTE: This option will be ignored for outer-inner or inner-outer-inner wall sequences.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Precision", + (has_default) = true, + (default_value) = "true" + ]; + + + bool only_one_wall_top = 139 [ + (label) = "Only one wall on top surfaces", + (tooltip) = "Use only one wall on flat top surfaces, to give more space to the top infill pattern.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (has_default) = true, + (default_value) = "false" + ]; + + + FloatOrPercent min_width_top_surface = 140 [ + (label) = "One wall threshold", + (tooltip) = "If a top surface has to be printed and it's partially covered by another layer, it won't be considered at a top layer where its width is below this value. This can be useful to not let the 'one perimeter on top' trigger on surface that should be covered only by perimeters. This value can be a mm or a % of the perimeter extrusion width.\\nWarning: If enabled, artifacts can be created if you have some thin features on the next layer, like letters. Set this setting to 0 to remove these artifacts.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "inner_wall_line_width", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0, + (max_literal) = 15, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "300, true" + ]; + + + bool only_one_wall_first_layer = 141 [ + (label) = "Only one wall on first layer", + (tooltip) = "Use only one wall on first layer, to give more space to the bottom infill pattern.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (has_default) = true, + (default_value) = "false" + ]; + + + bool extra_perimeters_on_overhangs = 142 [ + (label) = "Extra perimeters on overhangs", + (tooltip) = "Create additional perimeter paths over steep overhangs and areas where bridges cannot be anchored.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Overhangs", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + bool overhang_reverse = 143 [ + (label) = "Reverse on even", + (full_label) = "Overhang reversal", + (tooltip) = "Extrude perimeters that have a part over an overhang in the reverse direction on even layers. This alternating pattern can drastically improve steep overhangs.\\n\\nThis setting can also help reduce part warping due to the reduction of stresses in the part walls.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Overhangs", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + bool overhang_reverse_internal_only = 144 [ + (label) = "Reverse only internal perimeters", + (full_label) = "Reverse only internal perimeters", + (tooltip) = "Apply the reverse perimeters logic only on internal perimeters.\\n\\nThis setting greatly reduces part stresses as they are now distributed in alternating directions. This should reduce part warping while also maintaining external wall quality. This feature can be very useful for warp prone material, like ABS/ASA, and also for elastic filaments, like TPU and Silk PLA. It can also help reduce warping on floating regions over supports.\\n\\nFor this setting to be the most effective, it is recommended to set the Reverse Threshold to 0 so that all internal walls print in alternating directions on even layers irrespective of their overhang degree.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Overhangs", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + int32 counterbore_hole_bridging = 145 [ + (label) = "Bridge counterbore holes", + (tooltip) = "This option creates bridges for counterbore holes, allowing them to be printed without support. Available modes include:\\n1. None: No bridge is created\\n2. Partially Bridged: Only a part of the unsupported area will be bridged\\n3. Sacrificial Layer: A full sacrificial bridge layer is created", + (category) = "Print/Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Bridging", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "chbNone", + (enum_value_entries) = "none", + (enum_value_entries) = "partiallybridge", + (enum_value_entries) = "sacrificiallayer", + (enum_label_entries) = "None", + (enum_label_entries) = "Partially bridged", + (enum_label_entries) = "Sacrificial layer" + ]; + + + FloatOrPercent overhang_reverse_threshold = 146 [ + (label) = "Reverse threshold", + (full_label) = "Overhang reversal threshold", + (tooltip) = "Number of mm the overhang need to be for the reversal to be considered useful. Can be a % of the perimeter width.\\nValue 0 enables reversal on every even layers regardless.\\nWhen Detect overhang wall is not enabled, this option is ignored and reversal happens on every even layers regardless.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "line_width", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Overhangs", + (min_value) = 0, + (max_literal) = 20, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "50, true" + ]; + + + bool thick_bridges = 147 [ + (label) = "Thick external bridges", + (tooltip) = "If enabled, bridges are more reliable, can bridge longer distances, but may look worse. If disabled, bridges look better but are reliable just for shorter bridged distances.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Bridging", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + bool thick_internal_bridges = 148 [ + (label) = "Thick internal bridges", + (tooltip) = "If enabled, thick internal bridges will be used. It's usually recommended to have this feature turned on. However, consider turning it off if you are using large nozzles.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Bridging", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true" + ]; + + + int32 enable_extra_bridge_layer = 149 [ + (label) = "Extra bridge layers (beta)", + (tooltip) = "This option enables the generation of an extra bridge layer over internal and/or external bridges.\\n\\nExtra bridge layers help improve bridge appearance and reliability, as the solid infill is better supported. This is especially useful in fast printers, where the bridge and solid infill speeds vary greatly. The extra bridge layer results in reduced pillowing on top surfaces, as well as reduced separation of the external bridge layer from its surrounding perimeters.\\n\\nIt is generally recommended to set this to at least 'External bridge only', unless specific issues with the sliced model are found.\\n\\nOptions:\\n1. Disabled - does not generate second bridge layers. This is the default and is set for compatibility purposes\\n2. External bridge only - generates second bridge layers for external-facing bridges only. Please note that small bridges that are shorter or narrower than the set number of perimeters will be skipped as they would not benefit from a second bridge layer. If generated, the second bridge layer will be extruded parallel to the first bridge layer to reinforce the bridge strength\\n3. Internal bridge only - generates second bridge layers for internal bridges over sparse infill only. Please note that the internal bridges count towards the top shell layer count of your model. The second internal bridge layer will be extruded as close to perpendicular to the first as possible. If multiple regions in the same island, with varying bridge angles are present, the last region of that island will be selected as the angle reference\\n4. Apply to all - generates second bridge layers for both internal and external-facing bridges\\n", + (category) = "Print/Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Bridging", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "eblDisabled", + (enum_value_entries) = "disabled", + (enum_value_entries) = "external_bridge_only", + (enum_value_entries) = "internal_bridge_only", + (enum_value_entries) = "apply_to_all", + (enum_label_entries) = "Disabled", + (enum_label_entries) = "External bridge only", + (enum_label_entries) = "Internal bridge only", + (enum_label_entries) = "Apply to all" + ]; + + + int32 dont_filter_internal_bridges = 150 [ + (label) = "Filter out small internal bridges", + (tooltip) = "This option can help reduce pillowing on top surfaces in heavily slanted or curved models.\\nBy default, small internal bridges are filtered out and the internal solid infill is printed directly over the sparse infill. This works well in most cases, speeding up printing without too much compromise on top surface quality.\\nHowever, in heavily slanted or curved models, especially where too low a sparse infill density is used, this may result in curling of the unsupported solid infill, causing pillowing.\\nEnabling limited filtering or no filtering will print internal bridge layer over slightly unsupported internal solid infill. The options below control the sensitivity of the filtering, i.e. they control where internal bridges are created:\\n1. Filter - enables this option. This is the default behavior and works well in most cases\\n2. Limited filtering - creates internal bridges on heavily slanted surfaces while avoiding unnecessary bridges. This works well for most difficult models\\n3. No filtering - creates internal bridges on every potential internal overhang. This option is useful for heavily slanted top surface models; however, in most cases, it creates too many ", + (category) = "Print/Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Bridging", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "ibfDisabled", + (enum_value_entries) = "disabled", + (enum_value_entries) = "limited", + (enum_value_entries) = "nofilter", + (enum_label_entries) = "Filter", + (enum_label_entries) = "Limited filtering", + (enum_label_entries) = "No filtering" + ]; + + + FloatOrPercent outer_wall_line_width = 151 [ + (label) = "Outer wall", + (tooltip) = "Line width of outer wall. If expressed as a %, it will be computed over the nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Line width", + (min_value) = 0, + (max_value) = 1000, + (max_literal) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0., false" + ]; + + + int32 wall_sequence = 152 [ + (label) = "Walls printing order", + (tooltip) = "Print sequence of the internal (inner) and external (outer) walls.\\n\\nUse Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\\n\\nUse Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases.\\n\\nUse Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the Z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface.", + (category) = "Print/Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "WallSequence::InnerOuter", + (enum_value_entries) = "inner wall/outer wall", + (enum_value_entries) = "outer wall/inner wall", + (enum_value_entries) = "inner-outer-inner wall", + (enum_label_entries) = "Inner/Outer", + (enum_label_entries) = "Outer/Inner", + (enum_label_entries) = "Inner/Outer/Inner", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_INFILL, + (invalidates) = STEP_PERIMETERS + ]; + + + bool is_infill_first = 153 [ + (label) = "Print infill first", + (tooltip) = "Order of wall/infill. When the tickbox is unchecked the walls are printed first, which works best in most cases.\\n\\nPrinting infill first may help with extreme overhangs as the walls have the neighbouring infill to adhere to. However, the infill will slightly push out the printed walls where it is attached to them, resulting in a worse external surface finish. It can also cause the infill to shine through the external surfaces of the part.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + int32 wall_direction = 154 [ + (label) = "Wall loop direction", + (tooltip) = "The direction which the contour wall loops are extruded when looking down from the top.\\nHoles are printed in the opposite direction to the contour to maintain alignment with layers whose contour polygons are incomplete and change direction, also partially forming the contour of a hole.\\n\\nThis option will be disabled if spiral vase mode is enabled.", + (category) = "Print/Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "WallDirection::CounterClockwise", + (enum_value_entries) = "ccw", + (enum_value_entries) = "cw", + (enum_label_entries) = "Counter clockwise", + (enum_label_entries) = "Clockwise" + ]; + + + float print_flow_ratio = 155 [ + (label) = "Flow ratio", + (tooltip) = "The material may have volumetric change after switching between molten and crystalline states. This setting changes all extrusion flow of this filament in G-code proportionally. The recommended value range is between 0.95 and 1.05. You may be able to tune this value to get a nice flat surface if there is slight overflow or underflow.\\n\\nThe final object flow ratio is this value multiplied by the filament flow ratio.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (min_value) = 0.01, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1.f" + ]; + + + FloatOrPercent line_width = 156 [ + (label) = "Default", + (tooltip) = "Default line width if other line widths are set to 0. If expressed as a %, it will be computed over the nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Line width", + (min_value) = 0, + (max_value) = 1000, + (max_literal) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0, false" + ]; + + + FloatOrPercent initial_layer_line_width = 157 [ + (label) = "First layer", + (tooltip) = "Line width of the first layer. If expressed as a %, it will be computed over the nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Line width", + (min_value) = 0, + (max_value) = 1000, + (max_literal) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0., false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_INFILL, + (invalidates) = STEP_PERIMETERS + ]; + + + float initial_layer_print_height = 158 [ + (label) = "First layer height", + (tooltip) = "Height of the first layer. Making the first layer height thicker can improve build plate adhesion.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Layer height", + (min_value) = 0, + (has_default) = true, + (default_value) = "0.2", + (invalidates) = STEP_SLICE + ]; + + + bool precise_z_height = 159 [ + (label) = "Precise Z height", + (tooltip) = "Enable this to get precise Z height of object after slicing. It will get the precise object height by fine-tuning the layer heights of the last few layers. Note that this is an experimental parameter.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Precision", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SLICE + ]; + + + bool enable_arc_fitting = 160 [ + (label) = "Arc fitting", + (tooltip) = "Enable this to get a G-code file which has G2 and G3 moves. The fitting tolerance is same as the resolution.\\n\\nNote: For Klipper machines, this option is recommended to be disabled. Klipper does not benefit from arc commands as these are split again into line segments by the firmware. This results in a reduction in surface quality as line segments are converted to arcs by the slicer and then back to line segments by the firmware.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Precision", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_INFILL, + (invalidates) = STEP_PERIMETERS + ]; + + + FloatOrPercent sparse_infill_line_width = 161 [ + (label) = "Sparse infill", + (tooltip) = "Line width of internal sparse infill. If expressed as a %, it will be computed over the nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Line width", + (min_value) = 0, + (max_value) = 1000, + (max_literal) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0., false" + ]; + + + int32 ironing_type = 162 [ + (label) = "Ironing Type", + (tooltip) = "Ironing is using small flow to print on same height of surface again to make flat surface more smooth. This setting controls which layer being ironed.", + (category) = "Print/Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "IroningType::NoIroning", + (enum_value_entries) = "no ironing", + (enum_value_entries) = "top", + (enum_value_entries) = "topmost", + (enum_value_entries) = "solid", + (enum_label_entries) = "No ironing", + (enum_label_entries) = "Top surfaces", + (enum_label_entries) = "Topmost surface", + (enum_label_entries) = "All solid layers" + ]; + + + int32 ironing_pattern = 163 [ + (label) = "Ironing Pattern", + (tooltip) = "The pattern that will be used when ironing.", + (category) = "Print/Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "ipRectilinear", + (enum_value_entries) = "rectilinear", + (enum_value_entries) = "concentric", + (enum_label_entries) = "Rectilinear", + (enum_label_entries) = "Concentric" + ]; + + + float ironing_flow = 164 [ + (label) = "Ironing flow", + (tooltip) = "The amount of material to extrude during ironing. Relative to flow of normal layer height. Too high value results in overextrusion on the surface.", + (category) = "Print/Quality", + (sidetext) = "%", + (ratio_over) = "layer_height", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "10" + ]; + + + float ironing_spacing = 165 [ + (label) = "Ironing line spacing", + (tooltip) = "The distance between the lines of ironing.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (min_value) = 0, + (max_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.1" + ]; + + + float ironing_inset = 166 [ + (label) = "Ironing inset", + (tooltip) = "The distance to keep from the edges. A value of 0 sets this to half of the nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + float ironing_angle = 167 [ + (label) = "Ironing angle offset", + (tooltip) = "The angle of ironing lines offset from the top surface.", + (category) = "Print/Quality", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (min_value) = 0, + (max_value) = 359, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + bool ironing_angle_fixed = 168 [ + (label) = "Fixed ironing angle", + (tooltip) = "Use a fixed absolute angle for ironing.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + bool zaa_enabled = 169 [ + (label) = "Z contouring enabled", + (tooltip) = "Enable Z-layer contouring (aka Z-layer anti-aliasing).", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (has_default) = true, + (default_value) = "false" + ]; + + + float zaa_minimize_perimeter_height = 170 [ + (label) = "Minimize wall height angle", + (tooltip) = "Reduce the height of top-surface perimeters to match the model edge height.\\nAffects perimeters with a slope less than this angle (degrees).\\nA reasonable value is 35. Set to 0 to disable.", + (category) = "Print/Quality", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (min_value) = 0, + (max_value) = 90, + (has_default) = true, + (default_value) = "35" + ]; + + + bool zaa_dont_alternate_fill_direction = 171 [ + (label) = "Don't alternate fill direction", + (tooltip) = "Disable alternating fill direction when using Z contouring.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (has_default) = true, + (default_value) = "false" + ]; + + + float zaa_min_z = 172 [ + (label) = "Minimum z height", + (tooltip) = "Minimum Z-layer height.\\nAlso controls the slicing plane.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Ironing", + (min_value) = 0, + (max_value) = 100, + (has_default) = true, + (default_value) = "0.05" + ]; + + + bool small_area_infill_flow_compensation = 173 [ + (label) = "Small area flow compensation (beta)", + (tooltip) = "Enable flow compensation for small infill areas.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + repeated string small_area_infill_flow_compensation_model = 174 [ + (label) = "Flow Compensation Model", + (tooltip) = "Flow Compensation Model, used to adjust the flow for small infill areas. The model is expressed as a comma separated pair of values for extrusion length and flow correction factor. Each pair is on a separate line, followed by a semicolon, in the following format: \\\"1.234, 5.678;\\\"", + (category) = "Print/Quality", + (gui_flags) = "serialized", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Walls and surfaces", + (height) = 15, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (has_default) = true, + (default_value) = "\"0,0\", \"\n0.2,0.4444\", \"\n0.4,0.6145\", \"\n0.6,0.7059\", \"\n0.8,0.7619\", \"\n1.5,0.8571\", \"\n2,0.8889\", \"\n3,0.9231\", \"\n5,0.9520\", \"\n10,1\"" + ]; + + + bool make_overhang_printable = 175 [ + (label) = "Make overhangs printable", + (tooltip) = "Modify the geometry to print overhangs without support material.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Overhangs", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float make_overhang_printable_angle = 176 [ + (label) = "Make overhangs printable - Maximum angle", + (tooltip) = "Maximum angle of overhangs to allow after making more steep overhangs printable.90° will not change the model at all and allow any overhang, while 0 will replace all overhangs with conical material.", + (category) = "Print/Quality", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Overhangs", + (min_value) = 0, + (max_value) = 90, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "55." + ]; + + + float make_overhang_printable_hole_size = 177 [ + (label) = "Make overhangs printable - Hole area", + (tooltip) = "Maximum area of a hole in the base of the model before it's filled by conical material. A value of 0 will fill all the holes in the model base.", + (category) = "Print/Quality", + (sidetext) = "mm²", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Overhangs", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0." + ]; + + + bool detect_overhang_wall = 178 [ + (label) = "Detect overhang walls", + (tooltip) = "Detect the overhang percentage relative to line width and use different speed to print. For 100%% overhang, bridge speed is used.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Overhangs", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true" + ]; + + + FloatOrPercent inner_wall_line_width = 179 [ + (label) = "Inner wall", + (tooltip) = "Line width of inner wall. If expressed as a %, it will be computed over the nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Line width", + (min_value) = 0, + (max_value) = 1000, + (max_literal) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0., false" + ]; + + + float resolution = 180 [ + (label) = "Resolution", + (tooltip) = "The G-code path is generated after simplifying the contour of models to avoid too many points and G-code lines. Smaller value means higher resolution and more time to slice.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Precision", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.01", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_INFILL, + (invalidates) = STEP_PERIMETERS, + (invalidates) = STEP_SLICE + ]; + + + int32 seam_position = 181 [ + (label) = "Seam position", + (tooltip) = "The start position to print each part of outer wall.", + (category) = "Print/Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (has_default) = true, + (default_value) = "spAligned", + (enum_value_entries) = "nearest", + (enum_value_entries) = "aligned", + (enum_value_entries) = "aligned_back", + (enum_value_entries) = "back", + (enum_value_entries) = "random", + (enum_label_entries) = "Nearest", + (enum_label_entries) = "Aligned", + (enum_label_entries) = "Aligned back", + (enum_label_entries) = "Back", + (enum_label_entries) = "Random" + ]; + + + bool staggered_inner_seams = 182 [ + (label) = "Staggered inner seams", + (tooltip) = "This option causes the inner seams to be shifted backwards based on their depth, forming a zigzag pattern.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + FloatOrPercent seam_gap = 183 [ + (label) = "Seam gap", + (tooltip) = "In order to reduce the visibility of the seam in a closed loop extrusion, the loop is interrupted and shortened by a specified amount.\\nThis amount can be specified in millimeters or as a percentage of the current extruder diameter. The default value for this parameter is 10%.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "10,true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + int32 seam_slope_type = 184 [ + (label) = "Scarf joint seam (beta)", + (tooltip) = "Use scarf joint to minimize seam visibility and increase seam strength.", + (category) = "Print/Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "SeamScarfType::None", + (enum_value_entries) = "none", + (enum_value_entries) = "external", + (enum_value_entries) = "all", + (enum_label_entries) = "None", + (enum_label_entries) = "Contour", + (enum_label_entries) = "Contour and hole" + ]; + + + bool seam_slope_conditional = 185 [ + (label) = "Conditional scarf joint", + (tooltip) = "Apply scarf joints only to smooth perimeters where traditional seams do not conceal the seams at sharp corners effectively.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + int32 scarf_angle_threshold = 186 [ + (label) = "Conditional angle threshold", + (tooltip) = "This option sets the threshold angle for applying a conditional scarf joint seam.\\nIf the maximum angle within the perimeter loop exceeds this value (indicating the absence of sharp corners), a scarf joint seam will be used. The default value is 155°.", + (category) = "Print/Quality", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (min_value) = 0, + (max_value) = 180, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "155" + ]; + + + float scarf_overhang_threshold = 187 [ + (label) = "Conditional overhang threshold", + (tooltip) = "This option determines the overhang threshold for the application of scarf joint seams. If the unsupported portion of the perimeter is less than this threshold, scarf joint seams will be applied. The default threshold is set at 40% of the external wall's width. Due to performance considerations, the degree of overhang is estimated.", + (category) = "Print/Quality", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "40" + ]; + + + FloatOrPercent scarf_joint_speed = 188 [ + (label) = "Scarf joint speed", + (tooltip) = "This option sets the printing speed for scarf joints. It is recommended to print scarf joints at a slow speed (less than 100 mm/s). It's also advisable to enable 'Extrusion rate smoothing' if the set speed varies significantly from the speed of the outer or inner walls. If the speed specified here is higher than the speed of the outer or inner walls, the printer will default to the slower of the two speeds. When specified as a percentage (e.g., 80%), the speed is calculated based on the respective outer or inner wall speed. The default value is set to 100%.", + (category) = "Print/Quality", + (sidetext) = "mm/s or %", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100, true" + ]; + + + float scarf_joint_flow_ratio = 189 [ + (label) = "Scarf joint flow ratio", + (tooltip) = "This factor affects the amount of material for scarf joints.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (min_value) = 0, + (max_value) = 2, + (has_default) = true, + (default_value) = "1" + ]; + + + FloatOrPercent seam_slope_start_height = 190 [ + (label) = "Scarf start height", + (tooltip) = "Start height of the scarf.\\nThis amount can be specified in millimeters or as a percentage of the current layer height. The default value for this parameter is 0.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "layer_height", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0, false" + ]; + + + bool seam_slope_entire_loop = 191 [ + (label) = "Scarf around entire wall", + (tooltip) = "The scarf extends to the entire length of the wall.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float seam_slope_min_length = 192 [ + (label) = "Scarf length", + (tooltip) = "Length of the scarf. Setting this parameter to zero effectively disables the scarf.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "20" + ]; + + + int32 seam_slope_steps = 193 [ + (label) = "Scarf steps", + (tooltip) = "Minimum number of segments of each scarf.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "10" + ]; + + + bool seam_slope_inner_walls = 194 [ + (label) = "Scarf joint for inner walls", + (tooltip) = "Use scarf joint for inner walls as well.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + bool role_based_wipe_speed = 195 [ + (label) = "Role base wipe speed", + (tooltip) = "The wipe speed is determined by the speed of the current extrusion role. e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + bool wipe_on_loops = 196 [ + (label) = "Wipe on loops", + (tooltip) = "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + bool wipe_before_external_loop = 197 [ + (label) = "Wipe before external loop", + (tooltip) = "To minimize visibility of potential overextrusion at the start of an external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print order, the de-retraction is performed slightly on the inside from the start of the external perimeter. That way any potential over extrusion is hidden from the outside surface.\\n\\nThis is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order as in these modes it is more likely an external perimeter is printed immediately after a de-retraction move.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + FloatOrPercent wipe_speed = 198 [ + (label) = "Wipe speed", + (tooltip) = "The wipe speed is determined by the speed setting specified in this configuration. If the value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel speed setting above. The default value for this parameter is 80%.", + (category) = "Print/Quality", + (sidetext) = "mm/s or %", + (ratio_over) = "travel_speed", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Seam", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "80,true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + FloatOrPercent internal_solid_infill_line_width = 199 [ + (label) = "Internal solid infill", + (tooltip) = "Line width of internal solid infill. If expressed as a %, it will be computed over the nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Line width", + (min_value) = 0, + (max_value) = 1000, + (max_literal) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0., false" + ]; + + + float slice_closing_radius = 200 [ + (label) = "Slice gap closing radius", + (tooltip) = "Cracks smaller than 2x gap closing radius are being filled 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.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Precision", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.049" + ]; + + + FloatOrPercent support_line_width = 201 [ + (label) = "Support", + (tooltip) = "Line width of support. If expressed as a %, it will be computed over the nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Line width", + (min_value) = 0, + (max_value) = 1000, + (max_literal) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0., false" + ]; + + + FloatOrPercent top_surface_line_width = 202 [ + (label) = "Top surface", + (tooltip) = "Line width for top surfaces. If expressed as a %, it will be computed over the nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Line width", + (min_value) = 0, + (max_value) = 1000, + (max_literal) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0., false" + ]; + + + float xy_hole_compensation = 203 [ + (label) = "X-Y hole compensation", + (tooltip) = "Holes in objects will expand or contract in the XY plane by the configured value. Positive values make holes bigger, negative values make holes smaller. This function is used to adjust sizes slightly when the objects have assembling issues.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Precision", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + float xy_contour_compensation = 204 [ + (label) = "X-Y contour compensation", + (tooltip) = "Contours of objects will expand or contract in the XY plane by the configured value. Positive values make contours bigger, negative values make contours smaller. This function is used to adjust sizes slightly when the objects have assembling issues.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Precision", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + bool hole_to_polyhole = 205 [ + (label) = "Convert holes to polyholes", + (tooltip) = "Search for almost-circular holes that span more than one layer and convert the geometry to polyholes. Use the nozzle size and the (biggest) diameter to compute the polyhole.\\nSee http://hydraraptor.blogspot.com/2011/02/polyholes.html", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Precision", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + FloatOrPercent hole_to_polyhole_threshold = 206 [ + (label) = "Polyhole detection margin", + (tooltip) = "Maximum defection of a point to the estimated radius of the circle.\\nAs cylinders are often exported as triangles of varying size, points may not be on the circle circumference. This setting allows you some leeway to broaden the detection.\\nIn mm or in % of the radius.", + (category) = "Print/Quality", + (sidetext) = "mm or %", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Precision", + (max_literal) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.01, false" + ]; + + + bool hole_to_polyhole_twisted = 207 [ + (label) = "Polyhole twist", + (tooltip) = "Rotate the polyhole every layer.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Precision", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true" + ]; + + + int32 wall_generator = 208 [ + (label) = "Wall generator", + (tooltip) = "Classic wall generator produces walls with constant extrusion width and for very thin areas is used gap-fill. Arachne engine produces walls with variable extrusion width.", + (category) = "Print/Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "PerimeterGeneratorType::Arachne", + (enum_value_entries) = "classic", + (enum_value_entries) = "arachne", + (enum_label_entries) = "Classic", + (enum_label_entries) = "Arachne" + ]; + + + float wall_transition_length = 209 [ + (label) = "Wall transition length", + (tooltip) = "When transitioning between different numbers of walls as the part becomes thinner, a certain amount of space is allotted to split or join the wall segments. It's expressed as a percentage over nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100" + ]; + + + float wall_transition_filter_deviation = 210 [ + (label) = "Wall transitioning filter margin", + (tooltip) = "Prevent transitioning back and forth between one extra wall and one less. This margin extends the range of extrusion widths which follow to [Minimum wall width - margin, 2 * Minimum wall width + margin]. Increasing this margin reduces the number of transitions, which reduces the number of extrusion starts/stops and travel time. However, large extrusion width variation can lead to under- or overextrusion problems. It's expressed as a percentage over nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "25" + ]; + + + float wall_transition_angle = 211 [ + (label) = "Wall transitioning threshold angle", + (tooltip) = "When to create transitions between even and odd numbers of walls. A wedge shape with an angle greater than this setting will not have transitions and no walls will be printed in the center to fill the remaining space. Reducing this setting reduces the number and length of these center walls, but may leave gaps or overextrude.", + (category) = "Print/Quality", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (min_value) = 1, + (max_value) = 59, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "10." + ]; + + + int32 wall_distribution_count = 212 [ + (label) = "Wall distribution count", + (tooltip) = "The number of walls, counted from the center, over which the variation needs to be spread. Lower values mean that the outer walls don't change in width.", + (category) = "Print/Quality", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1" + ]; + + + float min_feature_size = 213 [ + (label) = "Minimum feature size", + (tooltip) = "Minimum thickness of thin features. Model features that are thinner than this value will not be printed, while features thicker than than this value will be widened to the minimum wall width. It's expressed as a percentage over nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "25" + ]; + + + float min_length_factor = 214 [ + (label) = "Minimum wall length", + (tooltip) = "Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\\n\\nNOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the outside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visible if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (min_value) = 0, + (max_value) = 25, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.5" + ]; + + + float wall_maximum_resolution = 215 [ + (label) = "Maximum wall resolution", + (tooltip) = "This value determines the smallest wall line segment length in mm. The smaller you set this value, the more accurate and precise the walls will be.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (min_value) = 0.005, + (max_value) = 0.5, + (has_default) = true, + (default_value) = "0.5f" + ]; + + + float wall_maximum_deviation = 216 [ + (label) = "Maximum wall deviation", + (tooltip) = "The maximum deviation allowed when reducing the resolution for the 'Maximum wall resolution' setting. If you increase this, the print will be less accurate, but the G-Code will be smaller. 'Maximum wall deviation' limits 'Maximum wall resolution', so if the two conflict, 'Maximum wall deviation' takes precedence.", + (category) = "Print/Quality", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (min_value) = 0.005, + (max_value) = 0.05, + (has_default) = true, + (default_value) = "0.025f" + ]; + + + float initial_layer_min_bead_width = 217 [ + (label) = "First layer minimum wall width", + (tooltip) = "The minimum wall width that should be used for the first layer is recommended to be set to the same size as the nozzle. This adjustment is expected to enhance adhesion.", + (category) = "Print/Quality", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "85" + ]; + + + float min_bead_width = 218 [ + (label) = "Minimum wall width", + (tooltip) = "Width of the wall that will replace thin features (according to the Minimum feature size) of the model. If the Minimum wall width is thinner than the thickness of the feature, the wall will become as thick as the feature itself. It's expressed as a percentage over nozzle diameter.", + (category) = "Print/Quality", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Quality", + (tab_optgroup) = "Wall generator", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "85" + ]; + + + bool enable_overhang_speed = 219 [ + (label) = "Slow down for overhang", + (tooltip) = "Enable this option to slow printing down for different overhang degree.", + (category) = "Print/Speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Overhang speed", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true" + ]; + + + bool slowdown_for_curled_perimeters = 220 [ + (label) = "Slow down for curled perimeters", + (tooltip) = "Enable this option to slow down printing in areas where perimeters may have curled upwards. For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\\n\\nIt is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed slow enough that perimeter curling does not happen. If printing with a high external perimeter speed, this parameter may introduce slight artifacts when slowing down due to the large variance in print speeds. If you notice artifacts, ensure your pressure advance is tuned correctly.\\n\\nNote: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge. For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied.", + (category) = "Print/Speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Overhang speed", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true" + ]; + + + FloatOrPercent overhang_1_4_speed = 221 [ + (label) = "10%", + (full_label) = "10%", + (category) = "Print/Speed", + (sidetext) = "mm/s or %", + (ratio_over) = "outer_wall_speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Overhang speed", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0, false" + ]; + + + FloatOrPercent overhang_2_4_speed = 222 [ + (label) = "25%", + (full_label) = "25%", + (category) = "Print/Speed", + (sidetext) = "mm/s or %", + (ratio_over) = "outer_wall_speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Overhang speed", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0, false" + ]; + + + FloatOrPercent overhang_3_4_speed = 223 [ + (label) = "50%", + (full_label) = "50%", + (category) = "Print/Speed", + (sidetext) = "mm/s or %", + (ratio_over) = "outer_wall_speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Overhang speed", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0, false" + ]; + + + FloatOrPercent overhang_4_4_speed = 224 [ + (label) = "75%", + (full_label) = "75%", + (category) = "Print/Speed", + (sidetext) = "mm/s or %", + (ratio_over) = "outer_wall_speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Overhang speed", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0, false" + ]; + + + float bridge_speed = 225 [ + (label) = "External", + (tooltip) = "Speed of the externally visible bridge extrusions.\\n\\nIn addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Overhang speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "25" + ]; + + + FloatOrPercent internal_bridge_speed = 226 [ + (label) = "Internal", + (tooltip) = "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%.", + (category) = "Print/Speed", + (sidetext) = "mm/s or %", + (ratio_over) = "bridge_speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Overhang speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "150, true" + ]; + + + float default_acceleration = 227 [ + (label) = "Normal printing", + (tooltip) = "The default acceleration of both normal printing and travel except initial layer.", + (category) = "Print/Speed", + (sidetext) = "mm/s²", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "500.0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float outer_wall_speed = 228 [ + (label) = "Outer wall", + (tooltip) = "Speed of outer wall which is outermost and visible. It's used to be slower than inner wall speed to get better quality.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "60" + ]; + + + FloatOrPercent small_perimeter_speed = 229 [ + (label) = "Small perimeters", + (tooltip) = "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto.", + (category) = "Print/Speed", + (sidetext) = "mm/s or %", + (ratio_over) = "outer_wall_speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "50, true" + ]; + + + float small_perimeter_threshold = 230 [ + (label) = "Small perimeters threshold", + (tooltip) = "This sets the threshold for small perimeter length. Default threshold is 0mm.", + (category) = "Print/Speed", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + float inner_wall_acceleration = 231 [ + (label) = "Inner wall", + (tooltip) = "Acceleration of inner walls.", + (category) = "Print/Speed", + (sidetext) = "mm/s²", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "10000", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float travel_acceleration = 232 [ + (label) = "Travel", + (tooltip) = "Acceleration of travel moves.", + (category) = "Print/Speed", + (sidetext) = "mm/s²", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "10000", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float top_surface_acceleration = 233 [ + (label) = "Top surface", + (tooltip) = "Acceleration of top surface infill. Using a lower value may improve top surface quality.", + (category) = "Print/Speed", + (sidetext) = "mm/s²", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "500", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float outer_wall_acceleration = 234 [ + (label) = "Outer wall", + (tooltip) = "Acceleration of outer wall. Using a lower value can improve quality.", + (category) = "Print/Speed", + (sidetext) = "mm/s²", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "500", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + FloatOrPercent bridge_acceleration = 235 [ + (label) = "Bridge", + (tooltip) = "Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be calculated based on the outer wall acceleration.", + (category) = "Print/Speed", + (sidetext) = "mm/s² or %", + (ratio_over) = "outer_wall_acceleration", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "50,true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + FloatOrPercent sparse_infill_acceleration = 236 [ + (label) = "Sparse infill", + (tooltip) = "Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration.", + (category) = "Print/Speed", + (sidetext) = "mm/s² or %", + (ratio_over) = "default_acceleration", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100, true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + FloatOrPercent internal_solid_infill_acceleration = 237 [ + (label) = "Internal solid infill", + (tooltip) = "Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration.", + (category) = "Print/Speed", + (sidetext) = "mm/s² or %", + (ratio_over) = "default_acceleration", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100, true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float initial_layer_acceleration = 238 [ + (label) = "First layer", + (tooltip) = "Acceleration of the first layer. Using a lower value can improve build plate adhesion.", + (category) = "Print/Speed", + (sidetext) = "mm/s²", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "300", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + FloatOrPercent initial_layer_travel_acceleration = 239 [ + (label) = "First layer travel", + (tooltip) = "Travel acceleration of first layer.\\nThe percentage value is relative to Travel Acceleration.", + (category) = "Print/Speed", + (sidetext) = "mm/s² or %", + (ratio_over) = "travel_acceleration", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100, true", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool accel_to_decel_enable = 240 [ + (label) = "Enable accel_to_decel", + (tooltip) = "Klipper's max_accel_to_decel will be adjusted automatically.", + (category) = "Print/Speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float accel_to_decel_factor = 241 [ + (label) = "accel_to_decel", + (tooltip) = "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration.", + (category) = "Print/Speed", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Acceleration", + (min_value) = 1, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "50", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float default_jerk = 242 [ + (label) = "Default", + (tooltip) = "Default jerk.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Jerk(XY)", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + float default_junction_deviation = 243 [ + (label) = "Junction Deviation", + (tooltip) = "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk setting).", + (category) = "Print/Speed", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Jerk(XY)", + (min_value) = 0, + (max_value) = 0.3, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.f" + ]; + + + float outer_wall_jerk = 244 [ + (label) = "Outer wall", + (tooltip) = "Jerk of outer walls.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Jerk(XY)", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "9" + ]; + + + float inner_wall_jerk = 245 [ + (label) = "Inner wall", + (tooltip) = "Jerk of inner walls.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Jerk(XY)", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "9" + ]; + + + float top_surface_jerk = 246 [ + (label) = "Top surface", + (tooltip) = "Jerk for top surface.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Jerk(XY)", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "9" + ]; + + + float infill_jerk = 247 [ + (label) = "Infill", + (tooltip) = "Jerk for infill.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Jerk(XY)", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "9" + ]; + + + float initial_layer_jerk = 248 [ + (label) = "First layer", + (tooltip) = "Jerk for the first layer.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Jerk(XY)", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "9" + ]; + + + float travel_jerk = 249 [ + (label) = "Travel", + (tooltip) = "Jerk for travel.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Jerk(XY)", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "12" + ]; + + + FloatOrPercent initial_layer_travel_jerk = 250 [ + (label) = "First layer travel", + (tooltip) = "Travel jerk of first layer.\\nThe percentage value is relative to Travel Jerk.", + (category) = "Print/Speed", + (sidetext) = "mm/s or %", + (ratio_over) = "travel_jerk", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Jerk(XY)", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100, true", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float initial_layer_speed = 251 [ + (label) = "First layer", + (tooltip) = "Speed of the first layer except the solid infill part.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "First layer speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "30", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float initial_layer_infill_speed = 252 [ + (label) = "First layer infill", + (tooltip) = "Speed of solid infill part of the first layer.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "First layer speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "60.0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + FloatOrPercent initial_layer_travel_speed = 253 [ + (label) = "First layer travel speed", + (tooltip) = "Travel speed of the first layer.", + (category) = "Print/Speed", + (sidetext) = "mm/s or %", + (ratio_over) = "travel_speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "First layer speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100, true", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + int32 slow_down_layers = 254 [ + (label) = "Number of slow layers", + (tooltip) = "The first few layers are printed slower than normal. The speed is gradually increased in a linear fashion over the specified number of layers.", + (category) = "Print/Speed", + (sidetext) = "layers", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "First layer speed", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + float gap_infill_speed = 255 [ + (label) = "Gap infill", + (tooltip) = "Speed of gap infill. Gap usually has irregular line width and should be printed more slowly.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "30" + ]; + + + float sparse_infill_speed = 256 [ + (label) = "Sparse infill", + (tooltip) = "Speed of internal sparse infill.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100" + ]; + + + float ironing_speed = 257 [ + (label) = "Ironing speed", + (tooltip) = "Print speed of ironing lines.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "20" + ]; + + + float max_volumetric_extrusion_rate_slope = 258 [ + (label) = "Extrusion rate smoothing", + (tooltip) = "This parameter smooths out sudden extrusion rate changes that happen when the printer transitions from printing a high flow (high speed/larger width) extrusion to a lower flow (lower speed/smaller width) extrusion and vice versa.\\n\\nIt defines the maximum rate by which the extruded volumetric flow in mm³/s can change over time. Higher values mean higher extrusion rate changes are allowed, resulting in faster speed transitions.\\n\\nA value of 0 disables the feature.\\n\\nFor a high speed, high flow direct drive printer (like the Bambu lab or Voron) this value is usually not needed. However it can provide some marginal benefit in certain cases where feature speeds vary greatly. For example, when there are aggressive slowdowns due to overhangs. In these cases a high value of around 300-350 mm³/s² is recommended as this allows for just enough smoothing to assist pressure advance achieve a smoother flow transition.\\n\\nFor slower printers without pressure advance, the value should be set much lower. A value of 10-15 mm³/s² is a good starting point for direct drive extruders and 5-10 mm³/s² for Bowden style.\\n\\nThis feature is known as Pressure Equalizer in Prusa slicer.\\n\\nNote: this parameter disables arc fitting.", + (category) = "Print/Speed", + (sidetext) = "mm³/s²", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float max_volumetric_extrusion_rate_slope_segment_length = 259 [ + (label) = "Smoothing segment length", + (tooltip) = "A lower value results in smoother extrusion rate transitions. However, this results in a significantly larger G-code file and more instructions for the printer to process.\\n\\nDefault value of 3 works well for most cases. If your printer is stuttering, increase this value to reduce the number of adjustments made.\\n\\nAllowed values: 0.5-5", + (category) = "Print/Speed", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Advanced", + (min_value) = 0.5, + (max_value) = 5, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "3.0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + bool extrusion_rate_smoothing_external_perimeter_only = 260 [ + (label) = "Apply only on external features", + (tooltip) = "Applies extrusion rate smoothing only on external perimeters and overhangs. This can help reduce artefacts due to sharp speed transitions on externally visible overhangs without impacting the print speed of features that will not be visible to the user.", + (category) = "Print/Speed", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float inner_wall_speed = 261 [ + (label) = "Inner wall", + (tooltip) = "Speed of inner wall.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "60" + ]; + + + float internal_solid_infill_speed = 262 [ + (label) = "Internal solid infill", + (tooltip) = "Speed of internal solid infill, not the top and bottom surface.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100" + ]; + + + float support_interface_speed = 263 [ + (label) = "Support interface", + (tooltip) = "Speed of support interface.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "80" + ]; + + + float support_speed = 264 [ + (label) = "Support", + (tooltip) = "Speed of support.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "80" + ]; + + + float top_surface_speed = 265 [ + (label) = "Top surface", + (tooltip) = "Speed of top surface infill which is solid.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Other layers speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100" + ]; + + + float travel_speed = 266 [ + (label) = "Travel", + (tooltip) = "Speed of travel which is faster and without extrusion.", + (category) = "Print/Speed", + (sidetext) = "mm/s", + (tab_type) = "Print", + (tab_page) = "Speed", + (tab_optgroup) = "Travel speed", + (min_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "120", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool bridge_no_support = 267 [ + (label) = "Don't support bridges", + (tooltip) = "Don't support the whole bridge area which make support very large. Bridges can usually be printed directly without support if not very long.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float max_bridge_length = 268 [ + (label) = "Max bridge length", + (tooltip) = "Max length of bridges that don't need support. Set it to 0 if you want all bridges to be supported, and set it to a very large value if you don't want any bridges to be supported.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "10" + ]; + + + float raft_contact_distance = 269 [ + (label) = "Raft contact Z distance", + (tooltip) = "Z gap between raft and object. If Support Top Z Distance is 0, this value is ignored and the object is printed in direct contact with the raft (no gap).", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Raft", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.1" + ]; + + + float raft_first_layer_density = 270 [ + (label) = "First layer density", + (tooltip) = "Density of the first raft or support layer.", + (category) = "Print/Support", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support", + (min_value) = 10, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "90" + ]; + + + float raft_first_layer_expansion = 271 [ + (label) = "First layer expansion", + (tooltip) = "Expand the first raft or support layer to improve bed plate adhesion.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "2.0" + ]; + + + int32 raft_layers = 272 [ + (label) = "Raft layers", + (tooltip) = "Object will be raised by this number of support layers. Use this function to avoid warping when printing ABS.", + (category) = "Print/Support", + (sidetext) = "layers", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Raft", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "INITIAL_RAFT_LAYERS" + ]; + + + bool enable_support = 273 [ + (label) = "Enable support", + (tooltip) = "Enable support generation.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support", + (has_default) = true, + (default_value) = "false" + ]; + + + int32 support_type = 274 [ + (label) = "Type", + (tooltip) = "Normal (auto) and Tree (auto) are used to generate support automatically. If Normal (manual) or Tree (manual) is selected, only support enforcers are generated.", + (category) = "Print/Support", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support", + (has_default) = true, + (default_value) = "stNormalAuto", + (enum_value_entries) = "normal(auto)", + (enum_value_entries) = "tree(auto)", + (enum_value_entries) = "normal(manual)", + (enum_value_entries) = "tree(manual)", + (enum_label_entries) = "Normal (auto)", + (enum_label_entries) = "Tree (auto)", + (enum_label_entries) = "Normal (manual)", + (enum_label_entries) = "Tree (manual)" + ]; + + + float support_object_xy_distance = 275 [ + (label) = "Support/object XY distance", + (tooltip) = "XY separation between an object and its support.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (max_value) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.35" + ]; + + + float support_object_first_layer_gap = 276 [ + (label) = "Support/object first layer gap", + (tooltip) = "XY separation between an object and its support at the first layer.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (max_value) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.2" + ]; + + + float support_angle = 277 [ + (label) = "Pattern angle", + (tooltip) = "Use this setting to rotate the support pattern on the horizontal plane.", + (category) = "Print/Support", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (max_value) = 359, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + bool support_on_build_plate_only = 278 [ + (label) = "On build plate only", + (tooltip) = "Don't create support on model surface, only on build plate.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support", + (has_default) = true, + (default_value) = "false" + ]; + + + bool support_critical_regions_only = 279 [ + (label) = "Support critical regions only", + (tooltip) = "Only create support for critical regions including sharp tail, cantilever, etc.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + bool support_remove_small_overhang = 280 [ + (label) = "Ignore small overhangs", + (tooltip) = "Ignore small overhangs that possibly don't require support.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true" + ]; + + + float support_top_z_distance = 281 [ + (label) = "Top Z distance", + (tooltip) = "Z gap between the support's top and object.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.2", + (enum_value_entries) = "0", + (enum_value_entries) = "0.1", + (enum_value_entries) = "0.2", + (enum_label_entries) = "0 (soluble)", + (enum_label_entries) = "0.1 (semi-detachable)", + (enum_label_entries) = "0.2 (detachable)" + ]; + + + float support_bottom_z_distance = 282 [ + (label) = "Bottom Z distance", + (tooltip) = "Z gap between the object and the support bottom. If Support Top Z Distance is 0 and the bottom has interface layers, this value is ignored and the support is printed in direct contact with the object (no gap).", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.2" + ]; + + + int32 support_filament = 283 [ + (label) = "Support/raft base", + (tooltip) = "Filament to print support base and raft. \\\"Default\\\" means no specific filament for support and current filament is used.", + (category) = "Print/Support", + (gui_type) = "i_enum_open", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support filament", + (min_value) = 0, + (has_default) = true, + (default_value) = "0" + ]; + + + bool support_interface_not_for_body = 284 [ + (label) = "Avoid interface filament for base", + (tooltip) = "Avoid using support interface filament to print support base if possible.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support filament", + (has_default) = true, + (default_value) = "true" + ]; + + + int32 support_interface_filament = 285 [ + (label) = "Support/raft interface", + (tooltip) = "Filament to print support interface. \\\"Default\\\" means no specific filament for support interface and current filament is used.", + (category) = "Print/Support", + (gui_type) = "i_enum_open", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support filament", + (min_value) = 0, + (has_default) = true, + (default_value) = "0" + ]; + + + int32 support_interface_top_layers = 286 [ + (label) = "Top interface layers", + (tooltip) = "Number of top interface layers.", + (category) = "Print/Support", + (sidetext) = "layers", + (gui_type) = "i_enum_open", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "3", + (enum_value_entries) = "0", + (enum_value_entries) = "1", + (enum_value_entries) = "2", + (enum_value_entries) = "3", + (enum_label_entries) = "0", + (enum_label_entries) = "1", + (enum_label_entries) = "2", + (enum_label_entries) = "3" + ]; + + + int32 support_interface_bottom_layers = 287 [ + (label) = "Bottom interface layers", + (tooltip) = "Number of bottom interface layers.", + (category) = "Print/Support", + (sidetext) = "layers", + (gui_type) = "i_enum_open", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = -1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0", + (enum_value_entries) = "-1", + (enum_label_entries) = "Same as top" + ]; + + + float support_interface_spacing = 288 [ + (label) = "Top interface spacing", + (tooltip) = "Spacing of interface lines. Zero means solid interface.\\nForce using solid interface when support ironing is enabled.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.5" + ]; + + + float support_bottom_interface_spacing = 289 [ + (label) = "Bottom interface spacing", + (tooltip) = "Spacing of bottom interface lines. Zero means solid interface.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.5" + ]; + + + int32 support_base_pattern = 290 [ + (label) = "Base pattern", + (tooltip) = "Line pattern of support.\\n\\nThe Default option for Tree supports is Hollow, which means no base pattern. For other support types, the Default option is the Rectilinear pattern.\\n\\nNOTE: For Organic supports, the two walls are supported only with the Hollow/Default base pattern. The Lightning base pattern is supported only by Tree Slim/Strong/Hybrid supports. For the other support types, the Rectilinear will be used instead of Lightning.", + (category) = "Print/Support", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "smpDefault", + (enum_value_entries) = "default", + (enum_value_entries) = "rectilinear", + (enum_value_entries) = "rectilinear-grid", + (enum_value_entries) = "honeycomb", + (enum_value_entries) = "lightning", + (enum_value_entries) = "hollow", + (enum_label_entries) = "Default", + (enum_label_entries) = "Rectilinear", + (enum_label_entries) = "Rectilinear grid", + (enum_label_entries) = "Honeycomb", + (enum_label_entries) = "Lightning", + (enum_label_entries) = "Hollow" + ]; + + + int32 support_interface_pattern = 291 [ + (label) = "Interface pattern", + (tooltip) = "Line pattern of support interface. Default pattern for non-soluble support interface is Rectilinear, while default pattern for soluble support interface is Concentric.", + (category) = "Print/Support", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "smipAuto", + (enum_value_entries) = "auto", + (enum_value_entries) = "rectilinear", + (enum_value_entries) = "concentric", + (enum_value_entries) = "rectilinear_interlaced", + (enum_value_entries) = "grid", + (enum_label_entries) = "Default", + (enum_label_entries) = "Rectilinear", + (enum_label_entries) = "Concentric", + (enum_label_entries) = "Rectilinear Interlaced", + (enum_label_entries) = "Grid" + ]; + + + float support_base_pattern_spacing = 292 [ + (label) = "Base pattern spacing", + (tooltip) = "Spacing between support lines.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "2.5" + ]; + + + float support_expansion = 293 [ + (label) = "Normal Support expansion", + (tooltip) = "Expand (+) or shrink (-) the horizontal span of normal support.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + int32 support_style = 294 [ + (label) = "Style", + (tooltip) = "Style and shape of the support. For normal support, projecting the supports into a regular grid will create more stable supports (default), while snug support towers will save material and reduce object scarring.\\nFor tree support, slim and organic style will merge branches more aggressively and save a lot of material (default organic), while hybrid style will create similar structure to normal support under large flat overhangs.", + (category) = "Print/Support", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "smsDefault", + (enum_value_entries) = "default", + (enum_value_entries) = "grid", + (enum_value_entries) = "snug", + (enum_value_entries) = "organic", + (enum_value_entries) = "tree_slim", + (enum_value_entries) = "tree_strong", + (enum_value_entries) = "tree_hybrid", + (enum_label_entries) = "Default (Grid/Organic)", + (enum_label_entries) = "Grid", + (enum_label_entries) = "Snug", + (enum_label_entries) = "Organic", + (enum_label_entries) = "Tree Slim", + (enum_label_entries) = "Tree Strong", + (enum_label_entries) = "Tree Hybrid" + ]; + + + bool independent_support_layer_height = 295 [ + (label) = "Independent support layer height", + (tooltip) = "Support layer uses layer height independent with object layer. This is to support customizing Z-gap and save print time. This option will be invalid when the prime tower is enabled.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_WIPE_TOWER + ]; + + + int32 support_threshold_angle = 296 [ + (label) = "Threshold angle", + (tooltip) = "Support will be generated for overhangs whose slope angle is below the threshold. The smaller this value is, the steeper the overhang that can be printed without support.\\nNote: If set to 0, normal supports use the Threshold overlap instead, while tree supports fall back to a default value of 30.", + (category) = "Print/Support", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support", + (min_value) = 0, + (max_value) = 90, + (has_default) = true, + (default_value) = "30" + ]; + + + FloatOrPercent support_threshold_overlap = 297 [ + (label) = "Threshold overlap", + (tooltip) = "If threshold angle is zero, support will be generated for overhangs whose overlap is below the threshold. The smaller this value is, the steeper the overhang that can be printed without support.", + (category) = "Print/Support", + (sidetext) = "mm or %", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support", + (min_value) = 0, + (max_value) = 100, + (max_literal) = 0.5, + (has_default) = true, + (default_value) = "50., true" + ]; + + + float tree_support_branch_angle = 298 [ + (label) = "Tree support branch angle", + (tooltip) = "This setting determines the maximum overhang angle that the branches of tree support are allowed to make. If the angle is increased, the branches can be printed more horizontally, allowing them to reach farther.", + (category) = "Print/Support", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 0, + (max_value) = 60, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "40." + ]; + + + float tree_support_branch_angle_organic = 299 [ + (label) = "Tree support branch angle", + (tooltip) = "This setting determines the maximum overhang angle that the branches of tree support are allowed to make. If the angle is increased, the branches can be printed more horizontally, allowing them to reach farther.", + (category) = "Print/Support", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 0, + (max_value) = 60, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "40." + ]; + + + float tree_support_angle_slow = 300 [ + (label) = "Preferred Branch Angle", + (tooltip) = "The preferred angle of the branches, when they do not have to avoid the model. Use a lower angle to make them more vertical and more stable. Use a higher angle for branches to merge faster.", + (category) = "Print/Support", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 10, + (max_value) = 85, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "25" + ]; + + + float tree_support_branch_distance = 301 [ + (label) = "Tree support branch distance", + (tooltip) = "This setting determines the distance between neighboring tree support nodes.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 1, + (max_value) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "5." + ]; + + + float tree_support_branch_distance_organic = 302 [ + (label) = "Tree support branch distance", + (tooltip) = "This setting determines the distance between neighboring tree support nodes.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 1, + (max_value) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1." + ]; + + + float tree_support_top_rate = 303 [ + (label) = "Branch Density", + (tooltip) = "Adjusts the density of the support structure used to generate the tips of the branches. A higher value results in better overhangs but the supports are harder to remove, thus it is recommended to enable top support interfaces instead of a high branch density value if dense interfaces are needed.", + (category) = "Print/Support", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 5, + (max_literal) = 35, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "30" + ]; + + + bool tree_support_auto_brim = 304 [ + (label) = "Auto brim width", + (tooltip) = "Enabling this option means the width of the brim for tree support will be automatically calculated.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (has_default) = true, + (default_value) = "1" + ]; + + + float tree_support_brim_width = 305 [ + (label) = "Tree support brim width", + (tooltip) = "Distance from tree branch to the outermost brim line.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 0, + (has_default) = true, + (default_value) = "3" + ]; + + + float tree_support_tip_diameter = 306 [ + (label) = "Tip Diameter", + (tooltip) = "Branch tip diameter for organic supports.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 0.1, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.8" + ]; + + + float tree_support_branch_diameter = 307 [ + (label) = "Tree support branch diameter", + (tooltip) = "This setting determines the initial diameter of support nodes.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 1, + (max_value) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "5." + ]; + + + float tree_support_branch_diameter_angle = 308 [ + (label) = "Branch Diameter Angle", + (tooltip) = "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the organic support.", + (category) = "Print/Support", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 0, + (max_value) = 15, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "5" + ]; + + + float tree_support_branch_diameter_organic = 309 [ + (label) = "Tree support branch diameter", + (tooltip) = "This setting determines the initial diameter of support nodes.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Tree supports", + (min_value) = 1, + (max_value) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "2." + ]; + + + int32 tree_support_wall_count = 310 [ + (label) = "Support wall loops", + (tooltip) = "This setting specifies the count of support walls in the range of [0,2]. 0 means auto.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (max_value) = 2, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + bool support_ironing = 311 [ + (label) = "Ironing Support Interface", + (tooltip) = "Ironing is using small flow to print on same height of support interface again to make it more smooth. This setting controls whether support interface being ironed. When enabled, support interface will be extruded as solid too.", + (category) = "Print/Support", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support ironing", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + int32 support_ironing_pattern = 312 [ + (label) = "Support Ironing Pattern", + (tooltip) = "The pattern that will be used when ironing.", + (category) = "Print/Support", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support ironing", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "ipRectilinear", + (enum_value_entries) = "rectilinear", + (enum_value_entries) = "concentric", + (enum_label_entries) = "Rectilinear", + (enum_label_entries) = "Concentric" + ]; + + + float support_ironing_flow = 313 [ + (label) = "Support Ironing flow", + (tooltip) = "The amount of material to extrude during ironing. Relative to flow of normal support interface layer height. Too high value results in overextrusion on the surface.", + (category) = "Print/Support", + (sidetext) = "%", + (ratio_over) = "layer_height", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support ironing", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "10" + ]; + + + float support_ironing_spacing = 314 [ + (label) = "Support Ironing line spacing", + (tooltip) = "The distance between the lines of ironing.", + (category) = "Print/Support", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Support", + (tab_optgroup) = "Support ironing", + (min_value) = 0, + (max_value) = 1, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.1" + ]; + + + int32 first_layer_sequence_choice = 315 [ + (label) = "First layer filament sequence", + (category) = "Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (has_default) = true, + (default_value) = "flsAuto", + (enum_value_entries) = "Auto", + (enum_value_entries) = "Customize", + (enum_label_entries) = "Auto", + (enum_label_entries) = "Customize" + ]; + + + int32 other_layers_sequence_choice = 316 [ + (label) = "Other layers filament sequence", + (category) = "Quality", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (has_default) = true, + (default_value) = "flsAuto", + (enum_value_entries) = "Auto", + (enum_value_entries) = "Customize", + (enum_label_entries) = "Auto", + (enum_label_entries) = "Customize" + ]; + + + float ironing_expansion = 317 [ + (label) = "Ironing expansion", + (tooltip) = "Expand or contract the ironing area.", + (category) = "Quality", + (sidetext) = "mm", + (min_value) = -100, + (max_value) = 100, + (has_default) = true, + (default_value) = "0" + ]; + + + int32 bottom_shell_layers = 318 [ + (label) = "Bottom shell layers", + (full_label) = "Bottom shell layers", + (tooltip) = "This is the number of solid layers of bottom shell, including the bottom surface layer. When the thickness calculated by this value is thinner than bottom shell thickness, the bottom shell layers will be increased.", + (category) = "Print/Strength", + (sidetext) = "layers", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Top/bottom shells", + (min_value) = 0, + (has_default) = true, + (default_value) = "3" + ]; + + + float bottom_shell_thickness = 319 [ + (label) = "Bottom shell thickness", + (full_label) = "Bottom shell thickness", + (tooltip) = "The number of bottom solid layers is increased when slicing if the thickness calculated by bottom shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of bottom shell is absolutely determined by bottom shell layers.", + (category) = "Print/Strength", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Top/bottom shells", + (min_value) = 0, + (has_default) = true, + (default_value) = "0." + ]; + + + int32 gap_fill_target = 320 [ + (label) = "Apply gap fill", + (tooltip) = "Enables gap fill for the selected solid surfaces. The minimum gap length that will be filled can be controlled from the filter out tiny gaps option below.\\n\\nOptions:\\n1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces for maximum strength\\n2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only, balancing print speed, reducing potential over extrusion in the solid infill and making sure the top and bottom surfaces have no pinhole gaps\\n3. Nowhere: Disables gap fill for all solid infill areas\\n\\nNote that if using the classic perimeter generator, gap fill may also be generated between perimeters, if a full width line cannot fit between them. That perimeter gap fill is not controlled by this setting.\\n\\nIf you would like all gap fill, including the classic perimeter generated one, removed, set the filter out tiny gaps value to a large number, like 999999.\\n\\nHowever this is not advised, as gap fill between perimeters is contributing to the model's strength. For models where excessive gap fill is generated between perimeters, a better option would be to switch to the arachne wall generator and use this option to control whether the cosmetic top and bottom surface gap fill is generated.", + (category) = "Print/Strength", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "gftNowhere", + (enum_value_entries) = "everywhere", + (enum_value_entries) = "topbottom", + (enum_value_entries) = "nowhere", + (enum_label_entries) = "Everywhere", + (enum_label_entries) = "Top and bottom surfaces", + (enum_label_entries) = "Nowhere" + ]; + + + float bridge_angle = 321 [ + (label) = "External bridge infill direction", + (tooltip) = "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for external bridges. Use 180° for zero angle.", + (category) = "Print/Strength", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0." + ]; + + + float internal_bridge_angle = 322 [ + (label) = "Internal bridge infill direction", + (tooltip) = "Internal bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for internal bridges. Use 180° for zero angle.\\n\\nIt is recommended to leave it at 0 unless there is a specific model need not to.", + (category) = "Print/Strength", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0." + ]; + + + int32 ensure_vertical_shell_thickness = 323 [ + (label) = "Ensure vertical shell thickness", + (tooltip) = "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)\\nNone: No solid infill will be added anywhere. Caution: Use this option carefully if your model has sloped surfaces\\nCritical Only: Avoid adding solid infill for walls\\nModerate: Add solid infill for heavily sloping surfaces only\\nAll: Add solid infill for all suitable sloping surfaces\\nDefault value is All.", + (category) = "Print/Strength", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "EnsureVerticalShellThickness::evstAll", + (enum_value_entries) = "none", + (enum_value_entries) = "ensure_critical_only", + (enum_value_entries) = "ensure_moderate", + (enum_value_entries) = "ensure_all", + (enum_label_entries) = "None", + (enum_label_entries) = "Critical Only", + (enum_label_entries) = "Moderate", + (enum_label_entries) = "All" + ]; + + + int32 top_surface_pattern = 324 [ + (label) = "Top surface pattern", + (tooltip) = "Line pattern of top surface infill.", + (category) = "Print/Strength", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Top/bottom shells", + (has_default) = true, + (default_value) = "ipMonotonicLine", + (enum_value_entries) = "monotonic", + (enum_value_entries) = "monotonicline", + (enum_value_entries) = "rectilinear", + (enum_value_entries) = "alignedrectilinear", + (enum_value_entries) = "concentric", + (enum_value_entries) = "hilbertcurve", + (enum_value_entries) = "archimedeanchords", + (enum_value_entries) = "octagramspiral", + (enum_label_entries) = "Monotonic", + (enum_label_entries) = "Monotonic line", + (enum_label_entries) = "Rectilinear", + (enum_label_entries) = "Aligned Rectilinear", + (enum_label_entries) = "Concentric", + (enum_label_entries) = "Hilbert Curve", + (enum_label_entries) = "Archimedean Chords", + (enum_label_entries) = "Octagram Spiral" + ]; + + + int32 bottom_surface_pattern = 325 [ + (label) = "Bottom surface pattern", + (tooltip) = "Line pattern of bottom surface infill, not bridge infill.", + (category) = "Print/Strength", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Top/bottom shells", + (has_default) = true, + (default_value) = "ipMonotonic" + ]; + + + int32 internal_solid_infill_pattern = 326 [ + (label) = "Internal solid infill pattern", + (tooltip) = "Line pattern of internal solid infill. if the detect narrow internal solid infill be enabled, the concentric pattern will be used for the small area.", + (category) = "Print/Strength", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (has_default) = true, + (default_value) = "ipMonotonic" + ]; + + + float infill_direction = 327 [ + (label) = "Sparse infill direction", + (tooltip) = "Angle for sparse infill pattern, which controls the start or main direction of line.", + (category) = "Print/Strength", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 0, + (max_value) = 360, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "45" + ]; + + + float solid_infill_direction = 328 [ + (label) = "Solid infill direction", + (tooltip) = "Angle for solid infill pattern, which controls the start or main direction of line.", + (category) = "Print/Strength", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 0, + (max_value) = 360, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "45" + ]; + + + float sparse_infill_density = 329 [ + (label) = "Sparse infill density", + (tooltip) = "Density of internal sparse infill, 100% turns all sparse infill into solid infill and internal solid infill pattern will be used.", + (category) = "Print/Strength", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 0, + (max_value) = 100, + (has_default) = true, + (default_value) = "20" + ]; + + + bool align_infill_direction_to_model = 330 [ + (label) = "Align infill direction to model", + (tooltip) = "Aligns infill and surface fill directions to follow the model's orientation on the build plate. When enabled, fill directions rotate with the model to maintain optimal strength characteristics.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + string extra_solid_infills = 331 [ + (label) = "Insert solid layers", + (tooltip) = "Insert solid infill at specific layers. Use N to insert every Nth layer, N#K to insert K consecutive solid layers every N layers (K is optional, e.g. '5#' equals '5#1'), or a comma-separated list (e.g. 1,7,9) to insert at explicit layers. Layers are 1-based.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "" + ]; + + + int32 fill_multiline = 332 [ + (label) = "Fill Multiline", + (tooltip) = "Using multiple lines for the infill pattern, if supported by infill pattern.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 1, + (has_default) = true, + (default_value) = "1" + ]; + + + bool gyroid_optimized = 333 [ + (label) = "Z-buckling bias optimization (experimental)", + (tooltip) = "Tightens the gyroid wave along the Z (vertical) axis at low infill density to shorten the effective vertical column length and improve Z-axis compression buckling resistance. Filament use is preserved. No effect at ~30% sparse infill density and above. Only applies when Sparse infill pattern is set to Gyroid.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (has_default) = true, + (default_value) = "false" + ]; + + + int32 sparse_infill_pattern = 334 [ + (label) = "Sparse infill pattern", + (tooltip) = "Line pattern for internal sparse infill.", + (category) = "Print/Strength", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (has_default) = true, + (default_value) = "ipCrossHatch", + (enum_value_entries) = "rectilinear", + (enum_value_entries) = "alignedrectilinear", + (enum_value_entries) = "zigzag", + (enum_value_entries) = "crosszag", + (enum_value_entries) = "lockedzag", + (enum_value_entries) = "line", + (enum_value_entries) = "grid", + (enum_value_entries) = "triangles", + (enum_value_entries) = "tri-hexagon", + (enum_value_entries) = "cubic", + (enum_value_entries) = "adaptivecubic", + (enum_value_entries) = "quartercubic", + (enum_value_entries) = "supportcubic", + (enum_value_entries) = "lightning", + (enum_value_entries) = "honeycomb", + (enum_value_entries) = "3dhoneycomb", + (enum_value_entries) = "lateral-honeycomb", + (enum_value_entries) = "lateral-lattice", + (enum_value_entries) = "crosshatch", + (enum_value_entries) = "tpmsd", + (enum_value_entries) = "tpmsfk", + (enum_value_entries) = "gyroid", + (enum_value_entries) = "concentric", + (enum_value_entries) = "hilbertcurve", + (enum_value_entries) = "archimedeanchords", + (enum_value_entries) = "octagramspiral", + (enum_label_entries) = "Rectilinear", + (enum_label_entries) = "Aligned Rectilinear", + (enum_label_entries) = "Zig Zag", + (enum_label_entries) = "Cross Zag", + (enum_label_entries) = "Locked Zag", + (enum_label_entries) = "Line", + (enum_label_entries) = "Grid", + (enum_label_entries) = "Triangles", + (enum_label_entries) = "Tri-hexagon", + (enum_label_entries) = "Cubic", + (enum_label_entries) = "Adaptive Cubic", + (enum_label_entries) = "Quarter Cubic", + (enum_label_entries) = "Support Cubic", + (enum_label_entries) = "Lightning", + (enum_label_entries) = "Honeycomb", + (enum_label_entries) = "3D Honeycomb", + (enum_label_entries) = "Lateral Honeycomb", + (enum_label_entries) = "Lateral Lattice", + (enum_label_entries) = "Cross Hatch", + (enum_label_entries) = "TPMS-D", + (enum_label_entries) = "TPMS-FK", + (enum_label_entries) = "Gyroid", + (enum_label_entries) = "Concentric", + (enum_label_entries) = "Hilbert Curve", + (enum_label_entries) = "Archimedean Chords", + (enum_label_entries) = "Octagram Spiral" + ]; + + + float lateral_lattice_angle_1 = 335 [ + (label) = "Lateral lattice angle 1", + (tooltip) = "The angle of the first set of Lateral lattice elements in the Z direction. Zero is vertical.", + (category) = "Print/Strength", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = -75, + (max_value) = 75, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "-45" + ]; + + + float lateral_lattice_angle_2 = 336 [ + (label) = "Lateral lattice angle 2", + (tooltip) = "The angle of the second set of Lateral lattice elements in the Z direction. Zero is vertical.", + (category) = "Print/Strength", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = -75, + (max_value) = 75, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "45" + ]; + + + float infill_overhang_angle = 337 [ + (label) = "Infill overhang angle", + (tooltip) = "The angle of the infill angled lines. 60° will result in a pure honeycomb.", + (category) = "Print/Strength", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 15, + (max_value) = 75, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "60" + ]; + + + FloatOrPercent infill_anchor = 338 [ + (label) = "Sparse infill anchor length", + (tooltip) = "Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Orca Slicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max.\\nSet this parameter to zero to disable anchoring perimeters connected to a single infill line.", + (category) = "Print/Strength", + (sidetext) = "mm or %", + (ratio_over) = "sparse_infill_line_width", + (gui_type) = "f_enum_open", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (max_literal) = 1000, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "400, true", + (enum_value_entries) = "0", + (enum_value_entries) = "1", + (enum_value_entries) = "2", + (enum_value_entries) = "5", + (enum_value_entries) = "10", + (enum_value_entries) = "1000", + (enum_label_entries) = "0 (no open anchors)", + (enum_label_entries) = "1 mm", + (enum_label_entries) = "2 mm", + (enum_label_entries) = "5 mm", + (enum_label_entries) = "10 mm", + (enum_label_entries) = "1000 (unlimited)" + ]; + + + FloatOrPercent infill_anchor_max = 339 [ + (label) = "Maximum length of the infill anchor", + (tooltip) = "Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Orca Slicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter.\\nIf set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "20, false", + (enum_label_entries) = "0 (Simple connect)", + (enum_label_entries) = "1 mm", + (enum_label_entries) = "2 mm", + (enum_label_entries) = "5 mm", + (enum_label_entries) = "10 mm", + (enum_label_entries) = "1000 (unlimited)" + ]; + + + float filter_out_gap_fill = 340 [ + (label) = "Filter out tiny gaps", + (tooltip) = "Don't print gap fill with a length is smaller than the threshold specified (in mm). This setting applies to top, bottom and solid infill and, if using the classic perimeter generator, to wall gap fill.", + (category) = "Print/Strength", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + bool infill_combination = 341 [ + (label) = "Infill combination", + (tooltip) = "Automatically Combine sparse infill of several layers to print together to reduce time. Wall is still printed with original layer height.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float infill_shift_step = 342 [ + (label) = "Infill shift step", + (tooltip) = "This parameter adds a slight displacement to each layer of infill to create a cross texture.", + (category) = "Print/Strength", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 0, + (max_value) = 10, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.4" + ]; + + + string sparse_infill_rotate_template = 343 [ + (label) = "Sparse infill rotation template", + (tooltip) = "Rotate the sparse infill direction per layer using a template of angles. Enter comma-separated degrees (e.g., '0,30,60,90'). Angles are applied in order by layer and repeat when the list ends. Advanced syntax is supported: '+5' rotates +5° every layer; '+5#5' rotates +5° every 5 layers. See the Wiki for details. ", + (category) = "Print/Strength", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "\"\"" + ]; + + + string solid_infill_rotate_template = 344 [ + (label) = "Solid infill rotation template", + (tooltip) = "This parameter adds a rotation of solid infill direction to each layer according to the specified template. The template is a comma-separated list of angles in degrees, e.g. '0,90'. The first angle is applied to the first layer, the second angle to the second layer, and so on. If there are more layers than angles, the angles will be repeated. Note that not all solid infill patterns support rotation.", + (category) = "Print/Strength", + (sidetext) = "°", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "\"\"" + ]; + + + float skeleton_infill_density = 345 [ + (label) = "Skeleton infill density", + (tooltip) = "The remaining part of the model contour after removing a certain depth from the surface is called the skeleton. This parameter is used to adjust the density of this section. When two regions have the same sparse infill settings but different skeleton densities, their skeleton areas will develop overlapping sections. Default is as same as infill density.", + (category) = "Print/Strength", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "25" + ]; + + + float skin_infill_density = 346 [ + (label) = "Skin infill density", + (tooltip) = "The portion of the model's outer surface within a certain depth range is called the skin. This parameter is used to adjust the density of this section. When two regions have the same sparse infill settings but different skin densities, this area will not be split into two separate regions. Default is as same as infill density.", + (category) = "Print/Strength", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "25" + ]; + + + float skin_infill_depth = 347 [ + (label) = "Skin infill depth", + (tooltip) = "The parameter sets the depth of skin.", + (category) = "Print/Strength", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "2.0" + ]; + + + float infill_lock_depth = 348 [ + (label) = "Infill lock depth", + (tooltip) = "The parameter sets the overlapping depth between the interior and skin.", + (category) = "Print/Strength", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1.0" + ]; + + + FloatOrPercent skin_infill_line_width = 349 [ + (label) = "Skin line width", + (tooltip) = "Adjust the line width of the selected skin paths.", + (category) = "Print/Strength", + (sidetext) = "mm", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100, true" + ]; + + + FloatOrPercent skeleton_infill_line_width = 350 [ + (label) = "Skeleton line width", + (tooltip) = "Adjust the line width of the selected skeleton paths.", + (category) = "Print/Strength", + (sidetext) = "mm", + (ratio_over) = "nozzle_diameter", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100, true" + ]; + + + bool symmetric_infill_y_axis = 351 [ + (label) = "Symmetric infill Y axis", + (tooltip) = "If the model has two parts that are symmetric about the Y axis, and you want these parts to have symmetric textures, please click this option on one of the parts.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + FloatOrPercent infill_combination_max_layer_height = 352 [ + (label) = "Infill combination - Max layer height", + (tooltip) = "Maximum layer height for the combined sparse infill.\\n\\nSet it to 0 or 100% to use the nozzle diameter (for maximum reduction in print time) or a value of ~80% to maximize sparse infill strength.\\n\\nThe number of layers over which infill is combined is derived by dividing this value with the layer height and rounded down to the nearest decimal.\\n\\nUse either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values (eg 80%). This value must not be larger than the nozzle diameter.", + (category) = "Print/Strength", + (sidetext) = "mm or %", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100., true" + ]; + + + float infill_wall_overlap = 353 [ + (label) = "Infill/Wall overlap", + (tooltip) = "Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces.", + (category) = "Print/Strength", + (sidetext) = "%", + (ratio_over) = "inner_wall_line_width", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Infill", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "15" + ]; + + + float top_bottom_infill_wall_overlap = 354 [ + (label) = "Top/Bottom solid infill/wall overlap", + (tooltip) = "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill.", + (category) = "Print/Strength", + (sidetext) = "%", + (ratio_over) = "inner_wall_line_width", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Top/bottom shells", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "25" + ]; + + + int32 wall_loops = 355 [ + (label) = "Wall loops", + (tooltip) = "Number of walls of every layer.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Walls", + (min_value) = 0, + (max_value) = 1000, + (has_default) = true, + (default_value) = "2" + ]; + + + bool alternate_extra_wall = 356 [ + (label) = "Alternate extra wall", + (tooltip) = "This setting adds an extra wall to every other layer. This way the infill gets wedged vertically between the walls, resulting in stronger prints.\\n\\nWhen this option is enabled, the ensure vertical shell thickness option needs to be disabled.\\n\\nUsing lightning infill together with this option is not recommended as there is limited infill to anchor the extra perimeters to.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Walls", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float minimum_sparse_infill_area = 357 [ + (label) = "Minimum sparse infill threshold", + (tooltip) = "Sparse infill areas smaller than this threshold value are replaced by internal solid infill.", + (category) = "Print/Strength", + (sidetext) = "mm²", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "15" + ]; + + + bool detect_thin_wall = 358 [ + (label) = "Detect thin walls", + (tooltip) = "Detect thin walls which can't contain two line widths, and use single line to print. Maybe not printed very well, because it's not a closed loop.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Walls", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + int32 top_shell_layers = 359 [ + (label) = "Top shell layers", + (full_label) = "Top solid layers", + (tooltip) = "This is the number of solid layers of top shell, including the top surface layer. When the thickness calculated by this value is thinner than top shell thickness, the top shell layers will be increased.", + (category) = "Print/Strength", + (sidetext) = "layers", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Top/bottom shells", + (min_value) = 0, + (has_default) = true, + (default_value) = "4" + ]; + + + float top_shell_thickness = 360 [ + (label) = "Top shell thickness", + (full_label) = "Top shell thickness", + (tooltip) = "The number of top solid layers is increased when slicing if the thickness calculated by top shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of top shell is absolutely determined by top shell layers.", + (category) = "Print/Strength", + (sidetext) = "mm", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Top/bottom shells", + (min_value) = 0, + (has_default) = true, + (default_value) = "0.6" + ]; + + + float top_surface_density = 361 [ + (label) = "Top surface density", + (tooltip) = "Density of top surface layer. A value of 100% creates a fully solid, smooth top layer. Reducing this value results in a textured top surface, according to the chosen top surface pattern. A value of 0% will result in only the walls on the top layer being created. Intended for aesthetic or functional purposes, not to fix issues such as over-extrusion.", + (category) = "Print/Strength", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Top/bottom shells", + (min_value) = 0, + (max_value) = 100, + (has_default) = true, + (default_value) = "100" + ]; + + + float bottom_surface_density = 362 [ + (label) = "Bottom surface density", + (tooltip) = "Density of the bottom surface layer. Intended for aesthetic or functional purposes, not to fix issues such as over-extrusion.\\nWARNING: Lowering this value may negatively affect bed adhesion.", + (category) = "Print/Strength", + (sidetext) = "%", + (co_type_hint) = "coPercent", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Top/bottom shells", + (min_value) = 10, + (max_value) = 100, + (has_default) = true, + (default_value) = "100" + ]; + + + bool detect_narrow_internal_solid_infill = 363 [ + (label) = "Detect narrow internal solid infills", + (tooltip) = "This option will auto-detect narrow internal solid infill areas. If enabled, the concentric pattern will be used for the area to speed up printing. Otherwise, the rectilinear pattern will be used by default.", + (category) = "Print/Strength", + (tab_type) = "Print", + (tab_page) = "Strength", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true" + ]; + + + bool brim_ears = 364 [ + (label) = "Brim ears", + (tooltip) = "Only draw brim over the sharp edges of the model.", + (category) = "Support", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + float raft_expansion = 365 [ + (label) = "Raft expansion", + (tooltip) = "Expand all raft layers in XY plane.", + (category) = "Support", + (sidetext) = "mm", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1.5" + ]; + + + int32 enforce_support_layers = 366 [ + (category) = "Support", + (sidetext) = "layers", + (min_value) = 0, + (max_value) = 5000, + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "0" + ]; + + + bool support_interface_loop_pattern = 367 [ + (label) = "Interface use loop pattern", + (tooltip) = "Cover the top contact layer of the supports with loops. Disabled by default.", + (category) = "Support", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + bool tree_support_with_infill = 368 [ + (label) = "Tree support with infill", + (tooltip) = "This setting specifies whether to add infill inside large hollows of tree support.", + (category) = "Support", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false" + ]; + + + int32 curr_bed_type = 369 [ + (label) = "Bed type", + (tooltip) = "Bed types supported by the printer.", + (enum_keys_map_ref) = "s_keys_map_BedType", + (co_type_hint) = "coEnum", + (has_default) = true, + (default_value) = "btPC", + (enum_value_entries) = "Cool Plate", + (enum_value_entries) = "Engineering Plate", + (enum_value_entries) = "High Temp Plate", + (enum_value_entries) = "Textured PEI Plate", + (enum_value_entries) = "Textured Cool Plate", + (enum_value_entries) = "Supertack Plate", + (enum_label_entries) = "Smooth Cool Plate", + (enum_label_entries) = "Engineering Plate", + (enum_label_entries) = "Smooth High Temp Plate", + (enum_label_entries) = "Textured PEI Plate", + (enum_label_entries) = "Textured Cool Plate", + (enum_label_entries) = "Cool Plate (SuperTack)", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + string default_bed_type = 370 [ + (label) = "Default bed type", + (tooltip) = "Default bed type for the printer (supports both numeric and string format).", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "" + ]; + + + repeated int32 first_layer_print_sequence = 371 [ + (label) = "First layer print sequence", + (min_value) = 0, + (max_value) = 16, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 other_layers_print_sequence = 372 [ + (label) = "Other layers print sequence", + (min_value) = 0, + (max_value) = 16, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + int32 other_layers_print_sequence_nums = 373 [ + (label) = "The number of other layers print sequence", + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated string compatible_printers = 374 [ + (label) = "Select printers", + (mode) = MODE_ADVANCED, + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + repeated string upward_compatible_machine = 375 [ + (label) = "upward compatible machine", + (mode) = MODE_ADVANCED, + (no_cli) = true, + (has_default) = true, + (default_value) = "", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated string compatible_prints = 376 [ + (label) = "Select profiles", + (mode) = MODE_ADVANCED, + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + repeated string compatible_machine_expression_group = 377 [ + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + repeated string compatible_process_expression_group = 378 [ + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + repeated string different_settings_to_system = 379 [ + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + repeated string print_compatible_printers = 380 [ + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + repeated string default_filament_profile = 381 [ + (label) = "Default filament profile", + (tooltip) = "Default filament profile when switching to this machine profile.", + (no_cli) = true, + (has_default) = true, + (default_value) = "", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS + ]; + + + string default_print_profile = 382 [ + (label) = "Default process profile", + (tooltip) = "Default process profile when switching to this machine profile.", + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + float nozzle_height = 383 [ + (label) = "Nozzle height", + (tooltip) = "The height of nozzle tip.", + (sidetext) = "mm", + (min_value) = 0, + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "2.5", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float grab_length = 384 [ + (label) = "Grab length", + (sidetext) = "mm", + (min_value) = 0, + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated string extruder_colour = 385 [ + (label) = "Extruder Color", + (tooltip) = "Only used as a visual help on UI.", + (gui_type) = "color", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "\"\"", + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated Point2D extruder_offset = 386 [ + (label) = "Extruder offset", + (sidetext) = "mm", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "Vec2d(0,0)", + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated string filament_colour = 387 [ + (label) = "Color", + (tooltip) = "Only used as a visual help on UI.", + (gui_type) = "color", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "\"#F2754E\"", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated string filament_multi_colour = 388 [ + (has_default) = true, + (default_value) = "\"\"" + ]; + + + repeated string filament_colour_type = 389 [ + (has_default) = true, + (default_value) = "\"1\"" + ]; + + + repeated int32 filament_map = 390 [ + (label) = "Filament map to extruder", + (tooltip) = "Filament map to extruder.", + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "1", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 physical_extruder_map = 391 [ + (label) = "Map the logical extruder to physical extruder", + (tooltip) = "Map the logical extruder to physical extruder.", + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "0" + ]; + + + int32 filament_map_mode = 392 [ + (label) = "filament mapping mode", + (tooltip) = "Filament mapping mode used as plate param.", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "fmmAutoForFlush", + (enum_value_entries) = "Auto For Flush", + (enum_value_entries) = "Auto For Match", + (enum_value_entries) = "Manual", + (enum_value_entries) = "Default", + (enum_label_entries) = "Auto For Flush", + (enum_label_entries) = "Auto For Match", + (enum_label_entries) = "Manual", + (enum_label_entries) = "Default", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool enable_filament_dynamic_map = 393 [ + (label) = "Enable filament dynamic map", + (tooltip) = "Enable dynamic filament mapping during print.", + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "false" + ]; + + + bool has_filament_switcher = 394 [ + (label) = "Has filament switcher", + (tooltip) = "Printer has a filament switcher hardware (e.g., AMS).", + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "false" + ]; + + + repeated int32 filament_flush_temp = 395 [ + (label) = "Flush temperature", + (tooltip) = "Temperature when flushing filament. 0 indicates the upper bound of the recommended nozzle temperature range.", + (sidetext) = "\\u2103", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (has_default) = true, + (default_value) = "0" + ]; + + + float machine_load_filament_time = 396 [ + (label) = "Filament load time", + (tooltip) = "Time to load new filament when switch filament. It's usually applicable for single-extruder multi-material machines. For tool changers or multi-tool machines, it's typically 0. For statistics only.", + (sidetext) = "s", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.0" + ]; + + + float machine_unload_filament_time = 397 [ + (label) = "Filament unload time", + (tooltip) = "Time to unload old filament when switch filament. It's usually applicable for single-extruder multi-material machines. For tool changers or multi-tool machines, it's typically 0. For statistics only.", + (sidetext) = "s", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.0" + ]; + + + float machine_tool_change_time = 398 [ + (label) = "Tool change time", + (tooltip) = "Time taken to switch tools. It's usually applicable for tool changers or multi-tool machines. For single-extruder multi-material machines, it's typically 0. For statistics only.", + (sidetext) = "s", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0." + ]; + + + bool support_object_skip_flush = 399 [ + (has_default) = true, + (default_value) = "false" + ]; + + + int32 bed_temperature_formula = 400 [ + (label) = "Bed temperature type", + (tooltip) = "This option determines how the bed temperature is set during slicing: based on the temperature of the first filament or the highest temperature of the printed filaments.", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "BedTempFormula::btfHighestTemp", + (enum_value_entries) = "by_first_filament", + (enum_value_entries) = "by_highest_temp", + (enum_label_entries) = "By First filament", + (enum_label_entries) = "By Highest Temp", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 nozzle_flush_dataset = 401 [ + (is_nullable) = true, + (has_default) = true, + (default_value) = "0", + (list_membership) = LIST_EXTRUDER_OPTION_KEYS + ]; + + + repeated string volumetric_speed_coefficients = 402 [ + (label) = "Max volumetric speed multinomial coefficients", + (has_default) = true, + (default_value) = "\"\"", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated string filament_ramming_parameters = 403 [ + (label) = "Ramming parameters", + (tooltip) = "This string is edited by RammingDialog and contains ramming specific parameters.", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0|\" \" 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated string filament_settings_id = 404 [ + (no_cli) = true, + (has_default) = true, + (default_value) = "\"\"" + ]; + + + repeated string filament_ids = 405 [ + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + bool adaptive_layer_height = 406; + + + bool spaghetti_detector = 407; + + + int32 wrapping_detection_layers = 408 [ + (label) = "Clumping detection layers", + (tooltip) = "Clumping detection layers.", + (min_value) = 0, + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "20" + ]; + + + repeated Point2D wrapping_exclude_area = 409 [ + (label) = "Probing exclude area of clumping", + (tooltip) = "Probing exclude area of clumping.", + (gui_type) = "one_string", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "" + ]; + + + string inherits = 410 [ + (label) = "Inherits profile", + (tooltip) = "Name of parent profile.", + (height) = 5, + (full_width) = true, + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + repeated string inherits_group = 411 [ + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + bool calib_flowrate_topinfill_special_order = 412 [ + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "false" + ]; + + + bool silent_mode = 413 [ + (label) = "Supports silent mode", + (tooltip) = "Whether the machine supports silent mode in which machine use lower acceleration to print.", + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "false" + ]; + + + repeated float max_layer_height = 414 [ + (label) = "Max", + (tooltip) = "The highest printable layer height for the extruder. Used to limit the maximum layer height when enable adaptive layer height.", + (sidetext) = "mm", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_INFILL, + (invalidates) = STEP_PERIMETERS + ]; + + + repeated float min_layer_height = 415 [ + (label) = "Min", + (tooltip) = "The lowest printable layer height for the extruder. Used to limit the minimum layer height when enable adaptive layer height.", + (sidetext) = "mm", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.07", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_SUPPORT, + (invalidates) = STEP_INFILL, + (invalidates) = STEP_PERIMETERS + ]; + + + repeated float nozzle_diameter = 416 [ + (label) = "Nozzle diameter", + (tooltip) = "The diameter of nozzle.", + (sidetext) = "mm", + (max_value) = 100, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.4", + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_SLICE + ]; + + + int32 host_type = 417 [ + (label) = "Host Type", + (tooltip) = "Orca Slicer can upload G-code files to a printer host. This field must contain the kind of the host.", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (mode) = MODE_ADVANCED, + (no_cli) = true, + (has_default) = true, + (default_value) = "htOctoPrint", + (enum_value_entries) = "prusalink", + (enum_value_entries) = "prusaconnect", + (enum_value_entries) = "octoprint", + (enum_value_entries) = "duet", + (enum_value_entries) = "flashair", + (enum_value_entries) = "astrobox", + (enum_value_entries) = "repetier", + (enum_value_entries) = "mks", + (enum_value_entries) = "esp3d", + (enum_value_entries) = "crealityprint", + (enum_value_entries) = "obico", + (enum_value_entries) = "flashforge", + (enum_value_entries) = "simplyprint", + (enum_value_entries) = "elegoolink", + (enum_label_entries) = "PrusaLink", + (enum_label_entries) = "PrusaConnect", + (enum_label_entries) = "Octo/Klipper", + (enum_label_entries) = "Duet", + (enum_label_entries) = "FlashAir", + (enum_label_entries) = "AstroBox", + (enum_label_entries) = "Repetier", + (enum_label_entries) = "MKS", + (enum_label_entries) = "ESP3D", + (enum_label_entries) = "CrealityPrint", + (enum_label_entries) = "Obico", + (enum_label_entries) = "Flashforge", + (enum_label_entries) = "SimplyPrint", + (enum_label_entries) = "Elegoo Link" + ]; + + + repeated float nozzle_volume = 418 [ + (label) = "Nozzle volume", + (tooltip) = "Volume of nozzle between the cutter and the end of nozzle.", + (sidetext) = "mm³", + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (has_default) = true, + (default_value) = "{0.0}", + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + float cooling_tube_retraction = 419 [ + (label) = "Cooling tube position", + (tooltip) = "Distance of the center-point of the cooling tube from the extruder tip.", + (sidetext) = "mm", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "91.5" + ]; + + + float cooling_tube_length = 420 [ + (label) = "Cooling tube length", + (tooltip) = "Length of the cooling tube to limit space for cooling moves inside it.", + (sidetext) = "mm", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "5." + ]; + + + bool high_current_on_filament_swap = 421 [ + (label) = "High extruder current on filament swap", + (tooltip) = "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip.", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0" + ]; + + + float parking_pos_retraction = 422 [ + (label) = "Filament parking position", + (tooltip) = "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware.", + (sidetext) = "mm", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "92." + ]; + + + float extra_loading_move = 423 [ + (label) = "Extra loading distance", + (tooltip) = "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading.", + (sidetext) = "mm", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "-2." + ]; + + + repeated Point2D start_end_points = 424 [ + (label) = "Start end points", + (tooltip) = "The start and end points which is from cutter area to garbage can.", + (mode) = MODE_DEVELOP, + (readonly) = true, + (has_default) = true, + (default_value) = "Vec2d(30, -3), Vec2d(54, 245)" + ]; + + + string printer_model = 425 [ + (label) = "Printer type", + (tooltip) = "Type of the printer.", + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + string printer_variant = 426 [ + (label) = "Printer variant", + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + string print_settings_id = 427 [ + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + string printer_settings_id = 428 [ + (no_cli) = true, + (has_default) = true, + (default_value) = "" + ]; + + + repeated float retraction_minimum_travel = 429 [ + (label) = "Travel distance threshold", + (tooltip) = "Only trigger retraction when the travel distance is longer than this threshold.", + (sidetext) = "mm", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "2.", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float retract_before_wipe = 430 [ + (label) = "Retract amount before wipe", + (tooltip) = "The length of fast retraction before wipe, relative to retraction length.", + (sidetext) = "%", + (co_type_hint) = "coPercents", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "100", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated bool retract_when_changing_layer = 431 [ + (label) = "Retract when change layer", + (tooltip) = "Force a retraction when changes layer.", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float retraction_length = 432 [ + (label) = "Length", + (full_label) = "Retraction Length", + (tooltip) = "Some amount of material in extruder is pulled back to avoid ooze during long travel. Set zero to disable retraction.", + (sidetext) = "mm", + (has_default) = true, + (default_value) = "0.8", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + int32 enable_long_retraction_when_cut = 433 [ + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated bool long_retractions_when_cut = 434 [ + (label) = "Long retraction when cut (beta)", + (tooltip) = "Experimental feature: Retracting and cutting off the filament at a longer distance during changes to minimize purge. While this reduces flush significantly, it may also raise the risk of nozzle clogs or other printing problems.", + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "false", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float retraction_distances_when_cut = 435 [ + (label) = "Retraction distance when cut", + (tooltip) = "Experimental feature: Retraction length before cutting off during filament change.", + (min_value) = 10, + (max_value) = 18, + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "18", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float retract_length_toolchange = 436 [ + (label) = "Length", + (full_label) = "Retraction Length (Toolchange)", + (sidetext) = "mm", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "10.", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float z_hop = 437 [ + (label) = "Z-hop height", + (tooltip) = "Whenever the retraction is done, the nozzle is lifted a little to create clearance between nozzle and the print. It prevents nozzle from hitting the print when travel move. Using spiral lines to lift Z can prevent stringing.", + (sidetext) = "mm", + (min_value) = 0, + (max_value) = 5, + (has_default) = true, + (default_value) = "0.4", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float retract_lift_above = 438 [ + (label) = "Only lift Z above", + (tooltip) = "If you set this to a positive value, Z lift will only take place above the specified absolute Z.", + (sidetext) = "mm", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float retract_lift_below = 439 [ + (label) = "Only lift Z below", + (tooltip) = "If you set this to a positive value, Z lift will only take place below the specified absolute Z.", + (sidetext) = "mm", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 z_hop_types = 440 [ + (label) = "Z-hop type", + (tooltip) = "Type of Z-hop.", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnums", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "ZHopType::zhtSlope", + (enum_value_entries) = "Auto Lift", + (enum_value_entries) = "Normal Lift", + (enum_value_entries) = "Slope Lift", + (enum_value_entries) = "Spiral Lift", + (enum_label_entries) = "Auto", + (enum_label_entries) = "Normal", + (enum_label_entries) = "Slope", + (enum_label_entries) = "Spiral", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS + ]; + + + repeated float travel_slope = 441 [ + (label) = "Traveling angle", + (tooltip) = "Traveling angle for Slope and Spiral Z-hop type. Setting it to 90° results in Normal Lift.", + (sidetext) = "°", + (min_value) = 1, + (max_value) = 90, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "3", + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 retract_lift_enforce = 442 [ + (label) = "On surfaces", + (tooltip) = "Enforce Z-Hop behavior. This setting is impacted by the above settings (Only lift Z above/below).", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnums", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "RetractLiftEnforceType ::rletAllSurfaces", + (enum_value_entries) = "All Surfaces", + (enum_value_entries) = "Top Only", + (enum_value_entries) = "Bottom Only", + (enum_value_entries) = "Top and Bottom", + (enum_label_entries) = "All Surfaces", + (enum_label_entries) = "Top Only", + (enum_label_entries) = "Bottom Only", + (enum_label_entries) = "Top and Bottom", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated int32 extruder_type = 443 [ + (label) = "Type", + (tooltip) = "This setting is only used for initial value of manual calibration of pressure advance. Bowden extruder usually has larger PA value. This setting doesn't influence normal slicing.", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnums", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "ExtruderType::etDirectDrive", + (enum_value_entries) = "Direct Drive", + (enum_value_entries) = "Bowden", + (enum_label_entries) = "Direct Drive", + (enum_label_entries) = "Bowden", + (list_membership) = LIST_EXTRUDER_OPTION_KEYS + ]; + + + repeated int32 nozzle_volume_type = 444 [ + (label) = "Nozzle Volume Type", + (tooltip) = "Nozzle volume type for extruders.", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnums", + (has_default) = true, + (default_value) = "NozzleVolumeType::nvtStandard", + (enum_value_entries) = "Standard", + (enum_value_entries) = "High Flow", + (enum_label_entries) = "Standard", + (enum_label_entries) = "High Flow" + ]; + + + repeated int32 default_nozzle_volume_type = 445 [ + (label) = "Default Nozzle Volume Type.", + (tooltip) = "Default Nozzle volume type for extruders in this printer.", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnums", + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "NozzleVolumeType::nvtStandard", + (enum_value_entries) = "Standard", + (enum_value_entries) = "High Flow", + (enum_label_entries) = "Standard", + (enum_label_entries) = "High Flow", + (list_membership) = LIST_EXTRUDER_OPTION_KEYS + ]; + + + repeated string extruder_variant_list = 446 [ + (label) = "Extruder variant list", + (tooltip) = "Extruder variant list.", + (no_cli) = true, + (has_default) = true, + (default_value) = "\"Direct Drive Standard\"" + ]; + + + repeated string extruder_ams_count = 447 [ + (label) = "Extruder AMS count", + (tooltip) = "AMS counts per extruder.", + (has_default) = true, + (default_value) = "", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated int32 printer_extruder_id = 448 [ + (label) = "Printer extruder id", + (tooltip) = "Printer extruder id.", + (no_cli) = true, + (has_default) = true, + (default_value) = "1" + ]; + + + repeated string printer_extruder_variant = 449 [ + (label) = "Printer's extruder variant", + (tooltip) = "Printer's extruder variant.", + (no_cli) = true, + (has_default) = true, + (default_value) = "\"Direct Drive Standard\"" + ]; + + + int32 master_extruder_id = 450 [ + (label) = "Master extruder id", + (tooltip) = "Default extruder id to place filament.", + (has_default) = true, + (default_value) = "1" + ]; + + + repeated int32 print_extruder_id = 451 [ + (label) = "Print extruder id", + (tooltip) = "Print extruder id.", + (no_cli) = true, + (has_default) = true, + (default_value) = "1" + ]; + + + repeated string print_extruder_variant = 452 [ + (label) = "Print's extruder variant", + (tooltip) = "Print's extruder variant.", + (no_cli) = true, + (has_default) = true, + (default_value) = "\"Direct Drive Standard\"" + ]; + + + repeated int32 filament_extruder_id = 453 [ + (label) = "Filament extruder id", + (tooltip) = "Filament extruder id.", + (no_cli) = true, + (has_default) = true, + (default_value) = "1" + ]; + + + repeated int32 filament_self_index = 454 [ + (label) = "Filament self index", + (tooltip) = "Filament self index.", + (no_cli) = true, + (has_default) = true, + (default_value) = "1" + ]; + + + repeated float retract_restart_extra = 455 [ + (label) = "Extra length on restart", + (tooltip) = "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed.", + (sidetext) = "mm", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float retract_restart_extra_toolchange = 456 [ + (label) = "Extra length on restart", + (tooltip) = "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament.", + (sidetext) = "mm", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float retraction_speed = 457 [ + (label) = "Retraction Speed", + (full_label) = "Retraction Speed", + (tooltip) = "Speed for retracting filament from the nozzle.", + (sidetext) = "mm/s", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "30.", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float deretraction_speed = 458 [ + (label) = "De-retraction Speed", + (full_label) = "De-retraction Speed", + (tooltip) = "Speed for reloading filament into the nozzle. Zero means same speed of retraction.", + (sidetext) = "mm/s", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "0.", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + bool bbl_calib_mark_logo = 459 [ + (label) = "Show auto-calibration marks", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true" + ]; + + + bool single_extruder_multi_material = 460 [ + (label) = "Single Extruder Multi Material", + (tooltip) = "Use single nozzle to print multi filament.", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool manual_filament_change = 461 [ + (label) = "Manual Filament Change", + (tooltip) = "Enable this option to omit the custom Change filament G-code only at the beginning of the print. The tool change command (e.g., T0) will be skipped throughout the entire print. This is useful for manual multi-material printing, where we use M600/PAUSE to trigger the manual filament change action.", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + + int32 wipe_tower_type = 462 [ + (label) = "Wipe tower type", + (tooltip) = "Choose the wipe tower implementation for multi-material prints. Type 1 is recommended for Bambu and Qidi printers with a filament cutter. Type 2 offers better compatibility with multi-tool and MMU printers and provide overall better compatibility.", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "WipeTowerType::Type2", + (enum_value_entries) = "type1", + (enum_value_entries) = "type2", + (enum_label_entries) = "Type 1", + (enum_label_entries) = "Type 2", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool purge_in_prime_tower = 463 [ + (label) = "Purge in prime tower", + (tooltip) = "Purge remaining filament into prime tower.", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool enable_filament_ramming = 464 [ + (label) = "Enable filament ramming", + (tooltip) = "Enable filament ramming", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool tool_change_on_wipe_tower = 465 [ + (label) = "Tool change on wipe tower", + (tooltip) = "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead.", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated Point2D head_wrap_detect_zone = 466 [ + (label) = "Head wrap detect zone", + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "" + ]; + + + float travel_speed_z = 467 [ + (sidetext) = "mm/s", + (min_value) = 0, + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "0.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated bool wipe = 468 [ + (label) = "Wipe while retracting", + (tooltip) = "Move nozzle along the last extrusion path when retracting to clean any leaked material on the nozzle. This can minimize blobs when printing a new part after traveling.", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float wipe_distance = 469 [ + (label) = "Wipe Distance", + (tooltip) = "Describe how long the nozzle will move along the last path when retracting.\\n\\nDepending on how long the wipe operation lasts, how fast and long the extruder/filament retraction settings are, a retraction move may be needed to retract the remaining filament.\\n\\nSetting a value in the retract amount before wipe setting below will perform any excess retraction before the wipe, else it will be performed after.", + (sidetext) = "mm", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "1.", + (list_membership) = LIST_FILAMENT_OPTION_KEYS, + (list_membership) = LIST_EXTRUDER_OPTION_KEYS, + (invalidates) = STEP_GCODE_EXPORT + ]; + + + repeated float flush_volumes_vector = 470 [ + (label) = "Purging volumes - load/unload volumes", + (has_default) = true, + (default_value) = "140.f, 140.f, 140.f, 140.f, 140.f, 140.f, 140.f, 140.f" + ]; + + + repeated float flush_volumes_matrix = 471 [ + (label) = "Purging volumes", + (has_default) = true, + (default_value) = "0.f, 280.f, 280.f, 280.f, 280.f, 0.f, 280.f, 280.f, 280.f, 280.f, 0.f, 280.f, 280.f, 280.f, 280.f, 0.f", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + repeated float flush_multiplier = 472 [ + (label) = "Flush multiplier", + (tooltip) = "The actual flushing volumes is equal to the flush multiplier multiplied by the flushing volumes in the table.", + (has_default) = true, + (default_value) = "0.3" + ]; + + + repeated float wipe_tower_x = 473 [ + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "15.", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + repeated float wipe_tower_y = 474 [ + (mode) = MODE_DEVELOP, + (has_default) = true, + (default_value) = "220.", + (invalidates) = STEP_SKIRT_BRIM + ]; + + + repeated float wiping_volumes_extruders = 475 [ + (label) = "Purging volumes - load/unload volumes", + (tooltip) = "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below.", + (has_default) = true, + (default_value) = "70., 70., 70., 70., 70., 70., 70., 70., 70., 70.", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + bool prime_tower_flat_ironing = 476 [ + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + + int32 thumbnails_format = 477 [ + (label) = "Format of G-code thumbnails", + (tooltip) = "Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI for low memory firmware.", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (mode) = MODE_ADVANCED, + (has_default) = true, + (default_value) = "GCodeThumbnailsFormat::PNG", + (enum_value_entries) = "PNG", + (enum_value_entries) = "JPG", + (enum_value_entries) = "QOI", + (enum_value_entries) = "BTT_TFT", + (enum_value_entries) = "COLPIC", + (enum_label_entries) = "PNG", + (enum_label_entries) = "JPG", + (enum_label_entries) = "QOI", + (enum_label_entries) = "BTT TT", + (enum_label_entries) = "ColPic", + (invalidates) = STEP_GCODE_EXPORT + ]; +} diff --git a/src/PrintConfigs/generated/printer.proto b/src/PrintConfigs/generated/printer.proto new file mode 100644 index 0000000000..13734d3a22 --- /dev/null +++ b/src/PrintConfigs/generated/printer.proto @@ -0,0 +1,776 @@ +// OrcaSlicer - PrinterSettings +// Edit this file and re-run: python tools/run_codegen.py + +syntax = "proto3"; + +import "config_metadata.proto"; + +package orca; + +message PrinterSettings { + + // ── Virtual keys: not in PrintConfigDef, but required in printer presets ── + // Printer identity / bed shape (handled by Preset/PrinterConfig directly) + option (virtual_preset_keys) = "bed_custom_model"; + option (virtual_preset_keys) = "bed_custom_texture"; + option (virtual_preset_keys) = "bed_exclude_area"; + option (virtual_preset_keys) = "bbl_use_printhost"; + option (virtual_preset_keys) = "default_print_profile"; + option (virtual_preset_keys) = "extruder_printable_area"; + option (virtual_preset_keys) = "extruder_variant_list"; + option (virtual_preset_keys) = "grab_length"; + option (virtual_preset_keys) = "head_wrap_detect_zone"; + option (virtual_preset_keys) = "inherits"; + option (virtual_preset_keys) = "physical_extruder_map"; + option (virtual_preset_keys) = "printable_area"; + option (virtual_preset_keys) = "printable_height"; + option (virtual_preset_keys) = "extruder_printable_height"; + option (virtual_preset_keys) = "printer_agent"; + option (virtual_preset_keys) = "printer_extruder_id"; + option (virtual_preset_keys) = "printer_extruder_variant"; + option (virtual_preset_keys) = "printer_model"; + option (virtual_preset_keys) = "printer_technology"; + option (virtual_preset_keys) = "printer_variant"; + option (virtual_preset_keys) = "silent_mode"; + option (virtual_preset_keys) = "support_object_skip_flush"; + // Print-host / connectivity + option (virtual_preset_keys) = "host_type"; + option (virtual_preset_keys) = "print_host"; + option (virtual_preset_keys) = "print_host_webui"; + option (virtual_preset_keys) = "printhost_apikey"; + option (virtual_preset_keys) = "printhost_authorization_type"; + option (virtual_preset_keys) = "printhost_cafile"; + option (virtual_preset_keys) = "printhost_port"; + option (virtual_preset_keys) = "printhost_password"; + option (virtual_preset_keys) = "printhost_ssl_ignore_revoke"; + option (virtual_preset_keys) = "printhost_user"; + // Cross-preset: defined in print.proto but also saved in printer presets + option (virtual_preset_keys) = "bed_temperature_formula"; + option (virtual_preset_keys) = "cooling_tube_length"; + option (virtual_preset_keys) = "cooling_tube_retraction"; + option (virtual_preset_keys) = "default_bed_type"; + option (virtual_preset_keys) = "default_nozzle_volume_type"; + option (virtual_preset_keys) = "emit_machine_limits_to_gcode"; + option (virtual_preset_keys) = "enable_filament_ramming"; + option (virtual_preset_keys) = "enable_long_retraction_when_cut"; + option (virtual_preset_keys) = "extra_loading_move"; + option (virtual_preset_keys) = "extruder_type"; + option (virtual_preset_keys) = "high_current_on_filament_swap"; + option (virtual_preset_keys) = "long_retractions_when_cut"; + option (virtual_preset_keys) = "machine_load_filament_time"; + option (virtual_preset_keys) = "machine_tool_change_time"; + option (virtual_preset_keys) = "machine_unload_filament_time"; + option (virtual_preset_keys) = "manual_filament_change"; + option (virtual_preset_keys) = "master_extruder_id"; + option (virtual_preset_keys) = "nozzle_flush_dataset"; + option (virtual_preset_keys) = "nozzle_height"; + option (virtual_preset_keys) = "nozzle_volume"; + option (virtual_preset_keys) = "parking_pos_retraction"; + option (virtual_preset_keys) = "preferred_orientation"; + option (virtual_preset_keys) = "purge_in_prime_tower"; + option (virtual_preset_keys) = "retract_lift_enforce"; + option (virtual_preset_keys) = "retraction_distances_when_cut"; + option (virtual_preset_keys) = "single_extruder_multi_material"; + option (virtual_preset_keys) = "thumbnails_format"; + option (virtual_preset_keys) = "tool_change_on_wipe_tower"; + option (virtual_preset_keys) = "travel_slope"; + option (virtual_preset_keys) = "upward_compatible_machine"; + option (virtual_preset_keys) = "wipe_tower_type"; + option (virtual_preset_keys) = "wrapping_detection_layers"; + option (virtual_preset_keys) = "wrapping_exclude_area"; + option (virtual_preset_keys) = "z_hop_types"; + + float extruder_clearance_height_to_rod = 1 [ + (label) = "Height to rod", + (tooltip) = "Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-object printing.", + (category) = "Printer/Basic information", + (sidetext) = "mm", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Extruder Clearance", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "40", + (invalidates) = STEP_GCODE_EXPORT + ]; + + float extruder_clearance_height_to_lid = 2 [ + (label) = "Height to lid", + (tooltip) = "Distance of the nozzle tip to the lid. Used for collision avoidance in by-object printing.", + (category) = "Printer/Basic information", + (sidetext) = "mm", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Extruder Clearance", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "120", + (invalidates) = STEP_GCODE_EXPORT + ]; + + float extruder_clearance_radius = 3 [ + (label) = "Radius", + (tooltip) = "Clearance radius around extruder. Used for collision avoidance in by-object printing.", + (category) = "Printer/Basic information", + (sidetext) = "mm", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Extruder Clearance", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "40", + (invalidates) = STEP_GCODE_EXPORT + ]; + + Point2D bed_mesh_min = 4 [ + (label) = "Bed mesh min", + (tooltip) = "This option sets the min point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (-99999, -99999), which means there are no limits, thus allowing probing across the entire bed.", + (category) = "Printer/Basic information", + (sidetext) = "mm", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Adaptive bed mesh", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "Vec2d(-99999, -99999)" + ]; + + Point2D bed_mesh_max = 5 [ + (label) = "Bed mesh max", + (tooltip) = "This option sets the max point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (99999, 99999), which means there are no limits, thus allowing probing across the entire bed.", + (category) = "Printer/Basic information", + (sidetext) = "mm", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Adaptive bed mesh", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "Vec2d(99999, 99999)" + ]; + + Point2D bed_mesh_probe_distance = 6 [ + (label) = "Probe point distance", + (tooltip) = "This option sets the preferred distance between probe points (grid size) for the X and Y directions, with the default being 50mm for both X and Y.", + (category) = "Printer/Basic information", + (sidetext) = "mm", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Adaptive bed mesh", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "Vec2d(50, 50)" + ]; + + float adaptive_bed_mesh_margin = 7 [ + (label) = "Mesh margin", + (tooltip) = "This option determines the additional distance by which the adaptive bed mesh area should be expanded in the XY directions.", + (category) = "Printer/Basic information", + (sidetext) = "mm", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Adaptive bed mesh", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "0" + ]; + + bool scan_first_layer = 8 [ + (label) = "Scan first layer", + (tooltip) = "Enable this to enable the camera on printer to check the quality of first layer.", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "false" + ]; + + int32 enable_power_loss_recovery = 9 [ + (label) = "Power Loss Recovery", + (tooltip) = "Choose how to control power loss recovery. When set to Printer configuration, the slicer will not emit power loss recovery G-code and will leave the printer's configuration unchanged. Applicable to Bambu Lab or Marlin 2 firmware based printers.", + (category) = "Printer/Basic information", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "PowerLossRecoveryMode::PrinterConfiguration", + (enum_value_entries) = "printer_configuration", + (enum_value_entries) = "enable", + (enum_value_entries) = "disable", + (enum_label_entries) = "Printer configuration", + (enum_label_entries) = "Enable", + (enum_label_entries) = "Disable" + ]; + + repeated int32 nozzle_type = 10 [ + (label) = "Nozzle type", + (tooltip) = "The metallic material of nozzle. This determines the abrasive resistance of nozzle, and what kind of filament can be printed.", + (category) = "Printer/Basic information", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnums", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Accessory", + (mode) = MODE_ADVANCED, + (is_nullable) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "ntUndefine", + (enum_value_entries) = "undefine", + (enum_value_entries) = "hardened_steel", + (enum_value_entries) = "stainless_steel", + (enum_value_entries) = "tungsten_carbide", + (enum_value_entries) = "brass", + (enum_label_entries) = "Undefine", + (enum_label_entries) = "Hardened steel", + (enum_label_entries) = "Stainless steel", + (enum_label_entries) = "Tungsten carbide", + (enum_label_entries) = "Brass", + (list_membership) = LIST_EXTRUDER_OPTION_KEYS + ]; + + int32 nozzle_hrc = 11 [ + (label) = "Nozzle HRC", + (tooltip) = "The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing.", + (category) = "Printer/Basic information", + (sidetext) = "HRC", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Accessory", + (min_value) = 0, + (max_value) = 500, + (mode) = MODE_DEVELOP, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + int32 printer_structure = 12 [ + (label) = "Printer structure", + (tooltip) = "The physical arrangement and components of a printing device.", + (category) = "Printer/Basic information", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Advanced", + (mode) = MODE_DEVELOP, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "psUndefine", + (enum_value_entries) = "undefine", + (enum_value_entries) = "corexy", + (enum_value_entries) = "i3", + (enum_value_entries) = "hbot", + (enum_value_entries) = "delta", + (enum_label_entries) = "Undefine", + (enum_label_entries) = "CoreXY", + (enum_label_entries) = "I3", + (enum_label_entries) = "Hbot", + (enum_label_entries) = "Delta" + ]; + + Point2D best_object_pos = 13 [ + (label) = "Best object position", + (tooltip) = "Best auto arranging position in range [0,1] w.r.t. bed shape.", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Printable space", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "Vec2d(0.5, 0.5)" + ]; + + bool auxiliary_fan = 14 [ + (label) = "Auxiliary part cooling fan", + (tooltip) = "Enable this option if machine has auxiliary part cooling fan. G-code command: M106 P2 S(0-255).", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Accessory", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "false" + ]; + + float fan_speedup_time = 15 [ + (tooltip) = "Start the fan this number of seconds earlier than its target start time (you can use fractional seconds). It assumes infinite acceleration for this time estimation, and will only take into account G1 and G0 moves (arc fitting is unsupported).\\nIt won't move fan commands from custom G-code (they act as a sort of 'barrier').\\nIt won't move fan commands into the start G-code if the 'only custom start G-code' is activated.\\nUse 0 to deactivate.", + (category) = "Printer/Basic information", + (sidetext) = "s", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Cooling Fan", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + bool fan_speedup_overhangs = 16 [ + (label) = "Only overhangs", + (tooltip) = "Will only take into account the delay for the cooling of overhangs.", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Cooling Fan", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + float fan_kickstart = 17 [ + (label) = "Fan kick-start time", + (tooltip) = "Emit a max fan speed command for this amount of seconds before reducing to target speed to kick-start the cooling fan.\\nThis is useful for fans where a low PWM/power may be insufficient to get the fan started spinning from a stop, or to get the fan up to speed faster.\\nSet to 0 to deactivate.", + (category) = "Printer/Basic information", + (sidetext) = "s", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Cooling Fan", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + int32 part_cooling_fan_min_pwm = 18 [ + (label) = "Minimum non-zero part cooling fan speed", + (tooltip) = "Some part-cooling fans cannot start spinning when commanded below a certain PWM duty cycle. When set above 0, any non-zero part-cooling fan command will be raised to at least this percentage so the fan reliably starts. A fan command of 0 (fan off) is always honoured exactly. This clamp is applied after every other fan calculation (first-layer ramp, layer-time interpolation, overhang/bridge/support-interface/ironing overrides), so scaling still operates within the range [this value, 100%].\\nIf your firmware already disables the fan below a threshold (for example Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded duty cycle is below 10%), this option and the firmware threshold should ideally be set to the same value. Matching them (e.g. off_below: 0.10 in Klipper and 10% here) guarantees the slicer never emits a non-zero value that the firmware would silently drop, and the fan never receives a value below the one you know it can actually spool at.\\nSet to 0 to deactivate.", + (category) = "Printer/Basic information", + (sidetext) = "%", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Cooling Fan", + (min_value) = 0, + (max_value) = 100, + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_GCODE_EXPORT + ]; + + float time_cost = 19 [ + (label) = "Time cost", + (tooltip) = "The printer cost per hour.", + (category) = "Printer/Basic information", + (sidetext) = "money/h", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Advanced", + (min_value) = 0, + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "0" + ]; + + bool support_chamber_temp_control = 20 [ + (label) = "Support control chamber temperature", + (tooltip) = "This option is enabled if machine support controlling chamber temperature\\nG-code command: M141 S(0-255)", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Accessory", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "true" + ]; + + bool support_air_filtration = 21 [ + (label) = "Support air filtration", + (tooltip) = "Enable this if printer support air filtration\\nG-code command: M106 P3 S(0-255)", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Accessory", + (mode) = MODE_DEVELOP, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "true" + ]; + + int32 gcode_flavor = 22 [ + (label) = "G-code flavor", + (tooltip) = "What kind of G-code the printer is compatible with.", + (category) = "Printer/Basic information", + (enum_keys_map_ref) = "ConfigOptionEnum::get_enum_values()", + (co_type_hint) = "coEnum", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "gcfMarlinLegacy", + (enum_value_entries) = "marlin", + (enum_value_entries) = "klipper", + (enum_value_entries) = "reprapfirmware", + (enum_value_entries) = "repetier", + (enum_value_entries) = "marlin2", + (enum_value_entries) = "reprap", + (enum_value_entries) = "teacup", + (enum_value_entries) = "makerware", + (enum_value_entries) = "sailfish", + (enum_value_entries) = "mach3", + (enum_value_entries) = "machinekit", + (enum_value_entries) = "smoothie", + (enum_value_entries) = "no-extrusion", + (enum_label_entries) = "Marlin(legacy)", + (enum_label_entries) = "Klipper", + (enum_label_entries) = "RepRapFirmware", + (enum_label_entries) = "Repetier", + (enum_label_entries) = "Marlin 2", + (enum_label_entries) = "RepRap/Sprinter", + (enum_label_entries) = "Teacup", + (enum_label_entries) = "MakerWare (MakerBot)", + (enum_label_entries) = "Sailfish (MakerBot)", + (enum_label_entries) = "Mach3/LinuxCNC", + (enum_label_entries) = "Machinekit", + (enum_label_entries) = "Smoothie", + (enum_label_entries) = "No extrusion", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + bool pellet_modded_printer = 23 [ + (label) = "Pellet Modded Printer", + (tooltip) = "Enable this option if your printer uses pellets instead of filaments.", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Advanced", + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "false" + ]; + + bool support_multi_bed_types = 24 [ + (label) = "Support multi bed types", + (tooltip) = "Enable this option if you want to use multiple bed types.", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Printable space", + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + bool use_firmware_retraction = 25 [ + (label) = "Use firmware retraction", + (tooltip) = "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin.", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + bool disable_m73 = 26 [ + (label) = "Disable set remaining print time", + (tooltip) = "Disable generating of the M73: Set remaining print time in the final G-code.", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "false", + (invalidates) = STEP_GCODE_EXPORT + ]; + + float z_offset = 27 [ + (label) = "Z offset", + (tooltip) = "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop).", + (category) = "Printer/Basic information", + (sidetext) = "mm", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Printable space", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "0", + (invalidates) = STEP_SKIRT_BRIM, + (invalidates) = STEP_WIPE_TOWER + ]; + + string thumbnails = 28 [ + (label) = "G-code thumbnails", + (tooltip) = "Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: \\\"XxY, XxY, ...\\\"", + (category) = "Printer/Basic information", + (gui_type) = "one_string", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "\"48x48/PNG,300x300/PNG\"", + (invalidates) = STEP_GCODE_EXPORT + ]; + + bool use_relative_e_distances = 29 [ + (label) = "Use relative E distances", + (tooltip) = "Relative extrusion is recommended when using \\\"label_objects\\\" option. Some extruders work better with this option unchecked (absolute extrusion mode). Wipe tower is only compatible with relative mode. It is recommended on most printers. Default is checked.", + (category) = "Printer/Basic information", + (tab_type) = "Printer", + (tab_page) = "Basic information", + (tab_optgroup) = "Advanced", + (mode) = MODE_ADVANCED, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "true", + (invalidates) = STEP_GCODE_EXPORT + ]; + + string before_layer_change_gcode = 30 [ + (label) = "Before layer change G-code", + (tooltip) = "This G-code is inserted at every layer change before the Z lift.", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Before layer change G-code", + (height) = 5, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "", + (invalidates) = STEP_GCODE_EXPORT + ]; + + string machine_end_gcode = 31 [ + (label) = "End G-code", + (tooltip) = "End G-code when finishing the entire print.", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Machine end G-code", + (height) = 12, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "\"M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n\"", + (invalidates) = STEP_GCODE_EXPORT + ]; + + string printing_by_object_gcode = 32 [ + (label) = "Between Object G-code", + (tooltip) = "Insert G-code between objects. This parameter will only come into effect when you print your models object by object.", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Printing by object G-code", + (height) = 12, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "", + (invalidates) = STEP_GCODE_EXPORT + ]; + + string layer_change_gcode = 33 [ + (label) = "Layer change G-code", + (tooltip) = "This G-code is inserted at every layer change after the Z lift.", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Layer change G-code", + (height) = 5, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "", + (invalidates) = STEP_GCODE_EXPORT + ]; + + string time_lapse_gcode = 34 [ + (label) = "Timelapse G-code", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Timelapse G-code", + (height) = 5, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "", + (invalidates) = STEP_GCODE_EXPORT + ]; + + string wrapping_detection_gcode = 35 [ + (label) = "Clumping detection G-code", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Clumping Detection G-code", + (height) = 5, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "\"\"", + (invalidates) = STEP_GCODE_EXPORT + ]; + + string machine_pause_gcode = 36 [ + (label) = "Pause G-code", + (tooltip) = "This G-code will be used as a code for the pause print. Users can insert pause G-code in the G-code viewer.", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Pause G-code", + (height) = 12, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "" + ]; + + string template_custom_gcode = 37 [ + (label) = "Custom G-code", + (tooltip) = "This G-code will be used as a custom code.", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Template Custom G-code", + (height) = 12, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "" + ]; + + string file_start_gcode = 38 [ + (label) = "File header G-code", + (tooltip) = "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}.", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "File header G-code", + (height) = 8, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "\"\"" + ]; + + string machine_start_gcode = 39 [ + (label) = "Start G-code", + (tooltip) = "Start G-code when starting the entire print.", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Machine start G-code", + (height) = 12, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "\"G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n\"", + (invalidates) = STEP_GCODE_EXPORT + ]; + + string change_filament_gcode = 40 [ + (label) = "Change filament G-code", + (tooltip) = "This G-code is inserted when filament is changed, including T commands to trigger tool change.", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Change filament G-code", + (height) = 5, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "", + (invalidates) = STEP_GCODE_EXPORT + ]; + + string change_extrusion_role_gcode = 41 [ + (label) = "Change extrusion role G-code", + (tooltip) = "This G-code is inserted when the extrusion role is changed.", + (category) = "Printer/Machine G-code", + (tab_type) = "Printer", + (tab_page) = "Machine G-code", + (tab_optgroup) = "Change extrusion role G-code", + (height) = 5, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "" + ]; + + string printer_notes = 42 [ + (label) = "Printer notes", + (tooltip) = "You can put your notes regarding the printer here.", + (category) = "Printer/Notes", + (tab_type) = "Printer", + (tab_page) = "Notes", + (tab_optgroup) = "Notes", + (height) = 13, + (mode) = MODE_ADVANCED, + (multiline) = true, + (full_width) = true, + (preset) = PRESET_PRINTER, + (has_default) = true, + (default_value) = "", + (invalidates) = STEP_GCODE_EXPORT + ]; + +} diff --git a/src/PrintConfigs/layout.yaml b/src/PrintConfigs/layout.yaml new file mode 100644 index 0000000000..4ecec2c669 --- /dev/null +++ b/src/PrintConfigs/layout.yaml @@ -0,0 +1,658 @@ +tabs: + - name: TabPrint + pages: + - name: "Quality" + icon: "custom-gcode_quality" + groups: + - name: "Layer height" + fields: + - layer_height + - initial_layer_print_height + - name: "Line width" + fields: + - line_width + - initial_layer_line_width + - outer_wall_line_width + - inner_wall_line_width + - top_surface_line_width + - sparse_infill_line_width + - internal_solid_infill_line_width + - support_line_width + - name: "Seam" + fields: + - seam_position + - staggered_inner_seams + - seam_gap + - seam_slope_type + - seam_slope_conditional + - scarf_angle_threshold + - scarf_overhang_threshold + - scarf_joint_speed + - seam_slope_start_height + - seam_slope_entire_loop + - seam_slope_min_length + - seam_slope_steps + - scarf_joint_flow_ratio + - seam_slope_inner_walls + - role_based_wipe_speed + - wipe_speed + - wipe_on_loops + - wipe_before_external_loop + - name: "Precision" + fields: + - slice_closing_radius + - resolution + - enable_arc_fitting + - xy_hole_compensation + - xy_contour_compensation + - elefant_foot_compensation + - elefant_foot_layers_density + - elefant_foot_compensation_layers + - precise_outer_wall + - precise_z_height + - hole_to_polyhole + - hole_to_polyhole_threshold + - hole_to_polyhole_twisted + - name: "Ironing" + fields: + - ironing_type + - ironing_pattern + - ironing_flow + - ironing_spacing + - ironing_inset + - ironing_angle + - ironing_angle_fixed + - name: "Wall generator" + fields: + - wall_generator + - wall_transition_angle + - wall_transition_filter_deviation + - wall_transition_length + - wall_distribution_count + - initial_layer_min_bead_width + - min_bead_width + - min_feature_size + - min_length_factor + - wall_maximum_resolution + - wall_maximum_deviation + - name: "Walls and surfaces" + fields: + - wall_sequence + - is_infill_first + - wall_direction + - print_flow_ratio + - top_solid_infill_flow_ratio + - bottom_solid_infill_flow_ratio + - set_other_flow_ratios + - first_layer_flow_ratio + - outer_wall_flow_ratio + - inner_wall_flow_ratio + - overhang_flow_ratio + - sparse_infill_flow_ratio + - internal_solid_infill_flow_ratio + - gap_fill_flow_ratio + - support_flow_ratio + - support_interface_flow_ratio + - only_one_wall_first_layer + - only_one_wall_top + - min_width_top_surface + - reduce_crossing_wall + - max_travel_detour_distance + - small_area_infill_flow_compensation + - small_area_infill_flow_compensation_model + - name: "Bridging" + fields: + - bridge_flow + - internal_bridge_flow + - bridge_density + - internal_bridge_density + - thick_bridges + - thick_internal_bridges + - enable_extra_bridge_layer + - dont_filter_internal_bridges + - counterbore_hole_bridging + - name: "Overhangs" + fields: + - detect_overhang_wall + - make_overhang_printable + - make_overhang_printable_angle + - make_overhang_printable_hole_size + - extra_perimeters_on_overhangs + - overhang_reverse + - overhang_reverse_internal_only + - overhang_reverse_threshold + - name: "Strength" + icon: "custom-gcode_strength" + groups: + - name: "Walls" + fields: + - wall_loops + - alternate_extra_wall + - detect_thin_wall + - name: "Top/bottom shells" + fields: + - top_shell_layers + - top_shell_thickness + - top_surface_density + - top_surface_pattern + - bottom_shell_layers + - bottom_shell_thickness + - bottom_surface_density + - bottom_surface_pattern + - top_bottom_infill_wall_overlap + - name: "Infill" + fields: + - sparse_infill_density + - fill_multiline + - sparse_infill_pattern + - infill_direction + - sparse_infill_rotate_template + - skin_infill_density + - skeleton_infill_density + - infill_lock_depth + - skin_infill_depth + - skin_infill_line_width + - skeleton_infill_line_width + - symmetric_infill_y_axis + - infill_shift_step + - lateral_lattice_angle_1 + - lateral_lattice_angle_2 + - infill_overhang_angle + - infill_anchor_max + - infill_anchor + - internal_solid_infill_pattern + - solid_infill_direction + - solid_infill_rotate_template + - gap_fill_target + - filter_out_gap_fill + - infill_wall_overlap + - name: "Advanced" + fields: + - align_infill_direction_to_model + - extra_solid_infills + - bridge_angle + - internal_bridge_angle + - minimum_sparse_infill_area + - infill_combination + - infill_combination_max_layer_height + - detect_narrow_internal_solid_infill + - ensure_vertical_shell_thickness + - name: "Speed" + icon: "custom-gcode_speed" + groups: + - name: "First layer speed" + fields: + - initial_layer_speed + - initial_layer_infill_speed + - initial_layer_travel_speed + - slow_down_layers + - name: "Other layers speed" + fields: + - outer_wall_speed + - inner_wall_speed + - small_perimeter_speed + - small_perimeter_threshold + - sparse_infill_speed + - internal_solid_infill_speed + - top_surface_speed + - gap_infill_speed + - ironing_speed + - support_speed + - support_interface_speed + - name: "Overhang speed" + fields: + - enable_overhang_speed + - slowdown_for_curled_perimeters + - [overhang_1_4_speed, overhang_2_4_speed, overhang_3_4_speed, overhang_4_4_speed] + - [bridge_speed, internal_bridge_speed] + - name: "Travel speed" + fields: + - travel_speed + - name: "Acceleration" + fields: + - default_acceleration + - outer_wall_acceleration + - inner_wall_acceleration + - bridge_acceleration + - sparse_infill_acceleration + - internal_solid_infill_acceleration + - initial_layer_acceleration + - initial_layer_travel_acceleration + - top_surface_acceleration + - travel_acceleration + - accel_to_decel_enable + - accel_to_decel_factor + - name: "Jerk(XY)" + fields: + - default_junction_deviation + - default_jerk + - outer_wall_jerk + - inner_wall_jerk + - infill_jerk + - top_surface_jerk + - initial_layer_jerk + - initial_layer_travel_jerk + - travel_jerk + - name: "Advanced" + fields: + - max_volumetric_extrusion_rate_slope + - max_volumetric_extrusion_rate_slope_segment_length + - extrusion_rate_smoothing_external_perimeter_only + - name: "Support" + icon: "custom-gcode_support" + groups: + - name: "Support" + fields: + - enable_support + - support_type + - support_style + - support_threshold_angle + - support_threshold_overlap + - raft_first_layer_density + - raft_first_layer_expansion + - support_on_build_plate_only + - support_critical_regions_only + - support_remove_small_overhang + - name: "Raft" + fields: + - raft_layers + - raft_contact_distance + - name: "Support filament" + fields: + - support_filament + - support_interface_filament + - support_interface_not_for_body + - name: "Support ironing" + fields: + - support_ironing + - support_ironing_pattern + - support_ironing_flow + - support_ironing_spacing + - name: "Advanced" + fields: + - support_top_z_distance + - support_bottom_z_distance + - tree_support_wall_count + - support_base_pattern + - support_base_pattern_spacing + - support_angle + - support_interface_top_layers + - support_interface_bottom_layers + - support_interface_pattern + - support_interface_spacing + - support_bottom_interface_spacing + - support_expansion + - support_object_xy_distance + - support_object_first_layer_gap + - bridge_no_support + - max_bridge_length + - independent_support_layer_height + - name: "Tree supports" + fields: + - tree_support_tip_diameter + - tree_support_branch_distance + - tree_support_branch_distance_organic + - tree_support_top_rate + - tree_support_branch_diameter + - tree_support_branch_diameter_organic + - tree_support_branch_diameter_angle + - tree_support_branch_angle + - tree_support_branch_angle_organic + - tree_support_angle_slow + - tree_support_auto_brim + - tree_support_brim_width + - name: "Multimaterial" + icon: "custom-gcode_multi_material" + groups: + - name: "Prime tower" + fields: + - enable_prime_tower + - prime_tower_skip_points + - enable_tower_interface_features + - enable_tower_interface_cooldown_during_tower + - prime_tower_enable_framework + - prime_tower_width + - prime_volume + - prime_tower_brim_width + - prime_tower_infill_gap + - wipe_tower_rotation_angle + - wipe_tower_bridging + - wipe_tower_extra_spacing + - wipe_tower_extra_flow + - wipe_tower_max_purge_speed + - wipe_tower_wall_type + - wipe_tower_cone_angle + - wipe_tower_extra_rib_length + - wipe_tower_rib_width + - wipe_tower_fillet_wall + - wipe_tower_no_sparse_layers + - single_extruder_multi_material_priming + - name: "Filament for Features" + fields: + - wall_filament + - sparse_infill_filament + - solid_infill_filament + - wipe_tower_filament + - name: "Ooze prevention" + fields: + - ooze_prevention + - standby_temperature_delta + - preheat_time + - preheat_steps + - name: "Flush options" + fields: + - flush_into_infill + - flush_into_objects + - flush_into_support + - name: "Advanced" + fields: + - interlocking_beam + - interface_shells + - mmu_segmented_region_max_width + - mmu_segmented_region_interlocking_depth + - interlocking_beam_width + - interlocking_orientation + - interlocking_beam_layer_count + - interlocking_depth + - interlocking_boundary_avoidance + - name: "Others" + icon: "custom-gcode_other" + groups: + - name: "Skirt" + fields: + - skirt_loops + - skirt_type + - min_skirt_length + - skirt_distance + - skirt_start_angle + - skirt_speed + - skirt_height + - draft_shield + - single_loop_draft_shield + - name: "Brim" + fields: + - brim_type + - brim_width + - brim_object_gap + - brim_flow_ratio + - brim_use_efc_outline + - combine_brims + - brim_ears_max_angle + - brim_ears_detection_length + - name: "Special mode" + fields: + - slicing_mode + - print_sequence + - print_order + - spiral_mode + - spiral_mode_smooth + - spiral_mode_max_xy_smoothing + - spiral_starting_flow_ratio + - spiral_finishing_flow_ratio + - timelapse_type + - enable_wrapping_detection + - name: "Fuzzy Skin" + fields: + - fuzzy_skin + - fuzzy_skin_mode + - fuzzy_skin_noise_type + - fuzzy_skin_point_distance + - fuzzy_skin_thickness + - fuzzy_skin_scale + - fuzzy_skin_octaves + - fuzzy_skin_persistence + - fuzzy_skin_first_layer + - name: "G-code output" + fields: + - reduce_infill_retraction + - gcode_add_line_number + - gcode_comments + - gcode_label_objects + - exclude_object + - filename_format + - name: "Change extrusion role G-code" # HOOK + fields: + - process_change_extrusion_role_gcode + - name: "Post-processing Scripts" + fields: + - post_process + - name: "Notes" + fields: + - notes + - name: TabFilament + pages: + - name: "Filament" + icon: "custom-gcode_filament" + groups: + - name: "Basic information" # HOOK + fields: + - filament_type + - filament_vendor + - filament_soluble + - filament_is_support + - filament_change_length + - required_nozzle_HRC + - default_filament_colour + - filament_diameter + - filament_adhesiveness_category + - filament_density + - filament_shrink + - filament_shrinkage_compensation_z + - filament_cost + - temperature_vitrification + - idle_temperature + - [nozzle_temperature_range_low, nozzle_temperature_range_high] + - name: "Flow ratio and Pressure Advance" + fields: + - pellet_flow_coefficient + - filament_flow_ratio + - enable_pressure_advance + - pressure_advance + - adaptive_pressure_advance + - adaptive_pressure_advance_overhangs + - adaptive_pressure_advance_bridges + - adaptive_pressure_advance_model + - name: "Print chamber temperature" + fields: + - activate_chamber_temp_control + - chamber_temperature + - name: "Print temperature" + fields: + - [nozzle_temperature_initial_layer, nozzle_temperature] + - name: "Bed temperature" + fields: + - [supertack_plate_temp_initial_layer, supertack_plate_temp] + - [cool_plate_temp_initial_layer, cool_plate_temp] + - [textured_cool_plate_temp_initial_layer, textured_cool_plate_temp] + - [eng_plate_temp_initial_layer, eng_plate_temp] + - [hot_plate_temp_initial_layer, hot_plate_temp] + - [textured_plate_temp_initial_layer, textured_plate_temp] + - name: "Volumetric speed limitation" + fields: + - filament_adaptive_volumetric_speed + - filament_max_volumetric_speed + - name: "Cooling" + icon: "custom-gcode_cooling_fan" + groups: + - name: "Cooling for specific layer" + fields: + - close_fan_the_first_x_layers + - full_fan_speed_layer + - name: "Part cooling fan" + fields: + - [fan_min_speed, fan_cooling_layer_time] + - [fan_max_speed, slow_down_layer_time] + - reduce_fan_stop_start_freq + - slow_down_for_layer_cooling + - dont_slow_down_outer_wall + - slow_down_min_speed + - enable_overhang_bridge_fan + - overhang_fan_threshold + - overhang_fan_speed + - internal_bridge_fan_speed + - support_material_interface_fan_speed + - ironing_fan_speed + - name: "Auxiliary part cooling fan" + fields: + - additional_cooling_fan_speed + - name: "Exhaust fan" + fields: + - activate_air_filtration + - [activate_air_filtration_during_print, during_print_exhaust_fan_speed] + - [activate_air_filtration_on_completion, complete_print_exhaust_fan_speed] + - name: "Advanced" + icon: "custom-gcode_advanced" + groups: + - name: "Filament start G-code" # HOOK + fields: + - filament_start_gcode + - name: "Change extrusion role G-code" # HOOK + fields: + - filament_change_extrusion_role_gcode + - name: "Filament end G-code" # HOOK + fields: + - filament_end_gcode + - name: "Multimaterial" + icon: "custom-gcode_multi_material" + groups: + - name: "Wipe tower parameters" + fields: + - filament_minimal_purge_on_wipe_tower + - filament_tower_interface_pre_extrusion_dist + - filament_tower_interface_pre_extrusion_length + - filament_tower_ironing_area + - filament_tower_interface_purge_volume + - filament_tower_interface_print_temp + - name: "Multi Filament" + fields: + - long_retractions_when_ec + - retraction_distances_when_ec + - name: "Tool change parameters with single extruder MM printers" + fields: + - filament_loading_speed_start + - filament_loading_speed + - filament_unloading_speed_start + - filament_unloading_speed + - filament_toolchange_delay + - filament_cooling_moves + - filament_cooling_initial_speed + - filament_cooling_final_speed + - filament_stamping_loading_speed + - filament_stamping_distance + - filament_ramming_parameters # HOOK + - name: "Tool change parameters with multi extruder MM printers" + fields: + - filament_multitool_ramming + - filament_multitool_ramming_volume + - filament_multitool_ramming_flow + - name: "Dependencies" + icon: "advanced" + groups: + - name: "Compatible printers" + fields: + - compatible_printers # HOOK + - compatible_printers_condition + - name: "Compatible process profiles" + fields: + - compatible_prints # HOOK + - compatible_prints_condition + - name: "Notes" + icon: "custom-gcode_note" + groups: + - name: "Notes" + fields: + - filament_notes + - name: TabPrinter + pages: + - name: "Basic information" + icon: "custom-gcode_object-info" + groups: + - name: "Printable space" + fields: + - printable_area # HOOK + - bed_exclude_area + - printable_height + - support_multi_bed_types + - best_object_pos + - z_offset + - preferred_orientation + - name: "Advanced" # HOOK + fields: + - printer_structure + - gcode_flavor + - pellet_modded_printer + - bbl_use_printhost + - scan_first_layer + - enable_power_loss_recovery + - disable_m73 + - thumbnails + - use_relative_e_distances + - use_firmware_retraction + - time_cost + - name: "Cooling Fan" + fields: + - [fan_speedup_time, fan_speedup_overhangs] + - fan_kickstart + - name: "Extruder Clearance" + fields: + - extruder_clearance_radius + - extruder_clearance_height_to_rod + - extruder_clearance_height_to_lid + - name: "Adaptive bed mesh" + fields: + - bed_mesh_min + - bed_mesh_max + - bed_mesh_probe_distance + - adaptive_bed_mesh_margin + - name: "Accessory" + fields: + - nozzle_type + - nozzle_hrc + - auxiliary_fan + - support_chamber_temp_control + - support_air_filtration + - name: "Machine G-code" + icon: "custom-gcode_gcode" + groups: + - name: "File header G-code" # HOOK + fields: + - file_start_gcode + - name: "Machine start G-code" # HOOK + fields: + - machine_start_gcode + - name: "Machine end G-code" # HOOK + fields: + - machine_end_gcode + - name: "Printing by object G-code" # HOOK + fields: + - printing_by_object_gcode + - name: "Before layer change G-code" # HOOK + fields: + - before_layer_change_gcode + - name: "Layer change G-code" # HOOK + fields: + - layer_change_gcode + - name: "Timelapse G-code" # HOOK + fields: + - time_lapse_gcode + - name: "Clumping Detection G-code" # HOOK + fields: + - wrapping_detection_gcode + - name: "Change filament G-code" # HOOK + fields: + - change_filament_gcode + - name: "Change extrusion role G-code" # HOOK + fields: + - change_extrusion_role_gcode + - name: "Pause G-code" # HOOK + fields: + - machine_pause_gcode + - name: "Template Custom G-code" # HOOK + fields: + - template_custom_gcode + - name: "Notes" + icon: "custom-gcode_note" + groups: + - name: "Notes" + fields: + - printer_notes \ No newline at end of file