{ "name": "FDM Printer Base Description", "version": 2, "metadata": { "type": "machine", "author": "Unknown", "manufacturer": "Unknown", "setting_version": 24, "file_formats": "text/x-gcode;model/stl;application/x-wavefront-obj;application/x3g", "visible": false, "has_materials": true, "has_variants": false, "has_machine_quality": false, "preferred_material": "generic_pla", "preferred_quality_type": "normal", "machine_extruder_trains": { "0": "fdmextruder" }, "has_textured_buildplate": false, "supports_usb_connection": true, "supports_network_connection": false, "supports_abstract_color": false, "variants_name_has_translation": false }, "settings": { "machine_settings": { "label": "Machine", "type": "category", "description": "Machine specific settings", "icon": "Printer", "children": { "build_volume_fan_nr": { "label": "Build volume fan number", "description": "The number of the fan that cools the build volume. If this is set to 0, it's means that there is no build volume fan", "default_value": 0, "minimum_value": "0", "maximum_value": "999999", "type": "int", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_name": { "label": "Machine Type", "description": "The name of your 3D printer model.", "default_value": "Unknown", "type": "str", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_show_variants": { "label": "Show Machine Variants", "description": "Whether to show the different variants of this machine, which are described in separate json files.", "default_value": false, "type": "bool", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_start_gcode": { "label": "Start G-code", "description": "G-code commands to be executed at the very start - separated by \\n.", "default_value": "G28 ;Home\nG1 Z15.0 F6000 ;Move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0", "type": "str", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_end_gcode": { "label": "End G-code", "description": "G-code commands to be executed at the very end - separated by \\n.", "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84", "type": "str", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "material_guid": { "label": "Material GUID", "description": "GUID of the material. This is set automatically.", "default_value": "", "type": "str", "enabled": false }, "material_type": { "label": "Material Type", "description": "The type of material used.", "default_value": "", "type": "str", "enabled": false }, "material_brand": { "label": "Material Brand", "description": "The brand of material used.", "default_value": "", "type": "str", "enabled": false }, "material_diameter": { "label": "Diameter", "description": "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament.", "unit": "mm", "type": "float", "default_value": 2.85, "minimum_value": "0.0001", "minimum_value_warning": "0.4", "maximum_value_warning": "3.5", "enabled": "machine_gcode_flavor != \"UltiGCode\"", "settable_per_mesh": false, "settable_per_extruder": true }, "material_bed_temp_wait": { "label": "Wait for Build Plate Heatup", "description": "Whether to insert a command to wait until the build plate temperature is reached at the start.", "default_value": true, "type": "bool", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "material_print_temp_wait": { "label": "Wait for Nozzle Heatup", "description": "Whether to wait until the nozzle temperature is reached at the start.", "default_value": true, "type": "bool", "enabled": "machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "material_print_temp_prepend": { "label": "Include Material Temperatures", "description": "Whether to include nozzle temperature commands at the start of the gcode. When the start_gcode already contains nozzle temperature commands Cura frontend will automatically disable this setting.", "default_value": true, "type": "bool", "enabled": "machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "material_bed_temp_prepend": { "label": "Include Build Plate Temperature", "description": "Whether to include build plate temperature commands at the start of the gcode. When the start_gcode already contains build plate temperature commands Cura frontend will automatically disable this setting.", "default_value": true, "type": "bool", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_width": { "label": "Machine Width", "description": "The width (X-direction) of the printable area.", "default_value": 100, "type": "float", "minimum_value": "0.001", "maximum_value": "2000000", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_depth": { "label": "Machine Depth", "description": "The depth (Y-direction) of the printable area.", "default_value": 100, "type": "float", "minimum_value": "0.001", "maximum_value": "2000000", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_height": { "label": "Machine Height", "description": "The height (Z-direction) of the printable area.", "default_value": 100, "type": "float", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_shape": { "label": "Build Plate Shape", "description": "The shape of the build plate without taking unprintable areas into account.", "default_value": "rectangular", "type": "enum", "options": { "rectangular": "Rectangular", "elliptic": "Elliptic" }, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_buildplate_type": { "label": "Build Plate Material", "description": "The material of the build plate installed on the printer.", "default_value": "glass", "type": "enum", "options": { "glass": "Glass", "aluminum": "Aluminum" }, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_heated_bed": { "label": "Has Heated Build Plate", "description": "Whether the machine has a heated build plate present.", "default_value": false, "type": "bool", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_heated_build_volume": { "label": "Has Build Volume Temperature Stabilization", "description": "Whether the machine is able to stabilize the build volume temperature.", "default_value": false, "type": "bool", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_always_write_active_tool": { "label": "Always Write Active Tool", "description": "Write active tool after sending temp commands to inactive tool. Required for Dual Extruder printing with Smoothie or other firmware with modal tool commands.", "default_value": false, "type": "bool", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_center_is_zero": { "label": "Is Center Origin", "description": "Whether the X/Y coordinates of the zero position of the printer is at the center of the printable area.", "default_value": false, "type": "bool", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_extruder_count": { "label": "Number of Extruders", "description": "Number of extruder trains. An extruder train is the combination of a feeder, bowden tube, and nozzle.", "default_value": 1, "minimum_value": "1", "maximum_value": "16", "type": "int", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "extruders_enabled_count": { "label": "Number of Extruders That Are Enabled", "description": "Number of extruder trains that are enabled; automatically set in software", "value": "machine_extruder_count", "default_value": 1, "minimum_value": "1", "maximum_value": "16", "type": "int", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_nozzle_tip_outer_diameter": { "label": "Outer Nozzle Diameter", "description": "The outer diameter of the tip of the nozzle.", "unit": "mm", "default_value": 1, "type": "float", "settable_per_mesh": false, "settable_per_extruder": true, "settable_per_meshgroup": false, "settable_globally": false }, "machine_nozzle_expansion_angle": { "label": "Nozzle Angle", "description": "The angle between the horizontal plane and the conical part right above the tip of the nozzle.", "unit": "\u00b0", "type": "int", "default_value": 45, "maximum_value": "89", "minimum_value": "1", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_heat_zone_length": { "label": "Heat Zone Length", "description": "The distance from the tip of the nozzle in which heat from the nozzle is transferred to the filament.", "unit": "mm", "default_value": 16, "type": "float", "settable_per_mesh": false, "settable_per_extruder": true, "settable_per_meshgroup": false }, "machine_nozzle_temp_enabled": { "label": "Enable Nozzle Temperature Control", "description": "Whether to control temperature from Cura. Turn this off to control nozzle temperature from outside of Cura.", "default_value": true, "value": "machine_gcode_flavor != \"UltiGCode\"", "type": "bool", "settable_per_mesh": false, "settable_per_extruder": true, "settable_per_meshgroup": false }, "machine_nozzle_heat_up_speed": { "label": "Heat Up Speed", "description": "The speed (\u00b0C/s) by which the nozzle heats up averaged over the window of normal printing temperatures and the standby temperature.", "default_value": 2.0, "unit": "\u00b0C/s", "type": "float", "enabled": "machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, "machine_nozzle_cool_down_speed": { "label": "Cool Down Speed", "description": "The speed (\u00b0C/s) by which the nozzle cools down averaged over the window of normal printing temperatures and the standby temperature.", "default_value": 2.0, "unit": "\u00b0C/s", "type": "float", "enabled": "machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, "machine_min_cool_heat_time_window": { "label": "Minimal Time Standby Temperature", "description": "The minimal time an extruder has to be inactive before the nozzle is cooled. Only when an extruder is not used for longer than this time will it be allowed to cool down to the standby temperature.", "default_value": 50.0, "unit": "s", "type": "float", "enabled": "machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, "machine_gcode_flavor": { "label": "G-code Flavor", "description": "The type of g-code to be generated.", "type": "enum", "options": { "RepRap (Marlin/Sprinter)": "Marlin", "RepRap (Volumetric)": "Marlin (Volumetric)", "RepRap (RepRap)": "RepRap", "UltiGCode": "Ultimaker 2", "Griffin": "Griffin", "Makerbot": "Makerbot", "BFB": "Bits from Bytes", "MACH3": "Mach3", "Repetier": "Repetier" }, "default_value": "RepRap (Marlin/Sprinter)", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_firmware_retract": { "label": "Firmware Retraction", "description": "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material.", "type": "bool", "default_value": false, "value": "machine_gcode_flavor == 'RepRap (Volumetric)' or machine_gcode_flavor == 'UltiGCode' or machine_gcode_flavor == 'BFB'", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_extruders_share_heater": { "label": "Extruders Share Heater", "description": "Whether the extruders share a single heater rather than each extruder having its own heater.", "type": "bool", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_extruders_share_nozzle": { "label": "Extruders Share Nozzle", "description": "Whether the extruders share a single nozzle rather than each extruder having its own nozzle. When set to true, it is expected that the printer-start gcode script properly sets up all extruders in an initial retraction state that is known and mutually compatible (either zero or one filament not retracted); in that case the initial retraction status is described, per extruder, by the 'machine_extruders_shared_nozzle_initial_retraction' parameter.", "type": "bool", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_extruders_shared_nozzle_initial_retraction": { "label": "Shared Nozzle Initial Retraction", "description": "How much the filament of each extruder is assumed to have been retracted from the shared nozzle tip at the completion of the printer-start gcode script; the value should be equal to or greater than the length of the common part of the nozzle's ducts.", "unit": "mm", "default_value": 0, "minimum_value": "0", "type": "float", "enabled": "machine_extruders_share_nozzle", "settable_per_mesh": false, "settable_per_extruder": true, "settable_per_meshgroup": false }, "machine_disallowed_areas": { "label": "Disallowed Areas", "description": "A list of polygons with areas the print head is not allowed to enter.", "type": "polygons", "default_value": [], "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "nozzle_disallowed_areas": { "label": "Nozzle Disallowed Areas", "description": "A list of polygons with areas the nozzle is not allowed to enter.", "type": "polygons", "default_value": [], "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_head_with_fans_polygon": { "label": "Machine Head & Fan Polygon", "description": "The shape of the print head. These are coordinates relative to the position of the print head, which is usually the position of its first extruder. The dimensions left and in front of the print head must be negative coordinates.", "type": "polygon", "default_value": [ [-20, 10], [10, 10], [10, -10], [-20, -10] ], "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "gantry_height": { "label": "Gantry Height", "description": "The height difference between the tip of the nozzle and the gantry system (X and Y axes).", "default_value": 99999999999, "value": "machine_height", "type": "float", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_nozzle_id": { "label": "Nozzle ID", "description": "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\".", "type": "str", "default_value": "unknown", "settable_per_mesh": false, "settable_per_extruder": true }, "machine_nozzle_size": { "label": "Nozzle Diameter", "description": "The inner diameter of the nozzle. Change this setting when using a non-standard nozzle size.", "unit": "mm", "type": "float", "default_value": 0.4, "minimum_value": "0.001", "maximum_value_warning": "10", "settable_per_mesh": false, "settable_per_extruder": true }, "machine_use_extruder_offset_to_offset_coords": { "label": "Offset with Extruder", "description": "Apply the extruder offset to the coordinate system. Affects all extruders.", "type": "bool", "default_value": true, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_start_gcode_first": { "label": "Start GCode must be first", "description": "This setting controls if the start-gcode is forced to always be the first g-code. Without this option other g-code, such as a T0 can be inserted before the start g-code.", "type": "bool", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "extruder_prime_pos_z": { "label": "Extruder Prime Z Position", "description": "The Z coordinate of the position where the nozzle primes at the start of printing.", "type": "float", "unit": "mm", "default_value": 0, "minimum_value_warning": "0", "maximum_value": "machine_height", "settable_per_mesh": false, "settable_per_extruder": true }, "extruder_prime_pos_abs": { "label": "Absolute Extruder Prime Position", "description": "Make the extruder prime position absolute rather than relative to the last-known location of the head.", "type": "bool", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": true }, "machine_max_feedrate_x": { "label": "Maximum Speed X", "description": "The maximum speed for the motor of the X-direction.", "unit": "mm/s", "type": "float", "default_value": 299792458000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_max_feedrate_y": { "label": "Maximum Speed Y", "description": "The maximum speed for the motor of the Y-direction.", "unit": "mm/s", "type": "float", "default_value": 299792458000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_max_feedrate_z": { "label": "Maximum Speed Z", "description": "The maximum speed for the motor of the Z-direction.", "unit": "mm/s", "type": "float", "default_value": 299792458000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_max_feedrate_e": { "label": "Maximum Speed E", "description": "The maximum speed of the filament.", "unit": "mm/s", "type": "float", "default_value": 299792458000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_max_acceleration_x": { "label": "Maximum Acceleration X", "description": "Maximum acceleration for the motor of the X-direction", "unit": "mm/s\u00b2", "type": "float", "default_value": 9000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_max_acceleration_y": { "label": "Maximum Acceleration Y", "description": "Maximum acceleration for the motor of the Y-direction.", "unit": "mm/s\u00b2", "type": "float", "default_value": 9000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_max_acceleration_z": { "label": "Maximum Acceleration Z", "description": "Maximum acceleration for the motor of the Z-direction.", "unit": "mm/s\u00b2", "type": "float", "default_value": 100, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_max_acceleration_e": { "label": "Maximum Filament Acceleration", "description": "Maximum acceleration for the motor of the filament.", "unit": "mm/s\u00b2", "type": "float", "default_value": 10000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_acceleration": { "label": "Default Acceleration", "description": "The default acceleration of print head movement.", "unit": "mm/s\u00b2", "type": "float", "default_value": 4000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_max_jerk_xy": { "label": "Default X-Y Jerk", "description": "Default jerk for movement in the horizontal plane.", "unit": "mm/s", "type": "float", "default_value": 20.0, "minimum_value": "0", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_max_jerk_z": { "label": "Default Z Jerk", "description": "Default jerk for the motor of the Z-direction.", "unit": "mm/s", "type": "float", "default_value": 0.4, "minimum_value": "0", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_max_jerk_e": { "label": "Default Filament Jerk", "description": "Default jerk for the motor of the filament.", "unit": "mm/s", "type": "float", "default_value": 5.0, "minimum_value": "0", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_steps_per_mm_x": { "label": "Steps per Millimeter (X)", "description": "How many steps of the stepper motor will result in one millimeter of movement in the X direction.", "type": "float", "default_value": 50, "minimum_value": "0.0000001", "settable_per_mesh": false, "settable_per_extruder": true }, "machine_steps_per_mm_y": { "label": "Steps per Millimeter (Y)", "description": "How many steps of the stepper motor will result in one millimeter of movement in the Y direction.", "type": "float", "default_value": 50, "minimum_value": "0.0000001", "settable_per_mesh": false, "settable_per_extruder": true }, "machine_steps_per_mm_z": { "label": "Steps per Millimeter (Z)", "description": "How many steps of the stepper motor will result in one millimeter of movement in the Z direction.", "type": "float", "default_value": 50, "minimum_value": "0.0000001", "settable_per_mesh": false, "settable_per_extruder": true }, "machine_steps_per_mm_e": { "label": "Steps per Millimeter (E)", "description": "How many steps of the stepper motors will result in moving the feeder wheel by one millimeter around its circumference.", "type": "float", "default_value": 1600, "minimum_value": "0.0000001", "settable_per_mesh": false, "settable_per_extruder": true }, "machine_endstop_positive_direction_x": { "label": "X Endstop in Positive Direction", "description": "Whether the endstop of the X axis is in the positive direction (high X coordinate) or negative (low X coordinate).", "type": "bool", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": true }, "machine_endstop_positive_direction_y": { "label": "Y Endstop in Positive Direction", "description": "Whether the endstop of the Y axis is in the positive direction (high Y coordinate) or negative (low Y coordinate).", "type": "bool", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": true }, "machine_endstop_positive_direction_z": { "label": "Z Endstop in Positive Direction", "description": "Whether the endstop of the Z axis is in the positive direction (high Z coordinate) or negative (low Z coordinate).", "type": "bool", "default_value": true, "settable_per_mesh": false, "settable_per_extruder": true }, "machine_minimum_feedrate": { "label": "Minimum Feedrate", "description": "The minimal movement speed of the print head.", "unit": "mm/s", "type": "float", "default_value": 0.0, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "machine_feeder_wheel_diameter": { "label": "Feeder Wheel Diameter", "description": "The diameter of the wheel that drives the material in the feeder.", "unit": "mm", "type": "float", "default_value": 10.0, "settable_per_mesh": false, "settable_per_extruder": true }, "machine_scale_fan_speed_zero_to_one": { "label": "Scale Fan Speed To 0-1", "description": "Scale the fan speed to be between 0 and 1 instead of between 0 and 256.", "type": "bool", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "reset_flow_duration": { "enabled": "gradual_flow_enabled", "value": 2.0, "label": "Reset flow duration", "description": "For any travel move longer than this value, the material flow is reset to the paths target flow", "unit": "s", "type": "float" } } }, "resolution": { "label": "Quality", "type": "category", "icon": "PrintQuality", "description": "All settings that influence the resolution of the print. These settings have a large impact on the quality (and print time)", "children": { "layer_height": { "label": "Layer Height", "description": "The height of each layer in mm. Higher values produce faster prints in lower resolution, lower values produce slower prints in higher resolution.", "unit": "mm", "type": "float", "default_value": 0.1, "minimum_value": "0.001", "minimum_value_warning": "0.04", "maximum_value_warning": "0.8 * min(extruderValues('machine_nozzle_size'))", "settable_per_mesh": false, "settable_per_extruder": false }, "layer_height_0": { "label": "Initial Layer Height", "description": "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier.", "unit": "mm", "type": "float", "default_value": 0.3, "resolve": "min(extruderValues('layer_height_0'))", "minimum_value": "0.001", "minimum_value_warning": "0.1", "maximum_value_warning": "0.8 * min(extruderValues('machine_nozzle_size'))", "settable_per_mesh": false, "settable_per_extruder": false }, "line_width": { "label": "Line Width", "description": "Width of a single line. Generally, the width of each line should correspond to the width of the nozzle. However, slightly reducing this value could produce better prints.", "unit": "mm", "minimum_value": "0.001", "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "default_value": 0.4, "type": "float", "value": "machine_nozzle_size", "settable_per_mesh": true, "children": { "wall_line_width": { "label": "Wall Line Width", "description": "Width of a single wall line.", "unit": "mm", "minimum_value": "0.001", "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "value": "line_width", "default_value": 0.4, "type": "float", "limit_to_extruder": "wall_0_extruder_nr if wall_x_extruder_nr == wall_0_extruder_nr else -1", "settable_per_mesh": true, "children": { "wall_line_width_0": { "label": "Outer Wall Line Width", "description": "Width of the outermost wall line. By lowering this value, higher levels of detail can be printed.", "unit": "mm", "minimum_value": "0.001", "minimum_value_warning": "(0.1 + 0.4 * machine_nozzle_size) if inset_direction == \"outside_in\" else 0.1 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "default_value": 0.4, "value": "wall_line_width", "type": "float", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "wall_line_width_x": { "label": "Inner Wall(s) Line Width", "description": "Width of a single wall line for all wall lines except the outermost one.", "unit": "mm", "minimum_value": "0.001", "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "default_value": 0.4, "value": "wall_line_width", "type": "float", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } }, "skin_line_width": { "label": "Top/Bottom Line Width", "description": "Width of a single top/bottom line.", "unit": "mm", "minimum_value": "0.001", "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "default_value": 0.4, "type": "float", "value": "line_width", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "infill_line_width": { "label": "Infill Line Width", "description": "Width of a single infill line.", "unit": "mm", "minimum_value": "0.001", "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "3 * machine_nozzle_size", "default_value": 0.4, "type": "float", "value": "line_width", "enabled": "infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "skirt_brim_line_width": { "label": "Skirt/Brim Line Width", "description": "Width of a single skirt or brim line.", "unit": "mm", "minimum_value": "0.001", "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "3 * machine_nozzle_size", "default_value": 0.4, "type": "float", "value": "line_width", "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')", "settable_per_mesh": false, "settable_per_extruder": true }, "support_line_width": { "label": "Support Line Width", "description": "Width of a single support structure line.", "unit": "mm", "minimum_value": "0.001", "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "3 * machine_nozzle_size", "default_value": 0.4, "type": "float", "enabled": "(support_enable or support_meshes_present)", "value": "line_width", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true }, "support_interface_line_width": { "label": "Support Interface Line Width", "description": "Width of a single line of support roof or floor.", "unit": "mm", "default_value": 0.4, "minimum_value": "0.001", "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", "enabled": "(support_enable or support_meshes_present) and support_interface_enable", "limit_to_extruder": "support_interface_extruder_nr", "value": "line_width", "settable_per_mesh": false, "settable_per_extruder": true, "children": { "support_roof_line_width": { "label": "Support Roof Line Width", "description": "Width of a single support roof line.", "unit": "mm", "default_value": 0.4, "minimum_value": "0.001", "minimum_value_warning": "0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", "enabled": "(support_enable or support_meshes_present) and support_roof_enable", "limit_to_extruder": "support_roof_extruder_nr", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_line_width')", "settable_per_mesh": false, "settable_per_extruder": true }, "support_bottom_line_width": { "label": "Support Floor Line Width", "description": "Width of a single support floor line.", "unit": "mm", "default_value": 0.4, "minimum_value": "0.001", "minimum_value_warning": "0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", "enabled": "(support_enable or support_meshes_present) and support_bottom_enable", "limit_to_extruder": "support_bottom_extruder_nr", "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_line_width')", "settable_per_mesh": false, "settable_per_extruder": true } } }, "prime_tower_line_width": { "label": "Prime Tower Line Width", "description": "Width of a single prime tower line.", "type": "float", "unit": "mm", "enabled": "prime_tower_enable", "default_value": 0.4, "value": "line_width", "minimum_value": "0.001", "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "settable_per_mesh": false, "settable_per_extruder": true } } }, "initial_layer_line_width_factor": { "label": "Initial Layer Line Width", "description": "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion.", "type": "float", "unit": "%", "default_value": 100.0, "minimum_value": "0.001", "maximum_value_warning": "150", "settable_per_mesh": false, "settable_per_extruder": true } } }, "shell": { "label": "Walls", "icon": "PrintShell", "description": "Shell", "type": "category", "children": { "wall_extruder_nr": { "label": "Wall Extruder", "description": "The extruder train used for printing the walls. This is used in multi-extrusion.", "type": "optional_extruder", "default_value": "-1", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, "enabled": "extruders_enabled_count > 1", "children": { "wall_0_extruder_nr": { "label": "Outer Wall Extruder", "description": "The extruder train used for printing the outer wall. This is used in multi-extrusion.", "type": "optional_extruder", "value": "wall_extruder_nr", "default_value": "-1", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, "enabled": "extruders_enabled_count > 1" }, "wall_x_extruder_nr": { "label": "Inner Wall Extruder", "description": "The extruder train used for printing the inner walls. This is used in multi-extrusion.", "type": "optional_extruder", "value": "wall_extruder_nr", "default_value": "-1", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, "enabled": "extruders_enabled_count > 1" } } }, "wall_thickness": { "label": "Wall Thickness", "description": "The thickness of the walls in the horizontal direction. This value divided by the wall line width defines the number of walls.", "unit": "mm", "default_value": 0.8, "value": "wall_line_width_0 if magic_spiralize else 0.8", "minimum_value": "0", "minimum_value_warning": "line_width", "maximum_value_warning": "10 * line_width", "maximum_value": "999999 * line_width", "type": "float", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true, "children": { "wall_line_count": { "label": "Wall Line Count", "description": "The number of walls. When calculated by the wall thickness, this value is rounded to a whole number.", "default_value": 2, "minimum_value": "0", "minimum_value_warning": "1", "maximum_value_warning": "10", "maximum_value": "999999", "type": "int", "value": "1 if magic_spiralize else max(1, round((wall_thickness - wall_line_width_0) / wall_line_width_x) + 1) if wall_thickness != 0 else 0", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } }, "wall_transition_length": { "label": "Wall Transition Length", "description": "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 lines.", "type": "float", "unit": "mm", "default_value": 0.4, "value": "line_width", "minimum_value": "0.001", "minimum_value_warning": "0.5 * line_width", "maximum_value_warning": "2 * line_width", "maximum_value": "min_bead_width * 3 * math.pi" }, "wall_distribution_count": { "label": "Wall Distribution Count", "description": "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.", "type": "int", "maximum_value": "999999", "default_value": 1, "minimum_value": "1" }, "wall_transition_angle": { "label": "Wall Transitioning Threshold Angle", "description": "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.", "type": "float", "unit": "\u00b0", "default_value": 10, "minimum_value": "1", "minimum_value_warning": "5", "maximum_value_warning": "50", "maximum_value": "59" }, "wall_transition_filter_distance": { "label": "Wall Transitioning Filter Distance", "description": "If it would be transitioning back and forth between different numbers of walls in quick succession, don't transition at all. Remove transitions if they are closer together than this distance.", "type": "float", "unit": "mm", "value": "100", "enabled": false, "default_value": 100, "minimum_value": "wall_transition_length", "minimum_value_warning": "math.cos(wall_transition_angle / 180 * math.pi) * wall_line_width_x", "maximum_value": "999999" }, "wall_transition_filter_deviation": { "label": "Wall Transitioning Filter Margin", "description": "Prevent transitioning back and forth between one extra wall and one less. This margin extends the range of line widths which follow to [Minimum Wall Line Width - Margin, 2 * Minimum Wall Line Width + Margin]. Increasing this margin reduces the number of transitions, which reduces the number of extrusion starts/stops and travel time. However, large line width variation can lead to under- or overextrusion problems.", "type": "float", "unit": "mm", "default_value": 0.1, "value": ".25 * machine_nozzle_size", "minimum_value": "0", "minimum_value_warning": ".01", "maximum_value_warning": "machine_nozzle_size" }, "wall_0_wipe_dist": { "label": "Outer Wall Wipe Distance", "description": "Distance of a travel move inserted after the outer wall, to hide the Z seam better.", "unit": "mm", "type": "float", "default_value": 0.2, "value": "machine_nozzle_size / 2", "minimum_value": "0", "maximum_value_warning": "machine_nozzle_size * 2", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "wall_0_inset": { "label": "Outer Wall Inset", "description": "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model.", "unit": "mm", "type": "float", "default_value": 0.0, "value": "(machine_nozzle_size - wall_line_width_0) / 2 if (wall_line_width_0 < machine_nozzle_size and inset_direction != \"outside_in\") else 0", "minimum_value_warning": "0", "maximum_value_warning": "machine_nozzle_size", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "optimize_wall_printing_order": { "label": "Optimize Wall Printing Order", "description": "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization. First layer is not optimized when choosing brim as build plate adhesion type.", "type": "bool", "default_value": true, "settable_per_mesh": true }, "inset_direction": { "label": "Wall Ordering", "description": "Determines the order in which walls are printed. Printing outer walls earlier helps with dimensional accuracy, as faults from inner walls cannot propagate to the outside. However printing them later allows them to stack better when overhangs are printed. When there is an uneven amount of total innner walls, the 'center last line' is always printed last.", "type": "enum", "options": { "inside_out": "Inside To Outside", "outside_in": "Outside To Inside" }, "default_value": "inside_out", "settable_per_mesh": true }, "alternate_extra_perimeter": { "label": "Alternate Extra Wall", "description": "Prints an extra wall at every other layer. This way infill gets caught between these extra walls, resulting in stronger prints.", "type": "bool", "default_value": false, "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "min_wall_line_width": { "label": "Minimum Wall Line Width", "description": "For thin structures around once or twice the nozzle size, the line widths need to be altered to adhere to the thickness of the model. This setting controls the minimum line width allowed for the walls. The minimum line widths inherently also determine the maximum line widths, since we transition from N to N+1 walls at some geometry thickness where the N walls are wide and the N+1 walls are narrow. The widest possible wall line is twice the Minimum Wall Line Width.", "unit": "mm", "minimum_value_warning": ".5 * max(wall_line_width_0, wall_line_width_x)", "maximum_value_warning": "min(wall_line_width_0, wall_line_width_x)", "default_value": 0.3, "value": "machine_nozzle_size * .85", "type": "float", "settable_per_mesh": true, "children": { "min_even_wall_line_width": { "label": "Minimum Even Wall Line Width", "description": "The minimum line width for normal polygonal walls. This setting determines at which model thickness we switch from printing a single thin wall line, to printing two wall lines. A higher Minimum Even Wall Line Width leads to a higher maximum odd wall line width. The maximum even wall line width is calculated as Outer Wall Line Width + 0.5 * Minimum Odd Wall Line Width.", "unit": "mm", "minimum_value_warning": ".5 * max(wall_line_width_0, wall_line_width_x)", "maximum_value_warning": "min(wall_line_width_0, wall_line_width_x)", "default_value": 0.3, "value": "min_wall_line_width", "type": "float", "settable_per_mesh": true }, "min_odd_wall_line_width": { "label": "Minimum Odd Wall Line Width", "description": "The minimum line width for middle line gap filler polyline walls. This setting determines at which model thickness we switch from printing two wall lines, to printing two outer walls and a single central wall in the middle. A higher Minimum Odd Wall Line Width leads to a higher maximum even wall line width. The maximum odd wall line width is calculated as 2 * Minimum Even Wall Line Width.", "unit": "mm", "minimum_value_warning": ".5 * max(wall_line_width_0, wall_line_width_x)", "maximum_value_warning": "min(wall_line_width_0, wall_line_width_x)", "default_value": 0.3, "value": "min_wall_line_width", "type": "float", "settable_per_mesh": true } } }, "fill_outline_gaps": { "label": "Print Thin Walls", "description": "Print pieces of the model which are horizontally thinner than the nozzle size.", "type": "bool", "default_value": true, "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "min_feature_size": { "label": "Minimum Feature Size", "description": "Minimum thickness of thin features. Model features that are thinner than this value will not be printed, while features thicker than the Minimum Feature Size will be widened to the Minimum Wall Line Width.", "unit": "mm", "default_value": 0.1, "value": "wall_line_width_0 / 4", "minimum_value": "0", "maximum_value": "wall_line_width_0", "type": "float", "limit_to_extruder": "wall_0_extruder_nr", "enabled": "fill_outline_gaps", "settable_per_mesh": true }, "min_bead_width": { "label": "Minimum Thin Wall Line Width", "description": "Width of the wall that will replace thin features (according to the Minimum Feature Size) of the model. If the Minimum Wall Line Width is thinner than the thickness of the feature, the wall will become as thick as the feature itself.", "unit": "mm", "value": "min_wall_line_width", "default_value": 0.2, "minimum_value": "0.001", "minimum_value_warning": "min_feature_size", "maximum_value_warning": "wall_line_width_0", "type": "float", "limit_to_extruder": "wall_0_extruder_nr", "enabled": "fill_outline_gaps", "settable_per_mesh": true }, "xy_offset": { "label": "Horizontal Expansion", "description": "Amount of offset applied to all polygons in each layer. Positive values can compensate for too big holes; negative values can compensate for too small holes.", "unit": "mm", "type": "float", "minimum_value_warning": "-1", "maximum_value_warning": "1", "default_value": 0, "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "xy_offset_layer_0": { "label": "Initial Layer Horizontal Expansion", "description": "Amount of offset applied to all polygons in the first layer. A negative value can compensate for squishing of the first layer known as \"elephant's foot\".", "unit": "mm", "type": "float", "minimum_value_warning": "-1", "maximum_value_warning": "1", "default_value": 0, "value": "xy_offset", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "hole_xy_offset": { "label": "Hole Horizontal Expansion", "description": "When greater than zero, the Hole Horizontal Expansion is the amount of offset applied to all holes in each layer. Positive values increase the size of the holes, negative values reduce the size of the holes. When this setting is enabled it can be further tuned with Hole Horizontal Expansion Max Diameter.", "unit": "mm", "type": "float", "minimum_value_warning": "-1", "maximum_value_warning": "1", "default_value": 0, "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "hole_xy_offset_max_diameter": { "label": "Hole Horizontal Expansion Max Diameter", "description": "When greater than zero, the Hole Horizontal Expansion is gradually applied on small holes (small holes are expanded more). When set to zero the Hole Horizontal Expansion will be applied to all holes. Holes larger than the Hole Horizontal Expansion Max Diameter are not expanded.", "unit": "mm", "type": "float", "default_value": 0, "minimum_value": "0", "enabled": "hole_xy_offset > 0", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "z_seam_type": { "label": "Z Seam Alignment", "description": "Starting point of each path in a layer. When paths in consecutive layers start at the same point a vertical seam may show on the print. When aligning these near a user specified location, the seam is easiest to remove. When placed randomly the inaccuracies at the paths' start will be less noticeable. When taking the shortest path the print will be quicker.", "type": "enum", "options": { "back": "User Specified", "shortest": "Shortest", "random": "Random", "sharpest_corner": "Sharpest Corner" }, "default_value": "sharpest_corner", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "z_seam_on_vertex": { "label": "Z Seam On Vertex", "description": "Place the z-seam on a polygon vertex. Switching this off can place the seam between vertices as well. (Keep in mind that this won't override the restrictions on placing the seam on an unsupported overhang.)", "type": "bool", "default_value": false, "settable_per_mesh": true, "enabled": "z_seam_type == 'back' or z_seam_type == 'shortest'" }, "z_seam_position": { "label": "Z Seam Position", "description": "The position near where to start printing each part in a layer.", "type": "enum", "options": { "backleft": "Back Left", "back": "Back", "backright": "Back Right", "right": "Right", "frontright": "Front Right", "front": "Front", "frontleft": "Front Left", "left": "Left" }, "enabled": "z_seam_type == 'back'", "default_value": "back", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true, "children": { "z_seam_x": { "label": "Z Seam X", "description": "The X coordinate of the position near where to start printing each part in a layer.", "unit": "mm", "type": "float", "default_value": 100.0, "value": "(0 if (z_seam_position == 'frontleft' or z_seam_position == 'left' or z_seam_position == 'backleft') else machine_width / 2 if (z_seam_position == 'front' or z_seam_position == 'back') else machine_width) - (machine_width / 2 if z_seam_relative or machine_center_is_zero else 0)", "enabled": "z_seam_type == 'back'", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "z_seam_y": { "label": "Z Seam Y", "description": "The Y coordinate of the position near where to start printing each part in a layer.", "unit": "mm", "type": "float", "default_value": 100.0, "value": "(0 if (z_seam_position == 'frontleft' or z_seam_position == 'front' or z_seam_position == 'frontright') else machine_depth / 2 if (z_seam_position == 'left' or z_seam_position == 'right') else machine_depth) - (machine_depth / 2 if z_seam_relative or machine_center_is_zero else 0)", "enabled": "z_seam_type == 'back'", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true } } }, "z_seam_corner": { "label": "Seam Corner Preference", "description": "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate.", "type": "enum", "options": { "z_seam_corner_none": "None", "z_seam_corner_inner": "Hide Seam", "z_seam_corner_outer": "Expose Seam", "z_seam_corner_any": "Hide or Expose Seam", "z_seam_corner_weighted": "Smart Hiding" }, "default_value": "z_seam_corner_inner", "enabled": "z_seam_type == 'sharpest_corner'", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "z_seam_relative": { "label": "Z Seam Relative", "description": "When enabled, the z seam coordinates are relative to each part's centre. When disabled, the coordinates define an absolute position on the build plate.", "type": "bool", "default_value": false, "enabled": "z_seam_type == 'back'", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true } } }, "top_bottom": { "label": "Top/Bottom", "icon": "PrintTopBottom", "description": "Top/Bottom", "type": "category", "children": { "roofing_extruder_nr": { "label": "Top Surface Skin Extruder", "description": "The extruder train used for printing the top most skin. This is used in multi-extrusion.", "type": "optional_extruder", "default_value": "-1", "value": "top_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, "enabled": "extruders_enabled_count > 1 and max(extruderValues('roofing_layer_count')) > 0 and max(extruderValues('top_layers')) > 0" }, "roofing_layer_count": { "label": "Top Surface Skin Layers", "description": "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces.", "default_value": 0, "minimum_value": "0", "maximum_value_warning": "top_layers - 1", "type": "int", "maximum_value": "999999", "value": "0", "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true, "enabled": "top_layers > 0", "children": { "roofing_line_width": { "label": "Top Surface Skin Line Width", "description": "Width of a single line of the areas at the top of the print.", "unit": "mm", "minimum_value": "0.001", "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "default_value": 0.4, "type": "float", "value": "skin_line_width", "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true, "enabled": "roofing_layer_count > 0 and top_layers > 0" }, "roofing_pattern": { "label": "Top Surface Skin Pattern", "description": "The pattern of the top most layers.", "type": "enum", "options": { "lines": "Lines", "concentric": "Concentric", "zigzag": "Zig Zag" }, "default_value": "lines", "value": "top_bottom_pattern", "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true, "enabled": "roofing_layer_count > 0 and top_layers > 0" }, "roofing_monotonic": { "label": "Monotonic Top Surface Order", "description": "Print top surface lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes flat surfaces look more consistent.", "type": "bool", "value": true, "default_value": true, "enabled": "roofing_layer_count > 0 and top_layers > 0 and roofing_pattern != 'concentric'", "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true }, "roofing_angles": { "label": "Top Surface Skin Line Directions", "description": "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees).", "type": "[int]", "default_value": "[ ]", "value": "skin_angles", "enabled": "roofing_pattern != 'concentric' and roofing_layer_count > 0 and top_layers > 0", "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true } } }, "top_bottom_extruder_nr": { "label": "Top/Bottom Extruder", "description": "The extruder train used for printing the top and bottom skin. This is used in multi-extrusion.", "type": "optional_extruder", "default_value": "-1", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, "enabled": "extruders_enabled_count > 1" }, "top_bottom_thickness": { "label": "Top/Bottom Thickness", "description": "The thickness of the top/bottom layers in the print. This value divided by the layer height defines the number of top/bottom layers.", "unit": "mm", "default_value": 0.8, "minimum_value": "0", "minimum_value_warning": "0.6", "maximum_value": "machine_height", "type": "float", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { "top_thickness": { "label": "Top Thickness", "description": "The thickness of the top layers in the print. This value divided by the layer height defines the number of top layers.", "unit": "mm", "default_value": 0.8, "minimum_value": "0", "minimum_value_warning": "0.2 + resolveOrValue('layer_height')", "maximum_value": "machine_height", "type": "float", "value": "top_bottom_thickness", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { "top_layers": { "label": "Top Layers", "description": "The number of top layers. When calculated by the top thickness, this value is rounded to a whole number.", "default_value": 8, "minimum_value": "0", "maximum_value_warning": "100", "maximum_value": "999999", "type": "int", "minimum_value_warning": "2", "value": "0 if infill_sparse_density == 100 else math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } }, "bottom_thickness": { "label": "Bottom Thickness", "description": "The thickness of the bottom layers in the print. This value divided by the layer height defines the number of bottom layers.", "unit": "mm", "default_value": 0.6, "minimum_value": "0", "minimum_value_warning": "0.2 + resolveOrValue('layer_height')", "type": "float", "value": "top_bottom_thickness", "maximum_value": "machine_height", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { "bottom_layers": { "label": "Bottom Layers", "description": "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number.", "minimum_value": "0", "minimum_value_warning": "2", "default_value": 6, "maximum_value": "999999", "type": "int", "value": "999999 if infill_sparse_density == 100 and not magic_spiralize else math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "initial_bottom_layers": { "label": "Initial Bottom Layers", "description": "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number.", "minimum_value": "0", "minimum_value_warning": "2", "maximum_value": "999999", "default_value": 6, "type": "int", "value": "bottom_layers", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } } } }, "top_bottom_pattern": { "label": "Top/Bottom Pattern", "description": "The pattern of the top/bottom layers.", "type": "enum", "options": { "lines": "Lines", "concentric": "Concentric", "zigzag": "Zig Zag" }, "default_value": "lines", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "top_bottom_pattern_0": { "label": "Bottom Pattern Initial Layer", "description": "The pattern on the bottom of the print on the first layer.", "type": "enum", "options": { "lines": "Lines", "concentric": "Concentric", "zigzag": "Zig Zag" }, "default_value": "lines", "enabled": "top_layers > 0 or bottom_layers > 0", "value": "top_bottom_pattern", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "connect_skin_polygons": { "label": "Connect Top/Bottom Polygons", "description": "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality.", "type": "bool", "default_value": false, "enabled": "((top_layers > 0 or bottom_layers > 0) and top_bottom_pattern == 'concentric') or (initial_bottom_layers > 0 and top_bottom_pattern_0 == 'concentric') or (roofing_layer_count > 0 and roofing_pattern == 'concentric')", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "skin_monotonic": { "label": "Monotonic Top/Bottom Order", "description": "Print top/bottom lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes flat surfaces look more consistent.", "type": "bool", "default_value": false, "enabled": "(top_layers > 0 or bottom_layers > 0) and (top_bottom_pattern != 'concentric' or top_bottom_pattern_0 != 'concentric')", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "skin_angles": { "label": "Top/Bottom Line Directions", "description": "A list of integer line directions to use when the top/bottom layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees).", "type": "[int]", "default_value": "[ ]", "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "small_skin_width": { "label": "Small Top/Bottom Width", "description": "Small top/bottom regions are filled with walls instead of the default top/bottom pattern. This helps to avoids jerky motions. Off for the topmost (air-exposed) layer by default (see 'Small Top/Bottom On Surface').", "value": "skin_line_width * 2", "default_value": 1, "minimum_value": "0", "maximum_value_warning": "skin_line_width * 10", "type": "float", "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "unit": "mm" }, "small_skin_on_surface": { "label": "Small Top/Bottom On Surface", "description": "Enable small (up to 'Small Top/Bottom Width') regions on the topmost skinned layer (exposed to air) to be filled with walls instead of the default pattern.", "value": "False", "default_value": false, "type": "bool", "enabled": "small_skin_width > 0 and top_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "skin_no_small_gaps_heuristic": { "label": "No Skin in Z Gaps", "description": "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air.", "type": "bool", "default_value": false, "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "skin_outline_count": { "label": "Extra Skin Wall Count", "description": "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material.", "value": "0 if top_bottom_pattern == 'concentric' and top_bottom_pattern_0 == 'concentric' and roofing_layer_count <= 0 else 1", "default_value": 1, "minimum_value": "0", "maximum_value_warning": "10", "maximum_value": "999999", "type": "int", "enabled": "(top_layers > 0 or bottom_layers > 0) and (top_bottom_pattern != 'concentric' or top_bottom_pattern_0 != 'concentric' or (roofing_layer_count > 0 and roofing_pattern != 'concentric'))", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "ironing_enabled": { "label": "Enable Ironing", "description": "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material.", "type": "bool", "default_value": false, "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "ironing_only_highest_layer": { "label": "Iron Only Highest Layer", "description": "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish.", "type": "bool", "default_value": false, "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "ironing_pattern": { "label": "Ironing Pattern", "description": "The pattern to use for ironing top surfaces.", "type": "enum", "options": { "concentric": "Concentric", "zigzag": "Zig Zag" }, "default_value": "zigzag", "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "ironing_monotonic": { "label": "Monotonic Ironing Order", "description": "Print ironing lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes flat surfaces look more consistent.", "type": "bool", "default_value": false, "enabled": "ironing_enabled and ironing_pattern != 'concentric'", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "ironing_line_spacing": { "label": "Ironing Line Spacing", "description": "The distance between the lines of ironing.", "type": "float", "unit": "mm", "default_value": 0.1, "minimum_value": "0.001", "maximum_value_warning": "machine_nozzle_tip_outer_diameter", "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "ironing_flow": { "label": "Ironing Flow", "description": "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface.", "type": "float", "unit": "%", "default_value": 10.0, "minimum_value": "0", "maximum_value_warning": "50", "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "ironing_inset": { "label": "Ironing Inset", "description": "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print.", "type": "float", "unit": "mm", "default_value": 0.35, "value": "wall_line_width_0 / 2 + (ironing_line_spacing - skin_line_width * (1.0 + ironing_flow / 100) / 2 if ironing_pattern == 'concentric' else skin_line_width * (1.0 - ironing_flow / 100) / 2)", "minimum_value_warning": "0", "maximum_value_warning": "wall_line_width_0", "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "speed_ironing": { "label": "Ironing Speed", "description": "The speed at which to pass over the top surface.", "type": "float", "unit": "mm/s", "default_value": 20.0, "value": "speed_topbottom * 20 / 30", "minimum_value": "0.001", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "100", "enabled": "ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "acceleration_ironing": { "label": "Ironing Acceleration", "description": "The acceleration with which ironing is performed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_topbottom", "enabled": "resolveOrValue('acceleration_enabled') and ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "jerk_ironing": { "label": "Ironing Jerk", "description": "The maximum instantaneous velocity change while performing ironing.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_topbottom", "enabled": "resolveOrValue('jerk_enabled') and ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "skin_overlap": { "label": "Skin Overlap Percentage", "description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.", "unit": "%", "type": "float", "default_value": 5, "minimum_value_warning": "-50", "maximum_value_warning": "100", "value": "5 if top_bottom_pattern != 'concentric' else 0", "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { "skin_overlap_mm": { "label": "Skin Overlap", "description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.", "unit": "mm", "type": "float", "default_value": 0.02, "minimum_value_warning": "-0.5 * machine_nozzle_size", "maximum_value_warning": "machine_nozzle_size", "value": "0.5 * (skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", "settable_per_mesh": true } } }, "skin_preshrink": { "label": "Skin Removal Width", "description": "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model.", "unit": "mm", "type": "float", "default_value": 1, "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", "maximum_value_warning": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { "top_skin_preshrink": { "label": "Top Skin Removal Width", "description": "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model.", "unit": "mm", "type": "float", "default_value": 1, "value": "skin_preshrink", "maximum_value_warning": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "bottom_skin_preshrink": { "label": "Bottom Skin Removal Width", "description": "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model.", "unit": "mm", "type": "float", "default_value": 1, "value": "skin_preshrink", "maximum_value_warning": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } }, "expand_skins_expand_distance": { "label": "Skin Expand Distance", "description": "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used.", "unit": "mm", "type": "float", "default_value": 1, "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "-skin_preshrink", "limit_to_extruder": "top_bottom_extruder_nr", "enabled": "top_layers > 0 or bottom_layers > 0", "settable_per_mesh": true, "children": { "top_skin_expand_distance": { "label": "Top Skin Expand Distance", "description": "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used.", "unit": "mm", "type": "float", "default_value": 1, "value": "expand_skins_expand_distance", "minimum_value": "-top_skin_preshrink", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "bottom_skin_expand_distance": { "label": "Bottom Skin Expand Distance", "description": "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used.", "unit": "mm", "type": "float", "default_value": 1, "value": "expand_skins_expand_distance", "minimum_value": "-bottom_skin_preshrink", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } }, "max_skin_angle_for_expansion": { "label": "Maximum Skin Angle for Expansion", "description": "Top and/or bottom surfaces of your object with an angle larger than this setting, won't have their top/bottom skin expanded. This avoids expanding the narrow skin areas that are created when the model surface has a near vertical slope. An angle of 0\u00b0 is horizontal and will cause no skin to be expanded, while an angle of 90\u00b0 is vertical and will cause all skin to be expanded.", "unit": "\u00b0", "type": "float", "minimum_value": "0", "minimum_value_warning": "2", "maximum_value": "90", "default_value": 90, "enabled": "(top_layers > 0 or bottom_layers > 0) and (top_skin_expand_distance > 0 or bottom_skin_expand_distance > 0)", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { "min_skin_width_for_expansion": { "label": "Minimum Skin Width for Expansion", "description": "Skin areas narrower than this are not expanded. This avoids expanding the narrow skin areas that are created when the model surface has a slope close to the vertical.", "unit": "mm", "type": "float", "default_value": 0, "value": "top_layers * layer_height / math.tan(math.radians(max_skin_angle_for_expansion))", "minimum_value": "0", "enabled": "(top_layers > 0 or bottom_layers > 0) and (top_skin_expand_distance > 0 or bottom_skin_expand_distance > 0)", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } } } }, "infill": { "label": "Infill", "icon": "Infill1", "description": "Infill", "type": "category", "children": { "infill_extruder_nr": { "label": "Infill Extruder", "description": "The extruder train used for printing infill. This is used in multi-extrusion.", "type": "optional_extruder", "default_value": "-1", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, "enabled": "extruders_enabled_count > 1" }, "infill_sparse_density": { "label": "Infill Density", "description": "Adjusts the density of infill of the print.", "unit": "%", "type": "float", "default_value": 20, "minimum_value": "0", "maximum_value_warning": "100", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true, "children": { "infill_line_distance": { "label": "Infill Line Distance", "description": "Distance between the printed infill lines. This setting is calculated by the infill density and the infill line width.", "unit": "mm", "type": "float", "default_value": 2, "minimum_value": "0", "minimum_value_warning": "infill_line_width", "value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == 'grid' else (3 if infill_pattern == 'triangles' or infill_pattern == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else (1.6 if infill_pattern == 'lightning' else 1)))))", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true } } }, "infill_pattern": { "label": "Infill Pattern", "description": "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction. Lightning infill tries to minimize the infill, by only supporting the ceiling of the object.", "type": "enum", "options": { "grid": "Grid", "lines": "Lines", "triangles": "Triangles", "trihexagon": "Tri-Hexagon", "cubic": "Cubic", "cubicsubdiv": "Cubic Subdivision", "tetrahedral": "Octet", "quarter_cubic": "Quarter Cubic", "concentric": "Concentric", "zigzag": "Zig Zag", "cross": "Cross", "cross_3d": "Cross 3D", "gyroid": "Gyroid", "lightning": "Lightning" }, "default_value": "grid", "enabled": "infill_line_distance > 0", "value": "'lines' if infill_sparse_density > 25 else 'grid'", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "zig_zaggify_infill": { "label": "Connect Infill Lines", "description": "Connect the ends where the infill pattern meets the inner wall using a line which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduce the effects of infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used.", "type": "bool", "default_value": false, "value": "infill_pattern == 'cross' or infill_pattern == 'cross_3d'", "enabled": "infill_pattern == 'lines' or infill_pattern == 'grid' or infill_pattern == 'triangles' or infill_pattern == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'gyroid'", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "connect_infill_polygons": { "label": "Connect Infill Polygons", "description": "Connect infill paths where they run next to each other. For infill patterns which consist of several closed polygons, enabling this setting greatly reduces the travel time.", "type": "bool", "default_value": true, "value": "(infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_multiplier % 2 == 0) and infill_wall_line_count > 0", "enabled": "infill_pattern != 'lightning' and infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'concentric' or infill_multiplier % 2 == 0 or infill_wall_line_count > 1", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_angles": { "label": "Infill Line Directions", "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns).", "type": "[int]", "default_value": "[ ]", "enabled": "infill_pattern not in ('concentric', 'cross', 'cross_3d', 'gyroid', 'lightning') and infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_offset_x": { "label": "Infill X Offset", "description": "The infill pattern is moved this distance along the X axis.", "unit": "mm", "type": "float", "default_value": 0, "enabled": "infill_pattern != 'lightning' and infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_offset_y": { "label": "Infill Y Offset", "description": "The infill pattern is moved this distance along the Y axis.", "unit": "mm", "type": "float", "default_value": 0, "enabled": "infill_pattern != 'lightning' and infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_randomize_start_location": { "label": "Randomize Infill Start", "description": "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move.", "type": "bool", "default_value": false, "warning_value": "True if infill_pattern not in ('grid', 'triangles', 'trihexagon', 'cubic', 'cubicsubdiv', 'tetrahedral', 'quarter_cubic') else None", "enabled": "not (infill_pattern == 'lightning' or (infill_pattern == 'cross' and connect_infill_polygons) or infill_pattern == 'concentric')", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_multiplier": { "label": "Infill Line Multiplier", "description": "Convert each infill line to this many lines. The extra lines do not cross over each other, but avoid each other. This makes the infill stiffer, but increases print time and material usage.", "default_value": 1, "type": "int", "maximum_value": "999999", "minimum_value": "1", "maximum_value_warning": "infill_line_distance / infill_line_width", "enabled": "infill_sparse_density > 0 and infill_pattern != 'zigzag' and (gradual_infill_steps == 0 or not zig_zaggify_infill)", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_wall_line_count": { "label": "Extra Infill Wall Count", "description": "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\nThis feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right.", "default_value": 0, "type": "int", "minimum_value": "0", "maximum_value": "999999", "enabled": "infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "sub_div_rad_add": { "label": "Cubic Subdivision Shell", "description": "An addition to the radius from the center of each cube to check for the boundary of the model, as to decide whether this cube should be subdivided. Larger values lead to a thicker shell of small cubes near the boundary of the model.", "unit": "mm", "type": "float", "default_value": 0.4, "value": "wall_line_width_x", "minimum_value_warning": "-1 * infill_line_distance", "maximum_value_warning": "5 * infill_line_distance", "enabled": "infill_sparse_density > 0 and infill_pattern == 'cubicsubdiv'", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_overlap": { "label": "Infill Overlap Percentage", "description": "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill.", "unit": "%", "type": "float", "default_value": 10, "value": "10 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0", "minimum_value_warning": "-50", "maximum_value_warning": "100", "enabled": "infill_sparse_density > 0 and infill_pattern != 'concentric'", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true, "children": { "infill_overlap_mm": { "label": "Infill Overlap", "description": "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill.", "unit": "mm", "type": "float", "default_value": 0.04, "minimum_value_warning": "-0.5 * machine_nozzle_size", "maximum_value_warning": "machine_nozzle_size", "value": "0.5 * (infill_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0", "enabled": "infill_sparse_density > 0 and infill_pattern != 'concentric'", "settable_per_mesh": true } } }, "infill_wipe_dist": { "label": "Infill Wipe Distance", "description": "Distance of a travel move inserted after every infill line, to make the infill stick to the walls better. This option is similar to infill overlap, but without extrusion and only on one end of the infill line.", "unit": "mm", "type": "float", "default_value": 0.04, "value": "wall_line_width_0 / 4 if wall_line_count == 1 else wall_line_width_x / 4", "minimum_value_warning": "0", "maximum_value_warning": "machine_nozzle_size", "enabled": "infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_sparse_thickness": { "label": "Infill Layer Thickness", "description": "The thickness per layer of infill material. This value should always be a multiple of the layer height and is otherwise rounded.", "unit": "mm", "type": "float", "default_value": 0.1, "minimum_value": "resolveOrValue('layer_height') / 2 if infill_line_distance > 0 else -999999", "maximum_value_warning": "0.75 * machine_nozzle_size", "maximum_value": "resolveOrValue('layer_height') * 8 if infill_line_distance > 0 else 999999", "value": "resolveOrValue('layer_height')", "enabled": "infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "gradual_infill_steps": { "label": "Gradual Infill Steps", "description": "Number of times to reduce the infill density by half when getting further below top surfaces. Areas which are closer to top surfaces get a higher density, up to the Infill Density.", "default_value": 0, "type": "int", "minimum_value": "0", "maximum_value_warning": "1 if (infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'concentric') else 5", "maximum_value": "999999 if infill_line_distance == 0 else (20 - math.log(infill_line_distance) / math.log(2))", "enabled": "infill_sparse_density > 0 and infill_pattern not in ['cubicsubdiv', 'cross', 'cross_3d', 'lightning']", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "gradual_infill_step_height": { "label": "Gradual Infill Step Height", "description": "The height of infill of a given density before switching to half the density.", "unit": "mm", "type": "float", "default_value": 1.5, "minimum_value": "0.0001", "minimum_value_warning": "3 * resolveOrValue('layer_height')", "enabled": "infill_sparse_density > 0 and gradual_infill_steps > 0 and infill_pattern not in ['cubicsubdiv', 'cross', 'cross_3d', 'lightning']", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_before_walls": { "label": "Infill Before Walls", "description": "Print the infill before printing the walls. Printing the walls first may lead to more accurate walls, but overhangs print worse. Printing the infill first leads to sturdier walls, but the infill pattern might sometimes show through the surface.", "type": "bool", "default_value": true, "enabled": "infill_sparse_density > 0 and wall_x_extruder_nr == infill_extruder_nr", "settable_per_mesh": true }, "min_infill_area": { "label": "Minimum Infill Area", "description": "Don't generate areas of infill smaller than this (use skin instead).", "unit": "mm\u00b2", "type": "float", "minimum_value": "0", "default_value": 0, "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_support_enabled": { "label": "Infill Support", "description": "Print infill structures only where tops of the model should be supported. Enabling this reduces print time and material usage, but leads to ununiform object strength.", "type": "bool", "default_value": false, "enabled": "infill_pattern != 'lightning' and infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_support_angle": { "label": "Infill Overhang Angle", "description": "The minimum angle of internal overhangs for which infill is added. At a value of 0\u00b0 objects are totally filled with infill, 90\u00b0 will not provide any infill.", "unit": "\u00b0", "type": "float", "minimum_value": "0", "minimum_value_warning": "2", "maximum_value": "90", "default_value": 40, "enabled": "infill_pattern != 'lightning' and infill_sparse_density > 0 and infill_support_enabled", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "skin_edge_support_thickness": { "label": "Skin Edge Support Thickness", "description": "The thickness of the extra infill that supports skin edges.", "unit": "mm", "default_value": 0, "minimum_value": "0", "maximum_value": "machine_height", "maximum_value_warning": "resolveOrValue('infill_sparse_thickness') * 10", "type": "float", "value": "0", "limit_to_extruder": "infill_extruder_nr", "enabled": "infill_sparse_density > 0", "settable_per_mesh": true, "children": { "skin_edge_support_layers": { "label": "Skin Edge Support Layers", "description": "The number of infill layers that supports skin edges.", "default_value": 0, "minimum_value": "0", "maximum_value_warning": "10", "type": "int", "maximum_value": "999999", "value": "math.ceil(round(skin_edge_support_thickness / resolveOrValue('infill_sparse_thickness'), 4))", "limit_to_extruder": "infill_extruder_nr", "enabled": "infill_sparse_density > 0", "settable_per_mesh": true } } }, "extra_infill_lines_to_support_skins": { "label": "Extra Infill Lines To Support Skins", "description": "Add extra lines into the infill pattern to support skins above. This option prevents holes or plastic blobs that sometime show in complex shaped skins due to the infill below not correctly supporting the skin layer being printed above. 'Walls' supports just the outlines of the skin, whereas 'Walls and Lines' also supports the ends of the lines that make up the skin.", "type": "enum", "options": { "walls_and_lines": "Walls and Lines", "walls": "Walls Only", "none": "None" }, "default_value": "walls_and_lines", "value": "'none' if infill_sparse_density > 50 else 'walls' if skin_edge_support_thickness > 0 else 'walls_and_lines'", "enabled": "infill_sparse_density > 0 and infill_pattern not in ('lightning', 'concentric', 'cross','cross_3d') and wall_line_count > 0 and top_layers > 0" }, "lightning_infill_support_angle": { "label": "Lightning Infill Support Angle", "description": "Determines when a lightning infill layer has to support anything above it. Measured in the angle given the thickness of a layer.", "unit": "\u00b0", "type": "float", "minimum_value": "0", "maximum_value": "90", "maximum_value_warning": "75", "default_value": 40, "limit_to_extruder": "infill_extruder_nr", "enabled": "infill_pattern == 'lightning'", "settable_per_mesh": false, "settable_per_extruder": true, "children": { "lightning_infill_overhang_angle": { "label": "Lightning Infill Overhang Angle", "description": "Determines when a lightning infill layer has to support the model above it. Measured in the angle given the thickness.", "unit": "\u00b0", "type": "float", "minimum_value": "0", "maximum_value": "90", "maximum_value_warning": "75", "default_value": 40, "limit_to_extruder": "infill_extruder_nr", "enabled": "infill_pattern == 'lightning'", "settable_per_mesh": false, "settable_per_extruder": true, "value": "lightning_infill_support_angle" }, "lightning_infill_prune_angle": { "label": "Lightning Infill Prune Angle", "description": "The endpoints of infill lines are shortened to save on material. This setting is the angle of overhang of the endpoints of these lines.", "unit": "\u00b0", "type": "float", "minimum_value": "0", "maximum_value": "90", "maximum_value_warning": "75", "default_value": 40, "limit_to_extruder": "infill_extruder_nr", "enabled": "infill_pattern == 'lightning'", "settable_per_mesh": false, "settable_per_extruder": true, "value": "lightning_infill_support_angle" }, "lightning_infill_straightening_angle": { "label": "Lightning Infill Straightening Angle", "description": "The infill lines are straightened out to save on printing time. This is the maximum angle of overhang allowed across the length of the infill line.", "unit": "\u00b0", "type": "float", "minimum_value": "0", "maximum_value": "90", "maximum_value_warning": "75", "default_value": 40, "limit_to_extruder": "infill_extruder_nr", "enabled": "infill_pattern == 'lightning'", "settable_per_mesh": false, "settable_per_extruder": true, "value": "lightning_infill_support_angle" } } } } }, "material": { "label": "Material", "icon": "Spool", "description": "Material", "type": "category", "children": { "default_material_print_temperature": { "label": "Default Printing Temperature", "description": "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value", "unit": "\u00b0C", "type": "float", "default_value": 210, "minimum_value_warning": "0", "maximum_value_warning": "285", "maximum_value": "365", "enabled": false, "settable_per_extruder": true, "settable_per_mesh": false, "minimum_value": "-273.15" }, "build_volume_temperature": { "label": "Build Volume Temperature", "description": "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted.", "unit": "\u00b0C", "type": "float", "default_value": 0, "resolve": "min(extruderValues('build_volume_temperature'))", "minimum_value": "-273.15", "minimum_value_warning": "0", "maximum_value_warning": "285", "enabled": "machine_heated_build_volume", "settable_per_mesh": false, "settable_per_extruder": false }, "material_print_temperature": { "label": "Printing Temperature", "description": "The temperature used for printing.", "unit": "\u00b0C", "type": "float", "default_value": 210, "value": "default_material_print_temperature", "minimum_value": "-273.15", "minimum_value_warning": "0", "maximum_value_warning": "285", "maximum_value": "365", "enabled": "machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, "material_print_temperature_layer_0": { "label": "Printing Temperature Initial Layer", "description": "The temperature used for printing the first layer.", "unit": "\u00b0C", "type": "float", "default_value": 215, "value": "material_print_temperature", "minimum_value": "-273.15", "minimum_value_warning": "0", "maximum_value_warning": "285", "maximum_value": "365", "enabled": "machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, "material_initial_print_temperature": { "label": "Initial Printing Temperature", "description": "The minimal temperature while heating up to the Printing Temperature at which printing can already start.", "unit": "\u00b0C", "type": "float", "default_value": 200, "value": "max(-273.15, material_print_temperature - 10)", "minimum_value": "-273.15", "minimum_value_warning": "material_standby_temperature", "maximum_value_warning": "material_print_temperature", "maximum_value": "365", "enabled": "machine_nozzle_temp_enabled and not machine_extruders_share_heater", "settable_per_mesh": false, "settable_per_extruder": true }, "material_final_print_temperature": { "label": "Final Printing Temperature", "description": "The temperature to which to already start cooling down just before the end of printing.", "unit": "\u00b0C", "type": "float", "default_value": 195, "value": "max(-273.15, material_print_temperature - 15)", "minimum_value": "-273.15", "minimum_value_warning": "material_standby_temperature", "maximum_value_warning": "material_print_temperature", "maximum_value": "365", "enabled": "machine_nozzle_temp_enabled and not machine_extruders_share_heater", "settable_per_mesh": false, "settable_per_extruder": true }, "material_extrusion_cool_down_speed": { "label": "Extrusion Cool Down Speed Modifier", "description": "The extra speed by which the nozzle cools while extruding. The same value is used to signify the heat up speed lost when heating up while extruding.", "unit": "\u00b0C/s", "type": "float", "default_value": 0.7, "minimum_value": "0", "maximum_value_warning": "10.0", "maximum_value": "machine_nozzle_heat_up_speed", "enabled": "extruders_enabled_count > 1 and material_final_print_temperature != material_print_temperature", "settable_per_mesh": false, "settable_per_extruder": true }, "default_material_bed_temperature": { "label": "Default Build Plate Temperature", "description": "The default temperature used for the heated build plate. This should be the \"base\" temperature of a build plate. All other print temperatures should use offsets based on this value", "unit": "\u00b0C", "type": "float", "resolve": "max(extruderValues('default_material_bed_temperature'))", "default_value": 60, "minimum_value": "-273.15", "minimum_value_warning": "build_volume_temperature", "maximum_value_warning": "130", "maximum_value": "200", "enabled": false, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "material_bed_temperature": { "label": "Build Plate Temperature", "description": "The temperature used for the heated build plate. If this is 0, the build plate is left unheated.", "unit": "\u00b0C", "type": "float", "default_value": 60, "value": "default_material_bed_temperature", "resolve": "max(extruderValues('material_bed_temperature'))", "minimum_value": "-273.15", "minimum_value_warning": "build_volume_temperature", "maximum_value_warning": "130", "maximum_value": "200", "enabled": "machine_heated_bed and machine_gcode_flavor != \"UltiGCode\"", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "material_bed_temperature_layer_0": { "label": "Build Plate Temperature Initial Layer", "description": "The temperature used for the heated build plate at the first layer. If this is 0, the build plate is left unheated during the first layer.", "unit": "\u00b0C", "type": "float", "resolve": "max(extruderValues('material_bed_temperature_layer_0'))", "default_value": 60, "value": "resolveOrValue('material_bed_temperature')", "minimum_value": "-273.15", "minimum_value_warning": "max(build_volume_temperature, max(extruderValues('material_bed_temperature')))", "maximum_value_warning": "130", "maximum_value": "200", "enabled": "machine_heated_bed and machine_gcode_flavor != \"UltiGCode\"", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "material_adhesion_tendency": { "label": "Adhesion Tendency", "description": "Surface adhesion tendency.", "type": "int", "default_value": 10, "minimum_value": "0", "maximum_value": "10", "enabled": false, "settable_per_mesh": false, "settable_per_extruder": true }, "material_surface_energy": { "label": "Surface Energy", "description": "Surface energy.", "unit": "%", "type": "int", "default_value": 100, "minimum_value": "0", "maximum_value": "100", "enabled": false, "settable_per_mesh": false, "settable_per_extruder": true }, "material_shrinkage_percentage": { "label": "Scaling Factor Shrinkage Compensation", "description": "To compensate for the shrinkage of the material as it cools down, the model will be scaled with this factor.", "unit": "%", "type": "float", "default_value": 100.0, "enabled": true, "minimum_value": "0.001", "minimum_value_warning": "100", "maximum_value_warning": "120", "settable_per_mesh": false, "settable_per_extruder": false, "resolve": "max(extruderValues(\"material_shrinkage_percentage\")) if any(extruderValues('material_is_support_material')) else sum(extruderValues(\"material_shrinkage_percentage\")) / len(extruderValues(\"material_shrinkage_percentage\"))", "children": { "material_shrinkage_percentage_xy": { "label": "Horizontal Scaling Factor Shrinkage Compensation", "description": "To compensate for the shrinkage of the material as it cools down, the model will be scaled with this factor in the XY-direction (horizontally).", "unit": "%", "type": "float", "default_value": 100.0, "enabled": true, "minimum_value": "0.001", "minimum_value_warning": "100", "maximum_value_warning": "120", "settable_per_mesh": false, "settable_per_extruder": false, "resolve": "max(extruderValues(\"material_shrinkage_percentage\")) if any(extruderValues('material_is_support_material')) else sum(extruderValues(\"material_shrinkage_percentage_xy\")) / len(extruderValues(\"material_shrinkage_percentage_xy\"))", "value": "material_shrinkage_percentage" }, "material_shrinkage_percentage_z": { "label": "Vertical Scaling Factor Shrinkage Compensation", "description": "To compensate for the shrinkage of the material as it cools down, the model will be scaled with this factor in the Z-direction (vertically).", "unit": "%", "type": "float", "default_value": 100.0, "enabled": true, "minimum_value": "0.001", "minimum_value_warning": "100", "maximum_value_warning": "120", "settable_per_mesh": false, "settable_per_extruder": false, "resolve": "max(extruderValues(\"material_shrinkage_percentage_z\")) if any(extruderValues('material_is_support_material')) else sum(extruderValues(\"material_shrinkage_percentage_z\")) / len(extruderValues(\"material_shrinkage_percentage_z\"))", "value": "material_shrinkage_percentage" } } }, "material_crystallinity": { "label": "Crystalline Material", "description": "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?", "type": "bool", "default_value": false, "enabled": false, "settable_per_mesh": false, "settable_per_extruder": true }, "material_anti_ooze_retracted_position": { "label": "Anti-ooze Retracted Position", "description": "How far the material needs to be retracted before it stops oozing.", "type": "float", "unit": "mm", "default_value": -4, "enabled": false, "minimum_value_warning": "-switch_extruder_retraction_amount", "maximum_value": "0", "settable_per_mesh": false, "settable_per_extruder": true }, "material_anti_ooze_retraction_speed": { "label": "Anti-ooze Retraction Speed", "description": "How fast the material needs to be retracted during a filament switch to prevent oozing.", "type": "float", "unit": "mm/s", "default_value": 5, "enabled": false, "minimum_value": "0", "maximum_value": "machine_max_feedrate_e", "settable_per_mesh": false, "settable_per_extruder": true }, "material_break_preparation_retracted_position": { "label": "Break Preparation Retracted Position", "description": "How far the filament can be stretched before it breaks, while heated.", "type": "float", "unit": "mm", "default_value": -16, "enabled": false, "minimum_value_warning": "-retraction_amount * 4", "maximum_value": "0", "settable_per_mesh": false, "settable_per_extruder": true }, "material_break_preparation_speed": { "label": "Break Preparation Retraction Speed", "description": "How fast the filament needs to be retracted just before breaking it off in a retraction.", "type": "float", "unit": "mm/s", "default_value": 2, "enabled": false, "minimum_value": "0", "maximum_value": "machine_max_feedrate_e", "settable_per_mesh": false, "settable_per_extruder": true }, "material_break_preparation_temperature": { "label": "Break Preparation Temperature", "description": "The temperature used to purge material, should be roughly equal to the highest possible printing temperature.", "type": "float", "unit": "\u00b0C", "default_value": 50, "value": "material_print_temperature", "enabled": false, "minimum_value": "-273.15", "maximum_value_warning": "300", "maximum_value": "365", "settable_per_mesh": false, "settable_per_extruder": true }, "material_break_retracted_position": { "label": "Break Retracted Position", "description": "How far to retract the filament in order to break it cleanly.", "type": "float", "unit": "mm", "default_value": -50, "enabled": false, "minimum_value_warning": "-100", "maximum_value": "0", "settable_per_mesh": false, "settable_per_extruder": true }, "material_break_speed": { "label": "Break Retraction Speed", "description": "The speed at which to retract the filament in order to break it cleanly.", "type": "float", "unit": "mm/s", "default_value": 25, "enabled": false, "minimum_value": "0", "maximum_value": "machine_max_feedrate_e", "settable_per_mesh": false, "settable_per_extruder": true }, "material_break_temperature": { "label": "Break Temperature", "description": "The temperature at which the filament is broken for a clean break.", "type": "float", "unit": "\u00b0C", "default_value": 50, "enabled": false, "minimum_value": "-273.15", "maximum_value": "365", "maximum_value_warning": "300", "settable_per_mesh": false, "settable_per_extruder": true }, "material_flush_purge_speed": { "label": "Flush Purge Speed", "description": "How fast to prime the material after switching to a different material.", "type": "float", "default_value": 0.5, "enabled": false }, "material_flush_purge_length": { "label": "Flush Purge Length", "description": "How much material to use to purge the previous material out of the nozzle (in length of filament) when switching to a different material.", "type": "float", "default_value": 60, "enabled": false }, "material_end_of_filament_purge_speed": { "label": "End of Filament Purge Speed", "description": "How fast to prime the material after replacing an empty spool with a fresh spool of the same material.", "type": "float", "default_value": 0.5, "enabled": false }, "material_end_of_filament_purge_length": { "label": "End of Filament Purge Length", "description": "How much material to use to purge the previous material out of the nozzle (in length of filament) when replacing an empty spool with a fresh spool of the same material.", "type": "float", "default_value": 20, "enabled": false }, "material_maximum_park_duration": { "label": "Maximum Park Duration", "description": "How long the material can be kept out of dry storage safely.", "type": "float", "default_value": 300, "enabled": false }, "material_no_load_move_factor": { "label": "No Load Move Factor", "description": "A factor indicating how much the filament gets compressed between the feeder and the nozzle chamber, used to determine how far to move the material for a filament switch.", "type": "float", "default_value": 0.940860215, "enabled": false }, "material_flow": { "label": "Flow", "description": "Flow compensation: the amount of material extruded is multiplied by this value.", "unit": "%", "default_value": 100, "type": "float", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "enabled": "machine_gcode_flavor != \"UltiGCode\"", "settable_per_mesh": true, "children": { "wall_material_flow": { "label": "Wall Flow", "description": "Flow compensation on wall lines.", "unit": "%", "type": "float", "default_value": 100, "value": "material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "limit_to_extruder": "wall_0_extruder_nr if wall_x_extruder_nr == wall_0_extruder_nr else -1", "settable_per_mesh": true, "children": { "wall_0_material_flow": { "label": "Outer Wall Flow", "description": "Flow compensation on the outermost wall line.", "unit": "%", "type": "float", "default_value": 100, "value": "wall_material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "wall_x_material_flow": { "label": "Inner Wall(s) Flow", "description": "Flow compensation on wall lines for all wall lines except the outermost one.", "unit": "%", "type": "float", "default_value": 100, "value": "wall_material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true }, "wall_0_material_flow_roofing": { "label": "Top Surface Outer Wall Flow", "description": "Flow compensation on the top surface outermost wall line.", "unit": "%", "type": "float", "default_value": 100, "value": "wall_0_material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "wall_x_material_flow_roofing": { "label": "Top Surface Inner Wall(s) Flow", "description": "Flow compensation on top surface wall lines for all wall lines except the outermost one.", "unit": "%", "type": "float", "default_value": 100, "value": "wall_x_material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } }, "skin_material_flow": { "label": "Top/Bottom Flow", "description": "Flow compensation on top/bottom lines.", "unit": "%", "type": "float", "default_value": 100, "value": "material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "roofing_material_flow": { "label": "Top Surface Skin Flow", "description": "Flow compensation on lines of the areas at the top of the print.", "unit": "%", "type": "float", "default_value": 100, "value": "skin_material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true, "enabled": "roofing_layer_count > 0 and top_layers > 0" }, "infill_material_flow": { "label": "Infill Flow", "description": "Flow compensation on infill lines.", "unit": "%", "type": "float", "default_value": 100, "value": "material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "enabled": "infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "skirt_brim_material_flow": { "label": "Skirt/Brim Flow", "description": "Flow compensation on skirt or brim lines.", "unit": "%", "type": "float", "default_value": 100, "value": "material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')", "settable_per_mesh": false, "settable_per_extruder": true }, "support_material_flow": { "label": "Support Flow", "description": "Flow compensation on support structure lines.", "unit": "%", "type": "float", "default_value": 100, "value": "material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "enabled": "support_enable or support_meshes_present", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true }, "support_interface_material_flow": { "label": "Support Interface Flow", "description": "Flow compensation on lines of support roof or floor.", "unit": "%", "type": "float", "default_value": 100, "value": "material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "enabled": "(support_enable or support_meshes_present) and support_interface_enable", "limit_to_extruder": "support_interface_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, "children": { "support_roof_material_flow": { "label": "Support Roof Flow", "description": "Flow compensation on support roof lines.", "unit": "%", "type": "float", "default_value": 100, "value": "extruderValue(support_roof_extruder_nr, 'support_interface_material_flow')", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "enabled": "(support_enable or support_meshes_present) and support_roof_enable", "limit_to_extruder": "support_roof_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true }, "support_bottom_material_flow": { "label": "Support Floor Flow", "description": "Flow compensation on support floor lines.", "unit": "%", "type": "float", "default_value": 100, "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_material_flow')", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "enabled": "(support_enable or support_meshes_present) and support_bottom_enable", "limit_to_extruder": "support_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true } } }, "prime_tower_flow": { "label": "Prime Tower Flow", "description": "Flow compensation on prime tower lines.", "unit": "%", "type": "float", "default_value": 100, "value": "material_flow", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "settable_per_mesh": false, "settable_per_extruder": true } } }, "material_flow_layer_0": { "label": "Initial Layer Flow", "description": "Flow compensation for the first layer: the amount of material extruded on the initial layer is multiplied by this value.", "unit": "%", "default_value": 100, "type": "float", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "settable_per_mesh": true }, "wall_x_material_flow_layer_0": { "label": "Initial Layer Inner Wall Flow", "description": "Flow compensation on wall lines for all wall lines except the outermost one, but only for the first layer", "unit": "%", "type": "float", "default_value": 100, "value": "material_flow_layer_0", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true }, "wall_0_material_flow_layer_0": { "label": "Initial Layer Outer Wall Flow", "description": "Flow compensation on the outermost wall line of the first layer.", "unit": "%", "type": "float", "default_value": 100, "value": "material_flow_layer_0", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "skin_material_flow_layer_0": { "label": "Initial Layer Bottom Flow", "description": "Flow compensation on bottom lines of the first layer", "unit": "%", "type": "float", "default_value": 100, "value": "material_flow_layer_0", "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", "enabled": "bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "material_standby_temperature": { "label": "Standby Temperature", "description": "The temperature of the nozzle when another nozzle is currently used for printing.", "type": "float", "unit": "\u00b0C", "default_value": 150, "minimum_value": "-273.15", "minimum_value_warning": "0", "maximum_value_warning": "260", "maximum_value": "365", "enabled": "extruders_enabled_count > 1 and machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, "material_is_support_material": { "label": "Is support material", "description": "Is this material typically used as a support material during printing.", "type": "bool", "default_value": false, "enabled": false, "settable_per_mesh": false, "settable_per_extruder": true }, "gradual_flow_enabled": { "label": "Gradual flow enabled", "description": "Enable gradual flow changes. When enabled, the flow is gradually increased/decreased to the target flow. This is useful for printers with a bowden tube where the flow is not immediately changed when the extruder motor starts/stops.", "type": "bool", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": true }, "max_flow_acceleration": { "enabled": "gradual_flow_enabled", "label": "Gradual flow max acceleration", "description": "Maximum acceleration for gradual flow changes", "type": "float", "unit": "mm\u00b3/s\u00b2", "default_value": 1, "minimum_value_warning": 0.1, "maximum_value_warning": 99999, "minimum_value": 0.01, "settable_per_mesh": false, "settable_per_extruder": true, "comments": "when enabled, each second the flow will at max be increased/decreased by this value" }, "layer_0_max_flow_acceleration": { "enabled": "gradual_flow_enabled", "value": "max_flow_acceleration", "label": "Initial layer max flow acceleration", "description": "Minimum speed for gradual flow changes for the first layer", "type": "float", "unit": "mm\u00b3/s\u00b2", "default_value": 1, "minimum_value_warning": 0.1, "maximum_value_warning": 99999, "minimum_value": 0.01, "settable_per_mesh": false, "settable_per_extruder": true }, "gradual_flow_discretisation_step_size": { "enabled": "gradual_flow_enabled", "label": "Gradual flow discretisation step size", "description": "Duration of each step in the gradual flow change", "type": "float", "unit": "s", "default_value": 0.2, "maximum_value_warning": 1.0, "maximum_value": 5.0, "minimum_value_warning": 0.1, "minimum_value": 0.01, "settable_per_mesh": false, "settable_per_extruder": true } } }, "speed": { "label": "Speed", "icon": "SpeedOMeter", "description": "Speed", "type": "category", "children": { "speed_print": { "label": "Print Speed", "description": "The speed at which printing happens.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", "maximum_value_warning": "150", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "default_value": 60, "settable_per_mesh": true, "children": { "speed_infill": { "label": "Infill Speed", "description": "The speed at which infill is printed.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "default_value": 60, "value": "speed_print", "enabled": "infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "speed_wall": { "label": "Wall Speed", "description": "The speed at which the walls are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "default_value": 30, "value": "speed_print / 2", "settable_per_mesh": true, "children": { "speed_wall_0": { "label": "Outer Wall Speed", "description": "The speed at which the outermost walls are printed. Printing the outer wall at a lower speed improves the final skin quality. However, having a large difference between the inner wall speed and the outer wall speed will affect quality in a negative way.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "default_value": 30, "value": "speed_wall", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "speed_wall_x": { "label": "Inner Wall Speed", "description": "The speed at which all inner walls are printed. Printing the inner wall faster than the outer wall will reduce printing time. It works well to set this in between the outer wall speed and the infill speed.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "default_value": 60, "value": "speed_wall * 2", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true }, "speed_wall_0_roofing": { "label": "Top Surface Outer Wall Speed", "description": "The speed at which the top surface outermost wall is printed.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "default_value": 30, "value": "speed_wall_0", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "speed_wall_x_roofing": { "label": "Top Surface Inner Wall Speed", "description": "The speed at which the top surface inner walls are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "default_value": 60, "value": "speed_wall_x", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } }, "speed_roofing": { "label": "Top Surface Skin Speed", "description": "The speed at which top surface skin layers are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "default_value": 25, "value": "speed_topbottom", "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true, "enabled": "roofing_layer_count > 0 and top_layers > 0" }, "speed_topbottom": { "label": "Top/Bottom Speed", "description": "The speed at which top/bottom layers are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "default_value": 30, "value": "speed_print / 2", "limit_to_extruder": "top_bottom_extruder_nr", "enabled": "top_layers > 0 or bottom_layers > 0", "settable_per_mesh": true }, "speed_support": { "label": "Support Speed", "description": "The speed at which the support structure is printed. Printing support at higher speeds can greatly reduce printing time. The surface quality of the support structure is not important since it is removed after printing.", "unit": "mm/s", "type": "float", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "default_value": 60, "value": "speed_print", "enabled": "support_enable or support_meshes_present", "settable_per_mesh": false, "limit_to_extruder": "support_extruder_nr", "settable_per_extruder": true, "children": { "speed_support_infill": { "label": "Support Infill Speed", "description": "The speed at which the infill of support is printed. Printing the infill at lower speeds improves stability.", "unit": "mm/s", "type": "float", "default_value": 60, "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "value": "speed_support", "enabled": "support_enable or support_meshes_present", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true }, "speed_support_interface": { "label": "Support Interface Speed", "description": "The speed at which the roofs and floors of support are printed. Printing them at lower speeds can improve overhang quality.", "unit": "mm/s", "type": "float", "default_value": 40, "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "enabled": "support_interface_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_interface_extruder_nr", "value": "speed_support / 1.5", "settable_per_mesh": false, "settable_per_extruder": true, "children": { "speed_support_roof": { "label": "Support Roof Speed", "description": "The speed at which the roofs of support are printed. Printing them at lower speeds can improve overhang quality.", "unit": "mm/s", "type": "float", "default_value": 40, "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "enabled": "support_roof_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_roof_extruder_nr", "value": "extruderValue(support_roof_extruder_nr, 'speed_support_interface')", "settable_per_mesh": false, "settable_per_extruder": true }, "speed_support_bottom": { "label": "Support Floor Speed", "description": "The speed at which the floor of support is printed. Printing it at lower speed can improve adhesion of support on top of your model.", "unit": "mm/s", "type": "float", "default_value": 40, "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "enabled": "support_bottom_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_bottom_extruder_nr", "value": "extruderValue(support_bottom_extruder_nr, 'speed_support_interface')", "settable_per_mesh": false, "settable_per_extruder": true } } } } }, "speed_prime_tower": { "label": "Prime Tower Speed", "description": "The speed at which the prime tower is printed. Printing the prime tower slower can make it more stable when the adhesion between the different filaments is suboptimal.", "type": "float", "unit": "mm/s", "enabled": "prime_tower_enable", "default_value": 60, "value": "speed_print", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "settable_per_mesh": false, "settable_per_extruder": true } } }, "speed_travel": { "label": "Travel Speed", "description": "The speed at which travel moves are made.", "unit": "mm/s", "type": "float", "default_value": 120, "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "300", "value": "speed_print if magic_spiralize else 120", "settable_per_mesh": false, "settable_per_extruder": true }, "speed_layer_0": { "label": "Initial Layer Speed", "description": "The speed for the initial layer. A lower value is advised to improve adhesion to the build plate. Does not affect the build plate adhesion structures themselves, like brim and raft.", "unit": "mm/s", "type": "float", "enabled": "speed_slowdown_layers > 0", "default_value": 30, "value": "speed_print * 30 / 60", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "300", "settable_per_mesh": true, "children": { "speed_print_layer_0": { "label": "Initial Layer Print Speed", "description": "The speed of printing for the initial layer. A lower value is advised to improve adhesion to the build plate.", "unit": "mm/s", "type": "float", "enabled": "speed_slowdown_layers > 0", "default_value": 30, "value": "speed_layer_0", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "300", "settable_per_mesh": true }, "speed_travel_layer_0": { "label": "Initial Layer Travel Speed", "description": "The speed of travel moves in the initial layer. A lower value is advised to prevent pulling previously printed parts away from the build plate. The value of this setting can automatically be calculated from the ratio between the Travel Speed and the Print Speed.", "unit": "mm/s", "type": "float", "enabled": "speed_slowdown_layers > 0", "default_value": 60, "value": "speed_layer_0 * speed_travel / speed_print", "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "300", "settable_per_extruder": true, "settable_per_mesh": false } } }, "skirt_brim_speed": { "label": "Skirt/Brim Speed", "description": "The speed at which the skirt and brim are printed. Normally this is done at the initial layer speed, but sometimes you might want to print the skirt or brim at a different speed.", "unit": "mm/s", "type": "float", "default_value": 30, "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "300", "value": "speed_layer_0", "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "skirt_brim_extruder_nr" }, "speed_z_hop": { "label": "Z Hop Speed", "description": "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move.", "unit": "mm/s", "type": "float", "default_value": 10, "minimum_value": "0", "maximum_value": "machine_max_feedrate_z", "settable_per_mesh": false, "settable_per_extruder": true }, "speed_slowdown_layers": { "label": "Number of Slower Layers", "description": "The first few layers are printed slower than the rest of the model, to get better adhesion to the build plate and improve the overall success rate of prints. The speed is gradually increased over these layers.", "type": "int", "default_value": 2, "resolve": "round(sum(extruderValues('speed_slowdown_layers')) / len(extruderValues('speed_slowdown_layers')))", "minimum_value": "0", "maximum_value": "999999", "maximum_value_warning": "3.2 / resolveOrValue('layer_height')", "settable_per_mesh": false, "settable_per_extruder": false }, "speed_equalize_flow_width_factor": { "label": "Flow Equalization Ratio", "description": "Extrusion width based correction factor on the speed. At 0% the movement speed is kept constant at the Print Speed. At 100% the movement speed is adjusted so that the flow (in mm\u00b3/s) is kept constant, i.e. lines half the normal Line Width are printed twice as fast and lines twice as wide are printed half as fast. A value larger than 100% can help to compensate for the higher pressure required to extrude wide lines.", "type": "float", "unit": "%", "default_value": 100.0, "minimum_value": "0.0", "maximum_value_warning": "200.0", "settable_per_mesh": false, "settable_per_extruder": true }, "acceleration_enabled": { "label": "Enable Acceleration Control", "description": "Enables adjusting the print head acceleration. Increasing the accelerations can reduce printing time at the cost of print quality.", "type": "bool", "default_value": false, "resolve": "any(extruderValues('acceleration_enabled'))", "settable_per_mesh": false, "settable_per_extruder": false }, "acceleration_travel_enabled": { "label": "Enable Travel Acceleration", "description": "Use a separate acceleration rate for travel moves. If disabled, travel moves will use the acceleration value of the printed line at their destination.", "type": "bool", "default_value": true, "resolve": "any(extruderValues('acceleration_travel_enabled'))", "enabled": "acceleration_enabled", "settable_per_mesh": false, "settable_per_extruder": false }, "acceleration_print": { "label": "Print Acceleration", "description": "The acceleration with which printing happens.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "enabled": "resolveOrValue('acceleration_enabled')", "settable_per_mesh": true, "children": { "acceleration_infill": { "label": "Infill Acceleration", "description": "The acceleration with which infill is printed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", "enabled": "resolveOrValue('acceleration_enabled') and infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "acceleration_wall": { "label": "Wall Acceleration", "description": "The acceleration with which the walls are printed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", "enabled": "resolveOrValue('acceleration_enabled')", "settable_per_mesh": true, "children": { "acceleration_wall_0": { "label": "Outer Wall Acceleration", "description": "The acceleration with which the outermost walls are printed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_wall", "enabled": "resolveOrValue('acceleration_enabled')", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "acceleration_wall_x": { "label": "Inner Wall Acceleration", "description": "The acceleration with which all inner walls are printed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_wall", "enabled": "resolveOrValue('acceleration_enabled')", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true }, "acceleration_wall_0_roofing": { "label": "Top Surface Outer Wall Acceleration", "description": "The acceleration with which the top surface outermost walls are printed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_wall_0", "enabled": "resolveOrValue('acceleration_enabled')", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "acceleration_wall_x_roofing": { "label": "Top Surface Inner Wall Acceleration", "description": "The acceleration with which the top surface inner walls are printed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_wall_x", "enabled": "resolveOrValue('acceleration_enabled')", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } }, "acceleration_roofing": { "label": "Top Surface Skin Acceleration", "description": "The acceleration with which top surface skin layers are printed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_topbottom", "enabled": "resolveOrValue('acceleration_enabled') and roofing_layer_count > 0 and top_layers > 0", "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true }, "acceleration_topbottom": { "label": "Top/Bottom Acceleration", "description": "The acceleration with which top/bottom layers are printed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", "enabled": "resolveOrValue('acceleration_enabled')", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "acceleration_support": { "label": "Support Acceleration", "description": "The acceleration with which the support structure is printed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", "enabled": "resolveOrValue('acceleration_enabled') and (support_enable or support_meshes_present)", "settable_per_mesh": false, "limit_to_extruder": "support_extruder_nr", "settable_per_extruder": true, "children": { "acceleration_support_infill": { "label": "Support Infill Acceleration", "description": "The acceleration with which the infill of support is printed.", "unit": "mm/s\u00b2", "type": "float", "default_value": 3000, "value": "acceleration_support", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "enabled": "resolveOrValue('acceleration_enabled') and (support_enable or support_meshes_present)", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true }, "acceleration_support_interface": { "label": "Support Interface Acceleration", "description": "The acceleration with which the roofs and floors of support are printed. Printing them at lower acceleration can improve overhang quality.", "unit": "mm/s\u00b2", "type": "float", "default_value": 3000, "value": "acceleration_support", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "enabled": "resolveOrValue('acceleration_enabled') and support_interface_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_interface_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, "children": { "acceleration_support_roof": { "label": "Support Roof Acceleration", "description": "The acceleration with which the roofs of support are printed. Printing them at lower acceleration can improve overhang quality.", "unit": "mm/s\u00b2", "type": "float", "default_value": 3000, "value": "extruderValue(support_roof_extruder_nr, 'acceleration_support_interface')", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "enabled": "acceleration_enabled and support_roof_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_roof_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true }, "acceleration_support_bottom": { "label": "Support Floor Acceleration", "description": "The acceleration with which the floors of support are printed. Printing them at lower acceleration can improve adhesion of support on top of your model.", "unit": "mm/s\u00b2", "type": "float", "default_value": 3000, "value": "extruderValue(support_bottom_extruder_nr, 'acceleration_support_interface')", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "enabled": "acceleration_enabled and support_bottom_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true } } } } }, "acceleration_prime_tower": { "label": "Prime Tower Acceleration", "description": "The acceleration with which the prime tower is printed.", "unit": "mm/s\u00b2", "type": "float", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", "enabled": "prime_tower_enable and resolveOrValue('acceleration_enabled')", "settable_per_mesh": false } } }, "acceleration_travel": { "label": "Travel Acceleration", "description": "The acceleration with which travel moves are made.", "unit": "mm/s\u00b2", "type": "float", "default_value": 5000, "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "value": "acceleration_print if magic_spiralize else 5000", "enabled": "resolveOrValue('acceleration_enabled') and resolveOrValue('acceleration_travel_enabled')", "settable_per_mesh": false }, "acceleration_layer_0": { "label": "Initial Layer Acceleration", "description": "The acceleration for the initial layer.", "unit": "mm/s\u00b2", "type": "float", "default_value": 3000, "value": "acceleration_print", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "enabled": "resolveOrValue('acceleration_enabled')", "settable_per_mesh": true, "children": { "acceleration_print_layer_0": { "label": "Initial Layer Print Acceleration", "description": "The acceleration during the printing of the initial layer.", "unit": "mm/s\u00b2", "type": "float", "default_value": 3000, "value": "acceleration_layer_0", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "enabled": "resolveOrValue('acceleration_enabled')", "settable_per_mesh": true }, "acceleration_travel_layer_0": { "label": "Initial Layer Travel Acceleration", "description": "The acceleration for travel moves in the initial layer.", "unit": "mm/s\u00b2", "type": "float", "default_value": 3000, "value": "acceleration_layer_0 * acceleration_travel / acceleration_print", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "enabled": "resolveOrValue('acceleration_enabled') and resolveOrValue('acceleration_travel_enabled')", "settable_per_extruder": true, "settable_per_mesh": false } } }, "acceleration_skirt_brim": { "label": "Skirt/Brim Acceleration", "description": "The acceleration with which the skirt and brim are printed. Normally this is done with the initial layer acceleration, but sometimes you might want to print the skirt or brim at a different acceleration.", "unit": "mm/s\u00b2", "type": "float", "default_value": 3000, "value": "acceleration_layer_0", "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", "enabled": "resolveOrValue('acceleration_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))", "settable_per_mesh": false, "limit_to_extruder": "skirt_brim_extruder_nr" }, "jerk_enabled": { "label": "Enable Jerk Control", "description": "Enables adjusting the jerk of print head when the velocity in the X or Y axis changes. Increasing the jerk can reduce printing time at the cost of print quality.", "type": "bool", "default_value": false, "resolve": "any(extruderValues('jerk_enabled'))", "settable_per_mesh": false, "settable_per_extruder": false }, "jerk_travel_enabled": { "label": "Enable Travel Jerk", "description": "Use a separate jerk rate for travel moves. If disabled, travel moves will use the jerk value of the printed line at their destination.", "type": "bool", "default_value": true, "resolve": "any(extruderValues('jerk_travel_enabled'))", "enabled": "jerk_enabled", "settable_per_mesh": false, "settable_per_extruder": false }, "jerk_print": { "label": "Print Jerk", "description": "The maximum instantaneous velocity change of the print head.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true, "children": { "jerk_infill": { "label": "Infill Jerk", "description": "The maximum instantaneous velocity change with which infill is printed.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", "enabled": "resolveOrValue('jerk_enabled') and infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "jerk_wall": { "label": "Wall Jerk", "description": "The maximum instantaneous velocity change with which the walls are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true, "children": { "jerk_wall_0": { "label": "Outer Wall Jerk", "description": "The maximum instantaneous velocity change with which the outermost walls are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_wall", "enabled": "resolveOrValue('jerk_enabled')", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "jerk_wall_x": { "label": "Inner Wall Jerk", "description": "The maximum instantaneous velocity change with which all inner walls are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_wall", "enabled": "resolveOrValue('jerk_enabled')", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true }, "jerk_wall_0_roofing": { "label": "Top Surface Outer Wall Jerk", "description": "The maximum instantaneous velocity change with which the top surface outermost walls are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_wall_0", "enabled": "resolveOrValue('jerk_enabled')", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "jerk_wall_x_roofing": { "label": "Top Surface Inner Wall Jerk", "description": "The maximum instantaneous velocity change with which the top surface inner walls are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_wall_x", "enabled": "resolveOrValue('jerk_enabled')", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } }, "jerk_roofing": { "label": "Top Surface Skin Jerk", "description": "The maximum instantaneous velocity change with which top surface skin layers are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_topbottom", "enabled": "resolveOrValue('jerk_enabled') and roofing_layer_count > 0 and top_layers > 0", "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true }, "jerk_topbottom": { "label": "Top/Bottom Jerk", "description": "The maximum instantaneous velocity change with which top/bottom layers are printed.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", "enabled": "(top_layers > 0 or bottom_layers > 0) and resolveOrValue('jerk_enabled')", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "jerk_support": { "label": "Support Jerk", "description": "The maximum instantaneous velocity change with which the support structure is printed.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", "enabled": "resolveOrValue('jerk_enabled') and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_extruder_nr", "children": { "jerk_support_infill": { "label": "Support Infill Jerk", "description": "The maximum instantaneous velocity change with which the infill of support is printed.", "unit": "mm/s", "type": "float", "default_value": 20, "value": "jerk_support", "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and (support_enable or support_meshes_present)", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true }, "jerk_support_interface": { "label": "Support Interface Jerk", "description": "The maximum instantaneous velocity change with which the roofs and floors of support are printed.", "unit": "mm/s", "type": "float", "default_value": 20, "value": "jerk_support", "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_interface_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_interface_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, "children": { "jerk_support_roof": { "label": "Support Roof Jerk", "description": "The maximum instantaneous velocity change with which the roofs of support are printed.", "unit": "mm/s", "type": "float", "default_value": 20, "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')", "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_roof_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_roof_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true }, "jerk_support_bottom": { "label": "Support Floor Jerk", "description": "The maximum instantaneous velocity change with which the floors of support are printed.", "unit": "mm/s", "type": "float", "default_value": 20, "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')", "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_bottom_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true } } } } }, "jerk_prime_tower": { "label": "Prime Tower Jerk", "description": "The maximum instantaneous velocity change with which the prime tower is printed.", "unit": "mm/s", "type": "float", "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", "enabled": "prime_tower_enable and resolveOrValue('jerk_enabled')", "settable_per_mesh": false } } }, "jerk_travel": { "label": "Travel Jerk", "description": "The maximum instantaneous velocity change with which travel moves are made.", "unit": "mm/s", "type": "float", "default_value": 30, "minimum_value": "0", "maximum_value_warning": "50", "value": "jerk_print if magic_spiralize else 30", "enabled": "resolveOrValue('jerk_enabled') and resolveOrValue('jerk_travel_enabled')", "settable_per_mesh": false }, "jerk_layer_0": { "label": "Initial Layer Jerk", "description": "The print maximum instantaneous velocity change for the initial layer.", "unit": "mm/s", "type": "float", "default_value": 20, "value": "jerk_print", "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true, "children": { "jerk_print_layer_0": { "label": "Initial Layer Print Jerk", "description": "The maximum instantaneous velocity change during the printing of the initial layer.", "unit": "mm/s", "type": "float", "default_value": 20, "value": "jerk_layer_0", "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true }, "jerk_travel_layer_0": { "label": "Initial Layer Travel Jerk", "description": "The acceleration for travel moves in the initial layer.", "unit": "mm/s", "type": "float", "default_value": 20, "value": "jerk_layer_0 * jerk_travel / jerk_print", "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and resolveOrValue('jerk_travel_enabled')", "settable_per_extruder": true, "settable_per_mesh": false } } }, "jerk_skirt_brim": { "label": "Skirt/Brim Jerk", "description": "The maximum instantaneous velocity change with which the skirt and brim are printed.", "unit": "mm/s", "type": "float", "default_value": 20, "minimum_value": "0", "maximum_value_warning": "50", "value": "jerk_layer_0", "enabled": "resolveOrValue('jerk_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))", "settable_per_mesh": false, "limit_to_extruder": "skirt_brim_extruder_nr" } } }, "travel": { "label": "Travel", "icon": "PrintTravel", "description": "travel", "type": "category", "children": { "retraction_enable": { "label": "Enable Retraction", "description": "Retract the filament when the nozzle is moving over a non-printed area.", "type": "bool", "default_value": true, "settable_per_mesh": false, "settable_per_extruder": true }, "retract_at_layer_change": { "label": "Retract at Layer Change", "description": "Retract the filament when the nozzle is moving to the next layer.", "type": "bool", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": true }, "retraction_amount": { "label": "Retraction Distance", "description": "The length of material retracted during a retraction move.", "unit": "mm", "type": "float", "default_value": 6.5, "minimum_value_warning": "-0.0001", "maximum_value_warning": "10.0", "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"", "settable_per_mesh": false, "settable_per_extruder": true }, "retraction_speed": { "label": "Retraction Speed", "description": "The speed at which the filament is retracted and primed during a retraction move.", "unit": "mm/s", "type": "float", "default_value": 25, "minimum_value": "0.0001", "minimum_value_warning": "1", "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value_warning": "70", "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"", "settable_per_mesh": true, "settable_per_extruder": true, "children": { "retraction_retract_speed": { "label": "Retraction Retract Speed", "description": "The speed at which the filament is retracted during a retraction move.", "unit": "mm/s", "type": "float", "default_value": 25, "minimum_value": "0.0001", "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')", "minimum_value_warning": "1", "maximum_value_warning": "70", "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"", "value": "retraction_speed", "settable_per_mesh": true, "settable_per_extruder": true }, "retraction_prime_speed": { "label": "Retraction Prime Speed", "description": "The speed at which the filament is primed during a retraction move.", "unit": "mm/s", "type": "float", "default_value": 25, "minimum_value": "0.0001", "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')", "minimum_value_warning": "1", "maximum_value_warning": "70", "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"", "value": "retraction_speed", "settable_per_mesh": true, "settable_per_extruder": true } } }, "retraction_extra_prime_amount": { "label": "Retraction Extra Prime Amount", "description": "Some material can ooze away during a travel move, which can be compensated for here.", "unit": "mm\u00b3", "type": "float", "default_value": 0, "minimum_value_warning": "-0.0001", "maximum_value_warning": "5.0", "enabled": "retraction_enable", "settable_per_mesh": true, "settable_per_extruder": true }, "retraction_min_travel": { "label": "Retraction Minimum Travel", "description": "The minimum distance of travel needed for a retraction to happen at all. This helps to get fewer retractions in a small area.", "unit": "mm", "type": "float", "default_value": 1.5, "value": "line_width * 2", "minimum_value": "0", "minimum_value_warning": "line_width * 1.5", "maximum_value_warning": "10", "settable_per_mesh": true, "settable_per_extruder": true }, "retraction_count_max": { "label": "Maximum Retraction Count", "description": "This setting limits the number of retractions occurring within the minimum extrusion distance window. Further retractions within this window will be ignored. This avoids retracting repeatedly on the same piece of filament, as that can flatten the filament and cause grinding issues.", "default_value": 90, "minimum_value": "0", "maximum_value_warning": "100", "maximum_value": 999999999, "type": "int", "enabled": "retraction_enable", "settable_per_mesh": false, "settable_per_extruder": true }, "retraction_extrusion_window": { "label": "Minimum Extrusion Distance Window", "description": "The window in which the maximum retraction count is enforced. This value should be approximately the same as the retraction distance, so that effectively the number of times a retraction passes the same patch of material is limited.", "unit": "mm", "type": "float", "default_value": 4.5, "minimum_value": "0", "maximum_value_warning": "retraction_amount * 2", "value": "retraction_amount", "enabled": "retraction_enable", "settable_per_mesh": false, "settable_per_extruder": true }, "retraction_combing": { "label": "Combing Mode", "description": "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill.", "type": "enum", "options": { "off": "Off", "all": "All", "no_outer_surfaces": "Not on Outer Surface", "noskin": "Not in Skin", "infill": "Within Infill" }, "default_value": "all", "value": "'no_outer_surfaces' if (any(extruderValues('skin_monotonic')) or any(extruderValues('ironing_enabled')) or (any(extruderValues('roofing_monotonic')) and any(extruderValues('roofing_layer_count')))) else 'all'", "resolve": "'noskin' if 'noskin' in extruderValues('retraction_combing') else ('infill' if 'infill' in extruderValues('retraction_combing') else ('all' if 'all' in extruderValues('retraction_combing') else ('no_outer_surfaces' if 'no_outer_surfaces' in extruderValues('retraction_combing') else 'off')))", "settable_per_mesh": false, "settable_per_extruder": false }, "retraction_combing_max_distance": { "label": "Max Comb Distance With No Retract", "description": "When greater than zero, combing travel moves that are longer than this distance will use retraction. If set to zero, there is no maximum and combing moves will not use retraction.", "unit": "mm", "type": "float", "default_value": 0, "minimum_value": "0", "enabled": "resolveOrValue('retraction_combing') != 'off'", "settable_per_mesh": false, "settable_per_extruder": true }, "travel_retract_before_outer_wall": { "label": "Retract Before Outer Wall", "description": "Always retract when moving to start an outer wall.", "type": "bool", "default_value": false, "enabled": "retraction_enable", "settable_per_mesh": false, "settable_per_extruder": false }, "travel_avoid_other_parts": { "label": "Avoid Printed Parts When Traveling", "description": "The nozzle avoids already printed parts when traveling. This option is only available when combing is enabled.", "type": "bool", "default_value": true, "enabled": "resolveOrValue('retraction_combing') != 'off'", "settable_per_mesh": false, "settable_per_extruder": true }, "travel_avoid_supports": { "label": "Avoid Supports When Traveling", "description": "The nozzle avoids already printed supports when traveling. This option is only available when combing is enabled.", "type": "bool", "default_value": false, "enabled": "resolveOrValue('retraction_combing') != 'off' and travel_avoid_other_parts", "settable_per_mesh": false, "settable_per_extruder": true }, "travel_avoid_distance": { "label": "Travel Avoid Distance", "description": "The distance between the nozzle and already printed parts when avoiding during travel moves.", "unit": "mm", "type": "float", "default_value": 0.625, "value": "machine_nozzle_tip_outer_diameter / 2 * 1.25", "minimum_value": "0", "minimum_value_warning": "machine_nozzle_tip_outer_diameter * 0.5", "maximum_value_warning": "machine_nozzle_tip_outer_diameter * 5", "enabled": "resolveOrValue('retraction_combing') != 'off' and travel_avoid_other_parts", "settable_per_mesh": false, "settable_per_extruder": true }, "layer_start_x": { "label": "Layer Start X", "description": "The X coordinate of the position near where to find the part to start printing each layer.", "unit": "mm", "type": "float", "default_value": 0.0, "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))", "minimum_value": "machine_width / -2 if machine_center_is_zero else 0", "settable_per_mesh": false, "settable_per_extruder": true, "settable_per_meshgroup": true }, "layer_start_y": { "label": "Layer Start Y", "description": "The Y coordinate of the position near where to find the part to start printing each layer.", "unit": "mm", "type": "float", "default_value": 0.0, "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))", "minimum_value": "machine_depth / -2 if machine_center_is_zero else 0", "settable_per_mesh": false, "settable_per_extruder": true, "settable_per_meshgroup": true }, "retraction_hop_enabled": { "label": "Z Hop When Retracted", "description": "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate.", "type": "bool", "default_value": false, "enabled": "retraction_enable", "settable_per_mesh": false, "settable_per_extruder": true }, "retraction_hop_only_when_collides": { "label": "Z Hop Only Over Printed Parts", "description": "Only perform a Z Hop when moving over printed parts which cannot be avoided by horizontal motion by Avoid Printed Parts when Traveling.", "type": "bool", "default_value": false, "enabled": "retraction_enable and retraction_hop_enabled and travel_avoid_other_parts", "settable_per_mesh": true, "settable_per_extruder": true }, "retraction_hop": { "label": "Z Hop Height", "description": "The height difference when performing a Z Hop.", "unit": "mm", "type": "float", "default_value": 1, "minimum_value_warning": "0", "maximum_value_warning": "10", "enabled": "retraction_enable and retraction_hop_enabled", "settable_per_mesh": true, "settable_per_extruder": true }, "retraction_hop_after_extruder_switch": { "label": "Z Hop After Extruder Switch", "description": "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print.", "type": "bool", "default_value": true, "enabled": "retraction_hop_enabled and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": true }, "retraction_hop_after_extruder_switch_height": { "label": "Z Hop After Extruder Switch Height", "description": "The height difference when performing a Z Hop after extruder switch.", "unit": "mm", "type": "float", "default_value": 1, "value": "retraction_hop", "minimum_value_warning": "0", "maximum_value_warning": "10", "enabled": "retraction_enable and retraction_hop_after_extruder_switch and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": true } } }, "cooling": { "label": "Cooling", "icon": "Fan", "description": "Cooling", "type": "category", "children": { "cool_fan_enabled": { "label": "Enable Print Cooling", "description": "Enables the print cooling fans while printing. The fans improve print quality on layers with short layer times and bridging / overhangs.", "type": "bool", "default_value": true, "settable_per_mesh": false, "settable_per_extruder": true }, "build_fan_full_at_height": { "label": "Build Fan Speed at Height", "description": "The height at which the fans spin on regular fan speed. At the layers below the fan speed gradually increases from Initial Fan Speed to Regular Fan Speed.", "unit": "mm", "type": "float", "default_value": 0, "minimum_value": "0", "enabled": "build_volume_fan_nr != 0", "maximum_value_warning": "10.0", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false, "children": { "build_fan_full_layer": { "label": "Build Fan Speed at Layer", "description": "The layer at which the build fans spin on full fan speed. This value is calculated and rounded to a whole number.", "type": "int", "default_value": 0, "minimum_value": "0", "enabled": "build_volume_fan_nr != 0", "maximum_value_warning": "10 / resolveOrValue('layer_height')", "value": "max(1, int(math.floor((build_fan_full_at_height - resolveOrValue('layer_height_0')) / resolveOrValue('layer_height')) + 2))", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false } } }, "cool_fan_speed": { "label": "Fan Speed", "description": "The speed at which the print cooling fans spin.", "unit": "%", "type": "float", "minimum_value": "0", "maximum_value": "100", "default_value": 100, "value": "100.0 if cool_fan_enabled else 0.0", "enabled": "cool_fan_enabled", "settable_per_mesh": false, "settable_per_extruder": true, "children": { "cool_fan_speed_min": { "label": "Regular Fan Speed", "description": "The speed at which the fans spin before hitting the threshold. When a layer prints faster than the threshold, the fan speed gradually inclines towards the maximum fan speed.", "unit": "%", "type": "float", "minimum_value": "0", "maximum_value": "100", "value": "cool_fan_speed", "default_value": 100, "enabled": "cool_fan_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, "cool_fan_speed_max": { "label": "Maximum Fan Speed", "description": "The speed at which the fans spin on the minimum layer time. The fan speed gradually increases between the regular fan speed and maximum fan speed when the threshold is hit.", "unit": "%", "type": "float", "minimum_value": "0", "maximum_value": "100", "default_value": 100, "enabled": "cool_fan_enabled", "value": "cool_fan_speed", "settable_per_mesh": false, "settable_per_extruder": true } } }, "cool_min_layer_time_fan_speed_max": { "label": "Regular/Maximum Fan Speed Threshold", "description": "The layer time which sets the threshold between regular fan speed and maximum fan speed. Layers that print slower than this time use regular fan speed. For faster layers the fan speed gradually increases towards the maximum fan speed.", "unit": "s", "type": "float", "default_value": 10, "maximum_value_warning": "600", "settable_per_mesh": false, "settable_per_extruder": true }, "cool_fan_speed_0": { "label": "Initial Fan Speed", "description": "The speed at which the fans spin at the start of the print. In subsequent layers the fan speed is gradually increased up to the layer corresponding to Regular Fan Speed at Height.", "unit": "%", "type": "float", "minimum_value": "0", "maximum_value": "100", "default_value": 0, "enabled": "cool_fan_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, "cool_fan_full_at_height": { "label": "Regular Fan Speed at Height", "description": "The height at which the fans spin on regular fan speed. At the layers below the fan speed gradually increases from Initial Fan Speed to Regular Fan Speed.", "unit": "mm", "type": "float", "default_value": 0.5, "value": "0 if resolveOrValue('adhesion_type') == 'raft' else resolveOrValue('layer_height_0')", "minimum_value": "0", "maximum_value_warning": "10.0", "settable_per_mesh": false, "settable_per_extruder": true, "children": { "cool_fan_full_layer": { "label": "Regular Fan Speed at Layer", "description": "The layer at which the fans spin on regular fan speed. If regular fan speed at height is set, this value is calculated and rounded to a whole number.", "type": "int", "default_value": 2, "minimum_value": "1", "maximum_value_warning": "10 / resolveOrValue('layer_height')", "value": "max(1, int(math.floor((cool_fan_full_at_height - resolveOrValue('layer_height_0')) / resolveOrValue('layer_height')) + 2))", "settable_per_mesh": false, "settable_per_extruder": true } } }, "cool_min_layer_time": { "label": "Minimum Layer Time", "description": "The minimum time spent in a layer. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer. Layers may still take shorter than the minimal layer time if Lift Head is disabled and if the Minimum Speed would otherwise be violated.", "unit": "s", "type": "float", "default_value": 5, "minimum_value": "0", "maximum_value_warning": "600", "settable_per_mesh": false, "settable_per_extruder": true }, "cool_min_speed": { "label": "Minimum Speed", "description": "The minimum print speed, despite slowing down due to the minimum layer time. When the printer would slow down too much, the pressure in the nozzle would be too low and result in bad print quality.", "unit": "mm/s", "type": "float", "default_value": 10, "minimum_value": "1", "maximum_value_warning": "100", "enabled": "cool_min_layer_time > 0", "settable_per_mesh": false, "settable_per_extruder": true }, "cool_lift_head": { "label": "Lift Head", "description": "When the minimum speed is hit because of minimum layer time, lift the head away from the print and wait the extra time until the minimum layer time is reached.", "type": "bool", "default_value": false, "enabled": "cool_min_layer_time > 0", "settable_per_mesh": false, "settable_per_extruder": true }, "cool_min_temperature": { "label": "Small Layer Printing Temperature", "description": "Gradually reduce to this temperature when printing at reduced speeds because of minimum layer time.", "unit": "\u00b0C", "type": "float", "value": "material_print_temperature", "default_value": 0, "enabled": "cool_min_layer_time > 0", "minimum_value_warning": "max(material_final_print_temperature, material_initial_print_temperature)", "maximum_value_warning": "material_print_temperature", "minimum_value": "-273.15", "maximum_value": "365", "settable_per_mesh": false, "settable_per_extruder": true }, "cool_during_extruder_switch": { "label": "Cooling during extruder switch", "description": "Whether to activate the cooling fans during a nozzle switch. This can help reducing oozing by cooling the nozzle faster: