diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 41358b83f5..96ca15741e 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -719,8 +719,8 @@ class CuraApplication(QtApplication): if run_headless or self._engine.rootObjects: self.closeSplash() - for file in self.getCommandLineOption("file", []): - self._openFile(file) + for file_name in self.getCommandLineOption("file", []): + self._openFile(file_name) for file_name in self._open_file_queue: #Open all the files that were queued up while plug-ins were loading. self._openFile(file_name) diff --git a/cura/PreviewPass.py b/cura/PreviewPass.py new file mode 100644 index 0000000000..c1880e82ef --- /dev/null +++ b/cura/PreviewPass.py @@ -0,0 +1,57 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Uranium is released under the terms of the LGPLv3 or higher. + +from UM.Application import Application +from UM.Resources import Resources + +from UM.View.RenderPass import RenderPass +from UM.View.GL.OpenGL import OpenGL +from UM.View.RenderBatch import RenderBatch + + +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator + +from typing import Optional + +MYPY = False +if MYPY: + from UM.Scene.Camera import Camera + +## A render pass subclass that renders slicable objects with default parameters. +# It uses the active camera by default, but it can be overridden to use a different camera. +# +# This is useful to get a preview image of a scene taken from a different location as the active camera. +class PreviewPass(RenderPass): + def __init__(self, width: int, height: int): + super().__init__("preview", width, height, 0) + + self._camera = None # type: Optional[Camera] + + self._renderer = Application.getInstance().getRenderer() + + self._shader = None + self._scene = Application.getInstance().getController().getScene() + + # Set the camera to be used by this render pass + # if it's None, the active camera is used + def setCamera(self, camera: Optional["Camera"]): + self._camera = camera + + def render(self) -> None: + if not self._shader: + self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "object.shader")) + + # Create a new batch to be rendered + batch = RenderBatch(self._shader) + + # Fill up the batch with objects that can be sliced. ` + for node in DepthFirstIterator(self._scene.getRoot()): + if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible(): + batch.addItem(node.getWorldTransformation(), node.getMeshData()) + + self.bind() + if self._camera is None: + batch.render(Application.getInstance().getController().getScene().getActiveCamera()) + else: + batch.render(self._camera) + self.release() diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 5b8391463e..6dd7338cfd 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -61,9 +61,9 @@ class FirmwareUpdateCheckerJob(Job): # notify the user when no new firmware version is available. if (checked_version != "") and (checked_version != current_version): Logger.log("i", "SHOWING FIRMWARE UPDATE MESSAGE") - message = Message(i18n_catalog.i18nc("@info Don't translate {machine_name}, since it gets replaced by a printer name!", "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB.").format(machine_name = machine_name), + message = Message(i18n_catalog.i18nc("@info Don't translate {machine_name}, since it gets replaced by a printer name!", "New features are available for your {machine_name}! It is recommended to update the firmware on your printer.").format(machine_name = machine_name), title = i18n_catalog.i18nc("@info:title The %s gets replaced with the printer name.", "New %s firmware available") % machine_name) - message.addAction("download", i18n_catalog.i18nc("@action:button", "Download"), "[no_icon]", "[no_description]") + message.addAction("download", i18n_catalog.i18nc("@action:button", "How to update"), "[no_icon]", "[no_description]") # If we do this in a cool way, the download url should be available in the JSON file if self._set_download_url_callback: diff --git a/plugins/RemovableDriveOutputDevice/OSXRemovableDrivePlugin.py b/plugins/RemovableDriveOutputDevice/OSXRemovableDrivePlugin.py index d87499273b..5ad2caed0b 100644 --- a/plugins/RemovableDriveOutputDevice/OSXRemovableDrivePlugin.py +++ b/plugins/RemovableDriveOutputDevice/OSXRemovableDrivePlugin.py @@ -4,8 +4,6 @@ from . import RemovableDrivePlugin -from UM.Logger import Logger - import subprocess import os @@ -15,12 +13,12 @@ import plistlib class OSXRemovableDrivePlugin(RemovableDrivePlugin.RemovableDrivePlugin): def checkRemovableDrives(self): drives = {} - p = subprocess.Popen(["system_profiler", "SPUSBDataType", "-xml"], stdout = subprocess.PIPE) + p = subprocess.Popen(["system_profiler", "SPUSBDataType", "-xml"], stdout = subprocess.PIPE, stderr = subprocess.PIPE) plist = plistlib.loads(p.communicate()[0]) result = self._recursiveSearch(plist, "removable_media") - p = subprocess.Popen(["system_profiler", "SPCardReaderDataType", "-xml"], stdout=subprocess.PIPE) + p = subprocess.Popen(["system_profiler", "SPCardReaderDataType", "-xml"], stdout=subprocess.PIPE, stderr = subprocess.PIPE) plist = plistlib.loads(p.communicate()[0]) result.extend(self._recursiveSearch(plist, "removable_media")) diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml index eb1bf786b0..cec2bf0f0f 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml @@ -276,12 +276,8 @@ Cura.MachineAction width: parent.width wrapMode: Text.WordWrap text:{ - if (base.selectedPrinter == undefined) - { - return ""; - } // The property cluster size does not exist for older UM3 devices. - if(base.selectedPrinter != undefined && base.selectedPrinter.clusterSize == null || base.selectedPrinter.clusterSize == 1) + if(!base.selectedPrinter || base.selectedPrinter.clusterSize == null || base.selectedPrinter.clusterSize == 1) { return ""; } diff --git a/resources/definitions/deltacomb.def.json b/resources/definitions/deltacomb.def.json new file mode 100644 index 0000000000..031bd12156 --- /dev/null +++ b/resources/definitions/deltacomb.def.json @@ -0,0 +1,66 @@ +{ + "id": "deltacomb", + "version": 2, + "name": "Deltacomb 3D", + "inherits": "fdmprinter", + "metadata": { + "author": "Gabriele Rossetti", + "visible": true, + "manufacturer": "Deltacomb 3D", + "category": "Other", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "platform": "deltacomb.stl", + "has_machine_quality": true + }, + + "overrides": { + "machine_heated_bed": { "default_value": false }, + "machine_width": { "default_value": 190 }, + "machine_height": { "default_value": 250 }, + "machine_depth": { "default_value": 190 }, + "machine_center_is_zero": { "default_value": true }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home all axes (max endstops)\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."}, + "machine_end_gcode": { "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG28 ;Home all axes (max endstops)\nM84 ;steppers off\nG90 ;absolute positioning" }, + "machine_shape": { "default_value": "elliptic" }, + "machine_max_feedrate_x": { "default_value": 250 }, + "machine_max_feedrate_y": { "default_value": 250 }, + "machine_max_feedrate_z": { "default_value": 15 }, + "machine_max_acceleration_x": { "default_value": 10000 }, + "machine_max_acceleration_y": { "default_value": 10000 }, + "machine_max_acceleration_z": { "default_value": 50 }, + "machine_max_acceleration_e": { "default_value": 100 }, + "machine_acceleration": { "default_value": 4000 }, + "machine_max_jerk_xy": { "default_value": 25.0 }, + "machine_max_jerk_z": { "default_value": 0.4 }, + "machine_max_jerk_e": { "default_value": 1.0 }, + "retraction_hop_enabled": { "default_value": false }, + "retraction_amount" : { "default_value": 4.5 }, + "retraction_speed" : { "default_value": 40 }, + "material_diameter": { "default_value": 1.75 }, + "material_final_print_temperature": { "value": "material_print_temperature - 5" }, + "material_initial_print_temperature": { "value": "material_print_temperature" }, + "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, + "travel_avoid_distance": { "default_value": 1, "value": 1 }, + "speed_print" : { "default_value": 70 }, + "speed_travel": { "default_value": 80, "value": 80 }, + "speed_infill": { "value": "round(speed_print * 1.05, 0)" }, + "speed_topbottom": { "value": "round(speed_print * 0.95, 0)" }, + "speed_wall": { "value": "speed_print" }, + "speed_wall_0": { "value": "round(speed_print * 0.9, 0)" }, + "speed_wall_x": { "value": "speed_wall" }, + "speed_layer_0": { "value": "min(round(speed_print * 0.75, 0), 45.0)" }, + "speed_travel_layer_0": { "value": "round(speed_travel * 0.7, 0)" }, + "skirt_brim_speed": { "value": "speed_layer_0" }, + "skirt_line_count": { "default_value": 3 }, + "skirt_brim_minimal_length": { "default_value": 150 }, + "infill_sparse_density": { "default_value": 24 }, + "top_bottom_thickness": { "default_value": 0.6 }, + "support_z_distance": { "default_value": 0.2, "value": "min(2 * layer_height, machine_nozzle_size * 0.75)" }, + "infill_before_walls" : { "default_value": false }, + "support_use_towers" : { "default_value": false } + } +} diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 88e02fc1c6..b17769eba2 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1394,7 +1394,7 @@ "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, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction.", + "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. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction.", "type": "enum", "options": { @@ -4132,30 +4132,6 @@ "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" }, - "z_offset_layer_0": - { - "label": "Initial Layer Z Offset", - "description": "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly.", - "unit": "mm", - "type": "float", - "default_value": 0, - "minimum_value_warning": "0", - "maximum_value_warning": "layer_height_0", - "enabled": "resolveOrValue('adhesion_type') != 'raft'", - "settable_per_mesh": false, - "settable_per_extruder": false - }, - "z_offset_taper_layers": - { - "label": "Z Offset Taper Layers", - "description": "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print.", - "type": "int", - "default_value": 0, - "minimum_value": "0", - "enabled": "resolveOrValue('adhesion_type') != 'raft' and z_offset_layer_0 != 0", - "settable_per_mesh": false, - "settable_per_extruder": false - }, "raft_margin": { "label": "Raft Extra Margin", @@ -5099,7 +5075,8 @@ "default_value": false, "settable_per_mesh": true }, - "support_skip_some_zags": { + "support_skip_some_zags": + { "label": "Break Up Support In Chunks", "description": "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern.", "type": "bool", @@ -5107,35 +5084,36 @@ "enabled": "support_enable and (support_pattern == 'zigzag')", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_skip_zag_per_mm": + { + "label": "Support Chunk Size", + "description": "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away.", + "type": "float", + "unit": "mm", + "default_value": 20, + "minimum_value": "0", + "minimum_value_warning": "support_line_distance", + "enabled": "support_enable and (support_pattern == 'zigzag') and support_skip_some_zags", + "limit_to_extruder": "support_infill_extruder_nr", + "settable_per_mesh": false, "settable_per_extruder": true, - "children": { - "support_skip_zag_per_mm": { - "label": "Support Chunk Size", - "description": "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away.", - "type": "float", - "unit": "mm", - "default_value": 20, - "minimum_value": "0", - "minimum_value_warning": "support_line_distance", + "children": + { + "support_zag_skip_count": + { + "label": "Support Chunk Line Count", + "description": "Skip one in every N connection lines to make the support structure easier to break away.", + "type": "int", + "default_value": 5, + "value": "round(support_skip_zag_per_mm / support_line_distance)", + "minimum_value": "1", + "minimum_value_warning": "3", "enabled": "support_enable and (support_pattern == 'zigzag') and support_skip_some_zags", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, - "settable_per_extruder": true, - "children": { - "support_zag_skip_count": { - "label": "Support Chunk Line Count", - "description": "Skip one in every N connection lines to make the support structure easier to break away.", - "type": "int", - "default_value": 5, - "value": "round(support_skip_zag_per_mm / support_line_distance)", - "minimum_value": "1", - "minimum_value_warning": "3", - "enabled": "support_enable and (support_pattern == 'zigzag') and support_skip_some_zags", - "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": false, - "settable_per_extruder": true - } - } + "settable_per_extruder": true } } }, diff --git a/resources/meshes/deltacomb.stl b/resources/meshes/deltacomb.stl new file mode 100644 index 0000000000..7be5c33fd7 Binary files /dev/null and b/resources/meshes/deltacomb.stl differ diff --git a/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg new file mode 100644 index 0000000000..43643b6b92 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +definition = deltacomb +name = Fast Quality (beta) + +[metadata] +type = quality +setting_version = 4 +material = generic_abs_175 +quality_type = fast +weight = -1 + +[values] +adhesion_type = raft +layer_height = 0.2 +layer_height_0 = 0.2 +cool_fan_enabled = True +cool_fan_full_at_height = 0.4 +cool_fan_speed = 50 +cool_fan_speed_max = 50 +cool_fan_speed_min = 50 +cool_min_layer_time = 3 +cool_min_speed = 20 +material_bed_temperature = 80 + diff --git a/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg new file mode 100644 index 0000000000..99e47bc9cb --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +definition = deltacomb +name = High Quality (beta) + +[metadata] +type = quality +setting_version = 4 +material = generic_abs_175 +quality_type = high +weight = 1 + +[values] +adhesion_type = raft +layer_height = 0.1 +layer_height_0 = 0.1 +cool_fan_enabled = True +cool_fan_full_at_height = 0.2 +cool_fan_speed = 50 +cool_fan_speed_max = 50 +cool_fan_speed_min = 50 +cool_min_layer_time = 3 +cool_min_speed = 20 +material_bed_temperature = 80 + diff --git a/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg new file mode 100644 index 0000000000..a2aa2be769 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +definition = deltacomb +name = Normal Quality (beta) + +[metadata] +type = quality +setting_version = 4 +material = generic_abs_175 +quality_type = normal +weight = 0 + +[values] +adhesion_type = raft +layer_height = 0.15 +layer_height_0 = 0.15 +cool_fan_enabled = True +cool_fan_full_at_height = 0.3 +cool_fan_speed = 50 +cool_fan_speed_max = 50 +cool_fan_speed_min = 50 +cool_min_layer_time = 3 +cool_min_speed = 20 +material_bed_temperature = 80 diff --git a/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg new file mode 100644 index 0000000000..fac23939cf --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg @@ -0,0 +1,57 @@ +[general] +version = 2 +name = Fast Quality (beta) +definition = deltacomb + +[metadata] +type = quality +material = generic_nylon_175 +quality_type = fast +weight = -1 +setting_version = 4 + +[values] +adhesion_type = raft +brim_width = 4 +cool_fan_enabled = False +cool_fan_full_at_height = 0.45 +cool_fan_speed = 0 +cool_fan_speed_max = 0 +cool_fan_speed_min = 0 +cool_min_layer_time = 5 +cool_min_speed = 0 +infill_overlap = 15 +infill_sparse_density = 24 +layer_height = 0.20 +layer_height_0 = 0.15 +line_width = =machine_nozzle_size +material_flow = 100 +raft_airgap = 0.22 +raft_base_line_width= =line_width * 2 +raft_base_thickness = =layer_height_0 * 2 +raft_interface_line_width = =line_width +raft_interface_thickness = =layer_height +raft_margin = 5 +raft_surface_layers = 2 +raft_surface_line_width = =line_width +raft_surface_thickness = =layer_height +retraction_hop = 0.5 +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +skin_overlap = 10 +skirt_brim_minimal_length = 75 +skirt_gap = 1.5 +skirt_line_count = 5 +speed_infill = =speed_print +speed_layer_0 = 25 +speed_print = 50 +speed_topbottom = 40 +speed_travel = 200 +speed_wall_0 = 40 +speed_wall_x = =speed_print +support_angle = 70 +support_type = buildplate +support_z_distance = 0.15 +top_bottom_thickness = 0.8 +wall_thickness = 0.8 +z_seam_type = random diff --git a/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg new file mode 100644 index 0000000000..d594126474 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg @@ -0,0 +1,57 @@ +[general] +version = 2 +name = High Quality (beta) +definition = deltacomb + +[metadata] +type = quality +material = generic_nylon_175 +quality_type = high +weight = 1 +setting_version = 4 + +[values] +adhesion_type = raft +brim_width = 4 +cool_fan_enabled = False +cool_fan_full_at_height = 0.45 +cool_fan_speed = 0 +cool_fan_speed_max = 0 +cool_fan_speed_min = 0 +cool_min_layer_time = 5 +cool_min_speed = 0 +infill_overlap = 15 +infill_sparse_density = 24 +layer_height = 0.10 +layer_height_0 = 0.10 +line_width = =machine_nozzle_size +material_flow = 100 +raft_airgap = 0.22 +raft_base_line_width= =line_width * 2 +raft_base_thickness = =layer_height_0 * 2 +raft_interface_line_width = =line_width +raft_interface_thickness = =layer_height +raft_margin = 5 +raft_surface_layers = 2 +raft_surface_line_width = =line_width +raft_surface_thickness = =layer_height +retraction_hop = 0.5 +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +skin_overlap = 10 +skirt_brim_minimal_length = 75 +skirt_gap = 1.5 +skirt_line_count = 5 +speed_infill = =speed_print +speed_layer_0 = 25 +speed_print = 50 +speed_topbottom = 40 +speed_travel = 200 +speed_wall_0 = 40 +speed_wall_x = =speed_print +support_angle = 70 +support_type = buildplate +support_z_distance = 0.15 +top_bottom_thickness = 0.8 +wall_thickness = 0.8 +z_seam_type = random diff --git a/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg new file mode 100644 index 0000000000..76716fc16d --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg @@ -0,0 +1,58 @@ +[general] +version = 2 +name = Normal Quality (beta) +definition = deltacomb + +[metadata] +type = quality +material = generic_nylon_175 +quality_type = normal +weight = 0 +setting_version = 4 + +[values] +adhesion_type = raft +brim_width = 4 +cool_fan_enabled = False +cool_fan_full_at_height = 0.45 +cool_fan_speed = 0 +cool_fan_speed_max = 0 +cool_fan_speed_min = 0 +cool_min_layer_time = 5 +cool_min_speed = 0 +infill_overlap = 15 +infill_sparse_density = 24 +layer_height = 0.15 +layer_height_0 = 0.10 +line_width = =machine_nozzle_size +material_flow = 100 +raft_airgap = 0.22 +raft_base_line_width= =line_width * 2 +raft_base_thickness = =layer_height_0 * 2 +raft_interface_line_width = =line_width +raft_interface_thickness = =layer_height +raft_margin = 5 +raft_surface_layers = 2 +raft_surface_line_width = =line_width +raft_surface_thickness = =layer_height +retraction_hop = 0.5 +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +skin_overlap = 10 +skirt_brim_minimal_length = 75 +skirt_gap = 1.5 +skirt_line_count = 5 +speed_infill = =speed_print +speed_layer_0 = 25 +speed_print = 50 +speed_topbottom = 40 +speed_travel = 200 +speed_wall_0 = 40 +speed_wall_x = =speed_print +support_angle = 70 +support_type = buildplate +support_z_distance = 0.15 +top_bottom_thickness = 0.8 +wall_thickness = 0.8 +z_seam_type = random + diff --git a/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg new file mode 100644 index 0000000000..9783cb11cc --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +definition = deltacomb +name = Fast Quality + +[metadata] +type = quality +setting_version = 4 +material = generic_pla_175 +quality_type = fast +weight = -1 + +[values] +adhesion_type = skirt +layer_height = 0.2 +layer_height_0 = 0.2 +cool_fan_enabled = True +cool_fan_full_at_height = 0.4 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 100 +cool_min_layer_time = 5 +cool_min_speed = 20 + diff --git a/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg new file mode 100644 index 0000000000..9513e98b6a --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +definition = deltacomb +name = High Quality + +[metadata] +type = quality +setting_version = 4 +material = generic_pla_175 +quality_type = high +weight = 1 + +[values] +adhesion_type = skirt +layer_height = 0.1 +layer_height_0 = 0.1 +cool_fan_enabled = True +cool_fan_full_at_height = 0.2 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 100 +cool_min_layer_time = 5 +cool_min_speed = 20 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 + diff --git a/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg new file mode 100644 index 0000000000..d88f5909f0 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg @@ -0,0 +1,23 @@ +[general] +version = 2 +definition = deltacomb +name = Normal Quality + +[metadata] +type = quality +setting_version = 4 +material = generic_pla_175 +quality_type = normal +weight = 0 + +[values] +adhesion_type = skirt +layer_height = 0.15 +layer_height_0 = 0.15 +cool_fan_enabled = True +cool_fan_full_at_height = 0.3 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 100 +cool_min_layer_time = 5 +cool_min_speed = 20 diff --git a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..5d798d556e --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +name = Fine +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_abs_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +cool_fan_speed = 40 +infill_overlap = 15 +material_final_print_temperature = =material_print_temperature - 5 +prime_tower_enable = True +prime_tower_purge_volume = 0.6 +prime_tower_size = 12 +prime_tower_wall_thickness = 0.9 +retraction_prime_speed = 25 +speed_topbottom = =math.ceil(speed_print * 30 / 55) +wall_thickness = 0.92 + diff --git a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..a68b43fa2a --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 2 +name = Fine +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_cpe_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +infill_overlap = =10 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 +prime_tower_size = 12 +prime_tower_wall_thickness = 0.9 +retraction_extrusion_window = 0.5 +speed_infill = 40 +speed_topbottom = =math.ceil(speed_print * 30 / 55) +top_bottom_thickness = 0.8 +wall_thickness = 0.92 + diff --git a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..fda770266e --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -0,0 +1,37 @@ +[general] +version = 2 +name = Fine +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_nylon_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 12 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +infill_overlap = =10 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 2.0 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 3) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +retraction_extrusion_window = =retraction_amount +retraction_min_travel = =line_width * 2 +skin_overlap = 50 +speed_print = 70 +speed_topbottom = =math.ceil(speed_print * 30 / 70) +speed_wall = =math.ceil(speed_print * 30 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..43b8f95677 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg @@ -0,0 +1,53 @@ +[general] +version = 2 +name = Fine - Experimental +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_pc_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +adhesion_type = brim +brim_width = 20 +cool_fan_full_at_height = =layer_height_0 + layer_height +cool_fan_speed_max = 50 +cool_min_layer_time_fan_speed_max = 5 +cool_min_speed = 5 +infill_line_width = =line_width +infill_pattern = triangles +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +multiple_mesh_overlap = 0 +ooze_shield_angle = 40 +prime_tower_enable = True +retraction_count_max = 80 +retraction_hop = 2 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 15 +skin_overlap = 30 +speed_layer_0 = 25 +speed_print = 50 +speed_topbottom = 25 +speed_travel = 250 +speed_wall = =math.ceil(speed_print * 40 / 50) +speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance +support_interface_density = 87.5 +support_interface_pattern = lines +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = 1.2 + diff --git a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..d3772448cf --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg @@ -0,0 +1,37 @@ +[general] +version = 2 +name = Fine +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_pla_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +brim_width = 8 +cool_fan_full_at_height = =layer_height_0 +cool_min_speed = 10 +infill_overlap = 10 +infill_pattern = grid +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 2.0 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = 190 +retraction_extrusion_window = =retraction_amount +retraction_hop = 0.2 +skin_overlap = 5 +speed_layer_0 = 30 +speed_print = 30 +speed_travel_layer_0 = 120 +speed_wall = 25 +speed_wall_0 = 20 +top_bottom_thickness = 0.72 +travel_avoid_distance = 0.4 +wall_0_inset = 0.015 +wall_0_wipe_dist = 0.25 +wall_thickness = 0.7 + diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..7f138f979d --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg @@ -0,0 +1,60 @@ +[general] +version = 2 +name = Fine - Experimental +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_pp_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 10 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_min_speed = 2.5 +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_pattern = tetrahedral +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +line_width = =machine_nozzle_size * 0.92 +machine_min_cool_heat_time_window = 15 +material_bed_temperature_layer_0 = 90 +material_final_print_temperature = 195 +material_initial_print_temperature = 200 +material_print_temperature = 205 +material_print_temperature_layer_0 = 208 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_size = 16 +prime_tower_wipe_enabled = True +retraction_count_max = 6 +retraction_extra_prime_amount = 0.2 +retraction_extrusion_window = 6.5 +retraction_hop = 2 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 13 +speed_equalize_flow_enabled = True +speed_layer_0 = 15 +speed_print = 25 +speed_travel = 300 +speed_travel_layer_0 = 50 +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = 1 +travel_avoid_distance = 3 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 + diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg new file mode 100644 index 0000000000..980da522c8 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg @@ -0,0 +1,38 @@ +[general] +version = 2 +name = Fast +definition = ultimaker3 + +[metadata] +type = quality +quality_type = draft +material = generic_bam_ultimaker3_AA_0.4 +weight = -2 +setting_version = 4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =230 +material_standby_temperature = 100 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +skin_overlap = 20 +speed_layer_0 = 20 +speed_topbottom = =math.ceil(speed_print * 35 / 70) +speed_wall = =math.ceil(speed_print * 50 / 70) +speed_wall_0 = =math.ceil(speed_wall * 35 / 50) +top_bottom_thickness = 1 +wall_thickness = 1 +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = 10 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg new file mode 100644 index 0000000000..86b584c9af --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg @@ -0,0 +1,38 @@ +[general] +version = 2 +name = Normal +definition = ultimaker3 + +[metadata] +type = quality +quality_type = fast +material = generic_bam_ultimaker3_AA_0.4 +weight = -1 +setting_version = 4 + +[values] +default_material_print_temperature = 225 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_standby_temperature = 100 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +speed_print = 80 +speed_layer_0 = 20 +speed_topbottom = =math.ceil(speed_print * 30 / 80) +speed_wall = =math.ceil(speed_print * 40 / 80) +speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +top_bottom_thickness = 1 +wall_thickness = 1 +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = 10 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..b9f35fcfa0 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 2 +name = Fine +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_bam_ultimaker3_AA_0.4 +weight = 0 +setting_version = 4 + +[values] +default_material_print_temperature = 225 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 7 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_standby_temperature = 100 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +skin_overlap = 10 +speed_layer_0 = 20 +top_bottom_thickness = 1 +wall_thickness = 1 +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = 10 diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index b41ea96846..ceb5b64263 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -78,13 +78,13 @@ "text_pressed": [12, 169, 227, 255], "text_subtext": [0, 0, 0, 255], "text_emphasis": [255, 255, 255, 255], - "text_scene": [24, 41, 77, 255], + "text_scene": [31, 36, 39, 255], "text_scene_hover": [70, 84, 113, 255], "error": [255, 140, 0, 255], "sidebar_header_bar": [31, 36, 39, 255], - "sidebar_header_active": [68, 72, 75, 255], - "sidebar_header_hover": [68, 72, 75, 255], + "sidebar_header_active": [31, 36, 39, 255], + "sidebar_header_hover": [31, 36, 39, 255], "sidebar_header_highlight": [68, 192, 255, 255], "sidebar_header_highlight_hover": [68, 192, 255, 255], "sidebar_header_text_inactive": [255, 255, 255, 255], @@ -100,7 +100,7 @@ "button_text_hover": [255, 255, 255, 255], "button_text_active": [255, 255, 255, 255], "button_text_active_hover": [255, 255, 255, 255], - "button_disabled": [24, 41, 77, 255], + "button_disabled": [31, 36, 39, 255], "button_disabled_text": [255, 255, 255, 101], "button_tooltip": [31, 36, 39, 255], @@ -116,7 +116,7 @@ "action_button_text": [0, 0, 0, 255], "action_button_border": [127, 127, 127, 255], "action_button_hovered": [255, 255, 255, 255], - "action_button_hovered_text": [24, 41, 77, 255], + "action_button_hovered_text": [31, 36, 39, 255], "action_button_hovered_border": [12, 169, 227, 255], "action_button_active": [255, 255, 255, 255], "action_button_active_text": [0, 0, 0, 255], @@ -134,7 +134,7 @@ "print_button_ready_pressed_border": [30, 186, 245, 243], "scrollbar_background": [255, 255, 255, 255], - "scrollbar_handle": [24, 41, 77, 255], + "scrollbar_handle": [31, 36, 39, 255], "scrollbar_handle_hover": [12, 159, 227, 255], "scrollbar_handle_down": [12, 159, 227, 255], @@ -143,11 +143,11 @@ "setting_category_hover": [245, 245, 245, 255], "setting_category_active": [245, 245, 245, 255], "setting_category_active_hover": [245, 245, 245, 255], - "setting_category_text": [24, 41, 77, 255], + "setting_category_text": [31, 36, 39, 255], "setting_category_disabled_text": [24, 41, 77, 101], - "setting_category_hover_text": [24, 41, 77, 255], - "setting_category_active_text": [24, 41, 77, 255], - "setting_category_active_hover_text": [24, 41, 77, 255], + "setting_category_hover_text": [31, 36, 39, 255], + "setting_category_active_text": [31, 36, 39, 255], + "setting_category_active_hover_text": [31, 36, 39, 255], "setting_category_border": [245, 245, 245, 255], "setting_category_disabled_border": [245, 245, 245, 255], "setting_category_hover_border": [12, 159, 227, 255], @@ -155,7 +155,7 @@ "setting_category_active_hover_border": [12, 159, 227, 255], "setting_control": [255, 255, 255, 255], - "setting_control_selected": [24, 41, 77, 255], + "setting_control_selected": [31, 36, 39, 255], "setting_control_highlight": [255, 255, 255, 255], "setting_control_border": [127, 127, 127, 255], "setting_control_border_highlight": [12, 169, 227, 255], @@ -176,7 +176,7 @@ "material_compatibility_warning": [0, 0, 0, 255], "progressbar_background": [245, 245, 245, 255], - "progressbar_control": [24, 41, 77, 255], + "progressbar_control": [31, 36, 39, 255], "slider_groove": [245, 245, 245, 255], "slider_groove_border": [127, 127, 127, 255], @@ -203,9 +203,9 @@ "mode_switch_hover": [255, 255, 255, 255], "mode_switch_border": [127, 127, 127, 255], "mode_switch_border_hover": [12, 169, 227, 255], - "mode_switch_handle": [24, 41, 77, 255], - "mode_switch_text": [24, 41, 77, 255], - "mode_switch_text_hover": [24, 41, 77, 255], + "mode_switch_handle": [31, 36, 39, 255], + "mode_switch_text": [31, 36, 39, 255], + "mode_switch_text_hover": [31, 36, 39, 255], "mode_switch_text_checked": [12, 169, 227, 255], "tooltip": [68, 192, 255, 255], diff --git a/resources/variants/ultimaker3_aa0.25.inst.cfg b/resources/variants/ultimaker3_aa0.25.inst.cfg new file mode 100644 index 0000000000..ebb584f674 --- /dev/null +++ b/resources/variants/ultimaker3_aa0.25.inst.cfg @@ -0,0 +1,40 @@ +[general] +name = AA 0.25 +version = 2 +definition = ultimaker3 + +[metadata] +author = ultimaker +type = variant +setting_version = 4 + +[values] +brim_width = 7 +infill_line_width = 0.23 +infill_overlap = 0 +layer_height_0 = 0.17 +line_width = 0.23 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = AA 0.25 +machine_nozzle_size = 0.25 +machine_nozzle_tip_outer_diameter = 0.65 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +raft_interface_thickness = =layer_height * 1.5 +retraction_count_max = 25 +retraction_extrusion_window = 1 +retraction_min_travel = 0.7 +skin_overlap = 15 +speed_layer_0 = 20 +speed_print = 55 +speed_topbottom = 20 +speed_wall = =math.ceil(speed_print * 30 / 55) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +top_bottom_thickness = 1.2 +wall_line_width_x = 0.23 +wall_thickness = 1.3 + diff --git a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg new file mode 100644 index 0000000000..631768346e --- /dev/null +++ b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg @@ -0,0 +1,40 @@ +[general] +name = AA 0.25 +version = 2 +definition = ultimaker3_extended + +[metadata] +author = ultimaker +type = variant +setting_version = 4 + +[values] +brim_width = 7 +infill_line_width = 0.23 +infill_overlap = 0 +layer_height_0 = 0.17 +line_width = 0.23 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = AA 0.25 +machine_nozzle_size = 0.25 +machine_nozzle_tip_outer_diameter = 0.65 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +raft_interface_thickness = =layer_height * 1.5 +retraction_count_max = 25 +retraction_extrusion_window = 1 +retraction_min_travel = 0.7 +skin_overlap = 15 +speed_layer_0 = 20 +speed_print = 55 +speed_topbottom = 20 +speed_wall = =math.ceil(speed_print * 30 / 55) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +top_bottom_thickness = 1.2 +wall_line_width_x = 0.23 +wall_thickness = 1.3 +