diff --git a/conandata.yml b/conandata.yml index 6bec3ee231..de95766ed2 100644 --- a/conandata.yml +++ b/conandata.yml @@ -5,7 +5,7 @@ requirements: - "curaengine/5.10.0-alpha.0@ultimaker/testing" - "cura_binary_data/5.10.0-alpha.0@ultimaker/testing" - "fdm_materials/5.10.0-alpha.0@ultimaker/testing" - - "dulcificum/0.2.1@ultimaker/stable" + - "dulcificum/0.3.0@ultimaker/stable" - "pysavitar/5.4.0-alpha.0@ultimaker/stable" - "pynest2d/5.4.0-alpha.0@ultimaker/stable" requirements_internal: diff --git a/conanfile.py b/conanfile.py index 01e2ffb579..3a71d8bca2 100644 --- a/conanfile.py +++ b/conanfile.py @@ -27,7 +27,6 @@ class CuraConan(ConanFile): generators = "VirtualPythonEnv" tool_requires = "gettext/0.22.5" - # FIXME: Remove specific branch once merged to main python_requires = "translationextractor/[>=2.2.0]@ultimaker/stable" options = { diff --git a/cura/PrinterOutput/FormatMaps.py b/cura/PrinterOutput/FormatMaps.py index 3a03da71fd..3bb6263a28 100644 --- a/cura/PrinterOutput/FormatMaps.py +++ b/cura/PrinterOutput/FormatMaps.py @@ -13,7 +13,9 @@ class FormatMaps: "fire_e": "ultimaker_method", "lava_f": "ultimaker_methodx", "magma_10": "ultimaker_methodxl", - "sketch": "ultimaker_sketch" + "sketch": "ultimaker_sketch", + "sketch_large": "ultimaker_sketch_large", + "sketch_sprint": "ultimaker_sketch_sprint" } # A map from the extruder-name in their native file-formats to the internal name we use. diff --git a/cura/PrinterOutput/Models/PrinterConfigurationModel.py b/cura/PrinterOutput/Models/PrinterConfigurationModel.py index 85c69abcd3..d42be47b41 100644 --- a/cura/PrinterOutput/Models/PrinterConfigurationModel.py +++ b/cura/PrinterOutput/Models/PrinterConfigurationModel.py @@ -1,9 +1,12 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2025 UltiMaker # Cura is released under the terms of the LGPLv3 or higher. from PyQt6.QtCore import pyqtProperty, QObject, pyqtSignal from typing import List +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.DefinitionContainer import DefinitionContainer + MYPY = False if MYPY: from cura.PrinterOutput.Models.ExtruderConfigurationModel import ExtruderConfigurationModel @@ -68,6 +71,15 @@ class PrinterConfigurationModel(QObject): return True return False + @pyqtProperty("QStringList", constant=True) + def validCoresForPrinterType(self) -> List[str]: + printers = ContainerRegistry.getInstance().findContainersMetadata( + ignore_case=True, type="machine", name=self._printer_type, container_type=DefinitionContainer) + id = printers[0]["id"] if len(printers) > 0 and "id" in printers[0] else "" + definitions = ContainerRegistry.getInstance().findContainersMetadata( + ignore_case=True, type="variant", definition=id+"*") + return [x["name"] for x in definitions] + def __str__(self): message_chunks = [] message_chunks.append("Printer type: " + self._printer_type) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 82b52d3dde..4c16061074 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1678,7 +1678,7 @@ class MachineManager(QObject): intent_category = self.activeIntentCategory, intent_name = IntentCategoryModel.translation(self.activeIntentCategory, "name", self.activeIntentCategory.title()), custom_profile = self.activeQualityOrQualityChangesName if global_stack.qualityChanges is not empty_quality_changes_container else None, - layer_height = self.activeQualityLayerHeight if self.isActiveQualitySupported else None, + layer_height = float("{:.2f}".format(self.activeQualityLayerHeight)) if self.isActiveQualitySupported else None, is_experimental = self.isActiveQualityExperimental and self.isActiveQualitySupported ) diff --git a/plugins/MakerbotWriter/MakerbotWriter.py b/plugins/MakerbotWriter/MakerbotWriter.py index 2f77ffeda7..e4c2d2cbd1 100644 --- a/plugins/MakerbotWriter/MakerbotWriter.py +++ b/plugins/MakerbotWriter/MakerbotWriter.py @@ -46,6 +46,13 @@ class MakerbotWriter(MeshWriter): suffixes=["makerbot"] ) ) + MimeTypeDatabase.addMimeType( + MimeType( + name="application/x-makerbot-replicator_plus", + comment="Makerbot Toolpath Package", + suffixes=["makerbot"] + ) + ) _PNG_FORMAT = [ {"prefix": "isometric_thumbnail", "width": 120, "height": 120}, @@ -114,6 +121,8 @@ class MakerbotWriter(MeshWriter): filename, filedata = "print.gcode", gcode_text_io.getvalue() case "application/x-makerbot": filename, filedata = "print.jsontoolpath", du.gcode_2_miracle_jtp(gcode_text_io.getvalue()) + case "application/x-makerbot-replicator_plus": + filename, filedata = "print.jsontoolpath", du.gcode_2_miracle_jtp(gcode_text_io.getvalue(), nb_extruders=1) case _: raise Exception("Unsupported Mime type") diff --git a/plugins/MakerbotWriter/__init__.py b/plugins/MakerbotWriter/__init__.py index 60f232fbc0..bd766add8e 100644 --- a/plugins/MakerbotWriter/__init__.py +++ b/plugins/MakerbotWriter/__init__.py @@ -25,6 +25,12 @@ def getMetaData(): "description": catalog.i18nc("@item:inlistbox", "Makerbot Sketch Printfile"), "mime_type": "application/x-makerbot-sketch", "mode": MakerbotWriter.MakerbotWriter.OutputMode.BinaryMode, + }, + { + "extension": file_extension, + "description": catalog.i18nc("@item:inlistbox", "Makerbot Replicator+ Printfile"), + "mime_type": "application/x-makerbot-replicator_plus", + "mode": MakerbotWriter.MakerbotWriter.OutputMode.BinaryMode, } ] }, diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py index 4ca83772f2..090355a3c0 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py @@ -331,7 +331,7 @@ class CloudOutputDevice(UltimakerNetworkedPrinterOutputDevice): return False [printer, *_] = self._printers - return printer.type in ("MakerBot Method X", "MakerBot Method XL", "MakerBot Sketch") + return printer.type in ("MakerBot Method", "MakerBot Method X", "MakerBot Method XL", "MakerBot Sketch", "MakerBot Sketch Large", "MakerBot Sketch Sprint") @pyqtProperty(bool, notify=_cloudClusterPrintersChanged) def supportsPrintJobActions(self) -> bool: diff --git a/plugins/UM3NetworkPrinting/src/Cloud/machine_id_to_name.json b/plugins/UM3NetworkPrinting/src/Cloud/machine_id_to_name.json index 9d0db2a30d..6b99f74062 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/machine_id_to_name.json +++ b/plugins/UM3NetworkPrinting/src/Cloud/machine_id_to_name.json @@ -3,5 +3,7 @@ "ultimaker_methodx": "MakerBot Method X", "ultimaker_methodxl": "MakerBot Method XL", "ultimaker_factor4": "Ultimaker Factor 4", - "ultimaker_sketch": "MakerBot Sketch" + "ultimaker_sketch": "MakerBot Sketch", + "ultimaker_sketch_large": "MakerBot Sketch Large", + "ultimaker_sketch_sprint": "MakerBot Sketch Sprint" } diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 85b98e532b..18d9466eb5 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -97,6 +97,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice): CuraApplication.getInstance().getOnExitCallbackManager().addCallback(self._checkActivePrintingUponAppExit) + CuraApplication.getInstance().getPreferences().addPreference("usb_printing/enabled", False) + # This is a callback function that checks if there is any printing in progress via USB when the application tries # to exit. If so, it will show a confirmation before def _checkActivePrintingUponAppExit(self) -> None: @@ -144,6 +146,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice): CuraApplication.getInstance().getController().setActiveStage("MonitorStage") + CuraApplication.getInstance().getPreferences().setValue("usb_printing/enabled", True) + #Find the g-code to print. gcode_textio = StringIO() gcode_writer = cast(MeshWriter, PluginRegistry.getInstance().getPluginObject("GCodeWriter")) diff --git a/plugins/VersionUpgrade/VersionUpgrade59to510/VersionUpgrade59to510.py b/plugins/VersionUpgrade/VersionUpgrade59to510/VersionUpgrade59to510.py new file mode 100644 index 0000000000..70190b6e7f --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade59to510/VersionUpgrade59to510.py @@ -0,0 +1,68 @@ +import configparser +import io +from typing import Dict, Tuple, List + +from UM.VersionUpgrade import VersionUpgrade + +_RENAMED_SETTINGS = { + "wall_overhang_speed_factor": "wall_overhang_speed_factors" +} # type: Dict[str, str] + +_NEW_SETTING_VERSION = "25" + + +class VersionUpgrade59to510(VersionUpgrade): + def upgradePreferences(self, serialized: str, filename: str): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Fix 'renamed'(ish) settings for visibility + if "visible_settings" in parser["general"]: + all_setting_keys = parser["general"]["visible_settings"].strip().split(";") + if all_setting_keys: + for idx, key in enumerate(all_setting_keys): + if key in _RENAMED_SETTINGS: + all_setting_keys[idx] = _RENAMED_SETTINGS[key] + parser["general"]["visible_settings"] = ";".join(all_setting_keys) + + # Update version number. + parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION + + if "values" in parser: + for old_name, new_name in _RENAMED_SETTINGS.items(): + if old_name in parser["values"]: + parser["values"][new_name] = parser["values"][old_name] + del parser["values"][old_name] + if "wall_overhang_speed_factors" in parser["values"]: + old_value = float(parser["values"]["wall_overhang_speed_factors"]) + new_value = [max(1, int(round(old_value)))] + parser["values"]["wall_overhang_speed_factor"] = str(new_value) + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + if "metadata" not in parser: + parser["metadata"] = {} + + parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade59to510/__init__.py b/plugins/VersionUpgrade/VersionUpgrade59to510/__init__.py new file mode 100644 index 0000000000..4c2b2622b1 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade59to510/__init__.py @@ -0,0 +1,60 @@ +# Copyright (c) 2024 UltiMaker +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade59to510 + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade59to510.VersionUpgrade59to510() + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 7000024): ("preferences", 7000025, upgrade.upgradePreferences), + ("machine_stack", 6000024): ("machine_stack", 6000025, upgrade.upgradeStack), + ("extruder_train", 6000024): ("extruder_train", 6000025, upgrade.upgradeStack), + ("definition_changes", 4000024): ("definition_changes", 4000025, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000024): ("quality_changes", 4000025, upgrade.upgradeInstanceContainer), + ("quality", 4000024): ("quality", 4000025, upgrade.upgradeInstanceContainer), + ("user", 4000024): ("user", 4000025, upgrade.upgradeInstanceContainer), + ("intent", 4000024): ("intent", 4000025, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return {"version_upgrade": upgrade} diff --git a/plugins/VersionUpgrade/VersionUpgrade59to510/plugin.json b/plugins/VersionUpgrade/VersionUpgrade59to510/plugin.json new file mode 100644 index 0000000000..f06d6b3161 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade59to510/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 5.9 to 5.10", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 5.9 to Cura 5.10", + "api": 8, + "i18n-catalog": "cura" +} diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index 4a70851e33..a4bc967108 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -120,7 +120,12 @@ "support_z_distance": { "value": "layer_height * 2" }, "top_bottom_thickness": { "value": "layer_height * 4" }, "wall_overhang_angle": { "value": 55 }, - "wall_overhang_speed_factor": { "value": 55 }, + "wall_overhang_speed_factors": + { + "value": [ + 55 + ] + }, "zig_zaggify_infill": { "value": "infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'lines'" } } } \ No newline at end of file diff --git a/resources/definitions/ankermake_m5c.def.json b/resources/definitions/ankermake_m5c.def.json index 131bd6bd7a..3e1d7db0a9 100644 --- a/resources/definitions/ankermake_m5c.def.json +++ b/resources/definitions/ankermake_m5c.def.json @@ -238,7 +238,12 @@ "wall_extruder_nr": { "value": -1 }, "wall_line_width_0": { "value": 0.44 }, "wall_overhang_angle": { "value": 45 }, - "wall_overhang_speed_factor": { "value": 40 }, + "wall_overhang_speed_factors": + { + "value": [ + 40 + ] + }, "wall_thickness": { "value": 0.84 }, "wall_x_extruder_nr": { "value": -1 }, "zig_zaggify_infill": { "value": true } diff --git a/resources/definitions/atmat_signal_pro_base.def.json b/resources/definitions/atmat_signal_pro_base.def.json index cd59e1c169..01ecc1bdfe 100644 --- a/resources/definitions/atmat_signal_pro_base.def.json +++ b/resources/definitions/atmat_signal_pro_base.def.json @@ -167,7 +167,12 @@ "travel_avoid_supports": { "value": "True" }, "wall_line_width": { "value": "machine_nozzle_size" }, "wall_overhang_angle": { "value": "75" }, - "wall_overhang_speed_factor": { "value": "50" }, + "wall_overhang_speed_factors": + { + "value": [ + 50 + ] + }, "zig_zaggify_infill": { "value": "True" } } } \ No newline at end of file diff --git a/resources/definitions/blocks_base.def.json b/resources/definitions/blocks_base.def.json index fde5f912da..64e4213d5f 100644 --- a/resources/definitions/blocks_base.def.json +++ b/resources/definitions/blocks_base.def.json @@ -107,7 +107,7 @@ "travel_retract_before_outer_wall": { "value": true }, "wall_0_wipe_dist": { "value": 0.0 }, "wall_overhang_angle": { "default_value": 75 }, - "wall_overhang_speed_factor": { "default_value": 50 }, + "wall_overhang_speed_factors": { "default_value": "[50]" }, "wall_thickness": { "value": "line_width * 2" }, "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, "z_seam_type": { "value": "'back'" } diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index c1392e57ba..e8d8e94a18 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3232,6 +3232,19 @@ "minimum_value": 0.01, "settable_per_mesh": false, "settable_per_extruder": true + }, + "material_pressure_advance_factor": + { + "enabled": false, + "label": "Pressure advance factor", + "description": "Tuning factor for pressure advance, which is meant to synchronize extrusion with motion", + "default_value": 0.05, + "maximum_value_warning": 1.0, + "minimum_value": 0, + "type": "float", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false } } }, @@ -4715,6 +4728,31 @@ "settable_per_mesh": false, "settable_per_extruder": true }, + "cool_min_layer_time_overhang": + { + "label": "Minimum Layer Time with Overhang", + "description": "The minimum time spent in a layer that contains overhanging extrusions. 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, + "value": "cool_min_layer_time", + "minimum_value": "0", + "maximum_value_warning": "600", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "cool_min_layer_time_overhang_min_segment_length": + { + "label": "Minimum Overhang Segment Length", + "description": "When trying to apply the minimum layer time specific for overhanging layers, it will be applied only if at least one consecutive overhanging extrusion move is longer than this value.", + "unit": "mm", + "type": "float", + "default_value": 5, + "minimum_value": "0", + "maximum_value_warning": "500", + "settable_per_mesh": false, + "settable_per_extruder": true + }, "cool_min_speed": { "label": "Minimum Speed", @@ -8417,15 +8455,13 @@ "value": "support_angle", "settable_per_mesh": true }, - "wall_overhang_speed_factor": + "wall_overhang_speed_factors": { - "label": "Overhanging Wall Speed", - "description": "Overhanging walls will be printed at this percentage of their normal print speed.", + "label": "Overhanging Wall Speeds", + "description": "Overhanging walls will be printed at a percentage of their normal print speed. You can specify multiple values, so that even more overhanging walls will be printed even slower, e.g. by setting [75, 50, 25]", "unit": "%", - "type": "float", - "default_value": 100, - "minimum_value": "0.001", - "minimum_value_warning": "25", + "type": "[int]", + "default_value": "[100]", "settable_per_mesh": true }, "bridge_settings_enabled": diff --git a/resources/definitions/gutenberg_base.def.json b/resources/definitions/gutenberg_base.def.json index f0329bef6d..335718c21a 100644 --- a/resources/definitions/gutenberg_base.def.json +++ b/resources/definitions/gutenberg_base.def.json @@ -109,7 +109,12 @@ "travel_avoid_other_parts": { "default_value": false }, "wall_line_width": { "value": "machine_nozzle_size" }, "wall_overhang_angle": { "default_value": 75 }, - "wall_overhang_speed_factor": { "default_value": 50 }, + "wall_overhang_speed_factors": + { + "default_value": [ + 50 + ] + }, "zig_zaggify_infill": { "value": true } } } \ No newline at end of file diff --git a/resources/definitions/lotmaxx_sc60.def.json b/resources/definitions/lotmaxx_sc60.def.json index f4ce358be1..f283e56442 100644 --- a/resources/definitions/lotmaxx_sc60.def.json +++ b/resources/definitions/lotmaxx_sc60.def.json @@ -61,7 +61,12 @@ "support_pattern": { "default_value": "lines" }, "switch_extruder_retraction_amount": { "value": 100 }, "switch_extruder_retraction_speeds": { "value": 60 }, - "wall_overhang_speed_factor": { "value": 50 }, + "wall_overhang_speed_factors": + { + "value": [ + 50 + ] + }, "z_seam_corner": { "default_value": "z_seam_corner_any" }, "z_seam_relative": { "value": true }, "z_seam_type": { "default_value": "sharpest_corner" }, diff --git a/resources/definitions/snakeoil_standard_base.def.json b/resources/definitions/snakeoil_standard_base.def.json index 700edf3d35..16bec69636 100644 --- a/resources/definitions/snakeoil_standard_base.def.json +++ b/resources/definitions/snakeoil_standard_base.def.json @@ -109,7 +109,12 @@ "travel_avoid_other_parts": { "default_value": false }, "wall_line_width": { "value": "machine_nozzle_size" }, "wall_overhang_angle": { "default_value": 75 }, - "wall_overhang_speed_factor": { "default_value": 50 }, + "wall_overhang_speed_factors": + { + "default_value": [ + 50 + ] + }, "zig_zaggify_infill": { "value": true } } } \ No newline at end of file diff --git a/resources/definitions/sovol_base_bowden.def.json b/resources/definitions/sovol_base_bowden.def.json index 670b24fffc..0f389a25f8 100644 --- a/resources/definitions/sovol_base_bowden.def.json +++ b/resources/definitions/sovol_base_bowden.def.json @@ -10,6 +10,6 @@ "overrides": { "retraction_amount": { "default_value": 5 }, - "retraction_speed": { "value": "machine_max_feedrate_e" } + "retraction_speed": { "value": "resolveOrValue('machine_max_feedrate_e')" } } } \ No newline at end of file diff --git a/resources/definitions/ultimaker_sketch_sprint.def.json b/resources/definitions/ultimaker_sketch_sprint.def.json index 354808c580..882fe875d3 100644 --- a/resources/definitions/ultimaker_sketch_sprint.def.json +++ b/resources/definitions/ultimaker_sketch_sprint.def.json @@ -379,10 +379,12 @@ "wall_0_wipe_dist": { "value": 0.2 }, "wall_line_width_x": { "value": 0.58 }, "wall_overhang_angle": { "value": 35 }, - "wall_overhang_speed_factor": + "wall_overhang_speed_factors": { "minimum_value_warning": 15, - "value": 17.5 + "value": [ + 18 + ] }, "wall_thickness": { "value": 1 }, "wall_x_material_flow_layer_0": { "value": "material_flow" }, diff --git a/resources/definitions/voron2_base.def.json b/resources/definitions/voron2_base.def.json index dc6cd255bb..d08166d60d 100644 --- a/resources/definitions/voron2_base.def.json +++ b/resources/definitions/voron2_base.def.json @@ -119,7 +119,12 @@ "travel_avoid_other_parts": { "default_value": false }, "wall_line_width": { "value": "machine_nozzle_size" }, "wall_overhang_angle": { "default_value": 75 }, - "wall_overhang_speed_factor": { "default_value": 50 }, + "wall_overhang_speed_factors": + { + "default_value": [ + 50 + ] + }, "zig_zaggify_infill": { "value": true } } } \ No newline at end of file diff --git a/resources/definitions/vzbot_base.def.json b/resources/definitions/vzbot_base.def.json index 4efdbc2f66..a447f1acdb 100644 --- a/resources/definitions/vzbot_base.def.json +++ b/resources/definitions/vzbot_base.def.json @@ -195,7 +195,12 @@ "travel_avoid_other_parts": { "default_value": false }, "wall_line_width": { "value": "machine_nozzle_size" }, "wall_overhang_angle": { "default_value": 75 }, - "wall_overhang_speed_factor": { "default_value": 50 }, + "wall_overhang_speed_factors": + { + "default_value": [ + 50 + ] + }, "xy_offset_layer_0": { "value": -0.3 }, "z_seam_type": { "value": "'back'" }, "zig_zaggify_infill": { "value": true } diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml index bcbb6d7679..f76e1c6ef7 100644 --- a/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2025 UltiMaker // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -12,7 +12,7 @@ Button id: configurationItem property var configuration: null - hoverEnabled: isValidMaterial + hoverEnabled: isValidMaterial && isValidCore property bool isValidMaterial: { @@ -25,7 +25,6 @@ Button for (var index in extruderConfigurations) { var name = extruderConfigurations[index].material ? extruderConfigurations[index].material.name : "" - if (name == "" || name == "Unknown") { return false @@ -34,6 +33,25 @@ Button return true } + property bool isValidCore: + { + if (configuration === null) + { + return false + } + var extruderConfigurations = configuration.extruderConfigurations + var coresList = configuration.validCoresForPrinterType + for (var index in extruderConfigurations) + { + var name = extruderConfigurations[index].hotendID ? extruderConfigurations[index].hotendID : "" + if (name != "" && ! coresList.includes(name)) + { + return false + } + } + return true + } + background: Rectangle { color: parent.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") @@ -60,7 +78,7 @@ Button right: parent.right rightMargin: UM.Theme.getSize("wide_margin").width } - height: childrenRect.height + height: unknownMaterial.visible ? unknownMaterial.height : (repeater.count > 0 ? repeater.itemAt(0).height : 0) spacing: UM.Theme.getSize("default_margin").width Repeater @@ -72,21 +90,20 @@ Button { width: Math.round(parent.width / (configuration !== null ? configuration.extruderConfigurations.length : 1)) printCoreConfiguration: modelData - visible: configurationItem.isValidMaterial + visible: configurationItem.isValidMaterial && configurationItem.isValidCore } } - // Unknown material + // Unknown material or core ('variant') Item { id: unknownMaterial - height: unknownMaterialMessage.height + UM.Theme.getSize("thin_margin").width / 2 + height: unknownMaterialMessage.height width: parent.width anchors.top: parent.top - anchors.topMargin: UM.Theme.getSize("thin_margin").width / 2 - visible: !configurationItem.isValidMaterial + visible: ! (configurationItem.isValidMaterial && configurationItem.isValidCore) UM.ColorImage { @@ -102,13 +119,9 @@ Button UM.Label { id: unknownMaterialMessage - text: - { - if (configuration === null) - { - return "" - } + function whenUnknownMaterial() + { var extruderConfigurations = configuration.extruderConfigurations var unknownMaterials = [] for (var index in extruderConfigurations) @@ -135,9 +148,47 @@ Button unknownMaterials = "" + unknownMaterials + "" var draftResult = catalog.i18nc("@label", "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile."); - var result = draftResult.arg(unknownMaterials).arg("" + catalog.i18nc("@label","Marketplace") + " ") + return draftResult.arg(unknownMaterials).arg("" + catalog.i18nc("@label","Marketplace") + " ") + } - return result + function whenMismatchedCore() + { + var extruderConfigurations = configuration.extruderConfigurations + var coresList = configuration.validCoresForPrinterType + var mismatchedCores = [] + for (var index in extruderConfigurations) + { + var name = extruderConfigurations[index].hotendID ? extruderConfigurations[index].hotendID : "" + if (name != "" && ! coresList.includes(name)) + { + mismatchedCores.push(name) + } + } + + mismatchedCores = "" + mismatchedCores + "" + var draftResult = catalog.i18nc("@label", "This configuration is not available because there is a mismatch or other problem with core-type %1. Please visit %2 to check which cores this printer-type supports w.r.t. new slices."); + return draftResult.arg(mismatchedCores).arg("" + catalog.i18nc("@label","WEBSITE") + " ") + } + + text: + { + if (configuration === null) + { + return "" + } + + var extruderConfigurations = configuration.extruderConfigurations + var perExtruder = [] + for (var index in extruderConfigurations) + { + var matName = extruderConfigurations[index].material ? extruderConfigurations[index].material.name : "" + var coreName = extruderConfigurations[index].hotendID ? extruderConfigurations[index].hotendID : "" + perExtruder.push(` [${coreName}/${matName}]`) + } + + var configsStr = "" + perExtruder + "" + var warnStr = isValidMaterial ? whenMismatchedCore() : whenUnknownMaterial() + return configsStr + "
" + warnStr } width: extruderRow.width @@ -225,7 +276,7 @@ Button onClicked: { - if(isValidMaterial) + if (isValidMaterial && isValidCore) { toggleContent() Cura.MachineManager.applyRemoteConfiguration(configuration) diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index 1d8ad654e3..f46c59ff61 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -13,7 +13,7 @@ import "." Item { id: base - height: enabled ? UM.Theme.getSize("section").height + UM.Theme.getSize("narrow_margin").height : 0 + height: enabled ? Math.max(UM.Theme.getSize("section").height, label.height) + UM.Theme.getSize("narrow_margin").height : 0 anchors.left: parent.left anchors.right: parent.right diff --git a/resources/quality/flsun_v400/flsun_v400_normal.inst.cfg b/resources/quality/flsun_v400/flsun_v400_normal.inst.cfg index 50ed6266a0..d058a2d219 100644 --- a/resources/quality/flsun_v400/flsun_v400_normal.inst.cfg +++ b/resources/quality/flsun_v400/flsun_v400_normal.inst.cfg @@ -115,7 +115,7 @@ travel_avoid_other_parts = True travel_avoid_supports = True travel_retract_before_outer_wall = False wall_overhang_angle = 35.0 -wall_overhang_speed_factor = 60.0 +wall_overhang_speed_factors = [60] wall_thickness = =line_width*2 z_seam_corner = z_seam_corner_inner z_seam_position = backright diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-abs-175_0.2mm.inst.cfg index 4f5ae8282d..cf7eab6e73 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1c_um-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-abs-175_0.2mm.inst.cfg @@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-abscf-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-abscf-175_0.2mm.inst.cfg index 0ff8f11091..f0eafdde7e 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1c_um-abscf-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-abscf-175_0.2mm.inst.cfg @@ -52,5 +52,5 @@ support_xy_distance = 0.3 support_xy_distance_overhang = 0.25 support_z_distance = 0.15 wall_overhang_angle = 30 -wall_overhang_speed_factor = 50 +wall_overhang_speed_factors = [50] diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-absr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-absr-175_0.2mm.inst.cfg index ff1861c695..057ae522ed 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1c_um-absr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-absr-175_0.2mm.inst.cfg @@ -58,5 +58,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm.inst.cfg index fe6c6fa10c..7e03bcd23c 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm.inst.cfg @@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-abs-175_0.2mm.inst.cfg index 45e11f5e9d..f2a60264b1 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-abs-175_0.2mm.inst.cfg @@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-absr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-absr-175_0.2mm.inst.cfg index 18b44fda57..e87533888b 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-absr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-absr-175_0.2mm.inst.cfg @@ -58,5 +58,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm.inst.cfg index 774b8fb2a8..1ad566527f 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm.inst.cfg @@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_polymaker-polymax-pc-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_polymaker-polymax-pc-175_0.2mm.inst.cfg index e9d09c2c34..795235c75e 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_labs_polymaker-polymax-pc-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_polymaker-polymax-pc-175_0.2mm.inst.cfg @@ -54,5 +54,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.22 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-abs-175_0.2mm.inst.cfg index a5f7d05d6e..c4ab6ee115 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_labs_um-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-abs-175_0.2mm.inst.cfg @@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-abscf-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-abscf-175_0.2mm.inst.cfg index 56e2126cb2..25dbd1868a 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_labs_um-abscf-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-abscf-175_0.2mm.inst.cfg @@ -52,5 +52,5 @@ support_xy_distance = 0.3 support_xy_distance_overhang = 0.25 support_z_distance = 0.15 wall_overhang_angle = 30 -wall_overhang_speed_factor = 50 +wall_overhang_speed_factors = [50] diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-absr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-absr-175_0.2mm.inst.cfg index 7447dc5085..8b19d722d4 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_labs_um-absr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-absr-175_0.2mm.inst.cfg @@ -58,5 +58,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm.inst.cfg index d2f64e3b65..c19ff979bf 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm.inst.cfg @@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-abs-175_0.2mm.inst.cfg index caf364adc9..fe70d6d0c6 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-abs-175_0.2mm.inst.cfg @@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-abscf-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-abscf-175_0.2mm.inst.cfg index e4a889749a..d4d053df9f 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-abscf-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-abscf-175_0.2mm.inst.cfg @@ -54,5 +54,5 @@ support_xy_distance = 0.3 support_xy_distance_overhang = 0.25 support_z_distance = 0.15 wall_overhang_angle = 30 -wall_overhang_speed_factor = 50 +wall_overhang_speed_factors = [50] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-absr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-absr-175_0.2mm.inst.cfg index a08dd10302..29b3de7eac 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-absr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-absr-175_0.2mm.inst.cfg @@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm.inst.cfg index 420a719235..a3b23179cb 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm.inst.cfg @@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-abs-175_0.2mm.inst.cfg index 39b7d69230..e31448572e 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-abs-175_0.2mm.inst.cfg @@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-absr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-absr-175_0.2mm.inst.cfg index 84086e1856..3596d12095 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-absr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-absr-175_0.2mm.inst.cfg @@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm.inst.cfg index 155696925f..5d3c07cde9 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm.inst.cfg @@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_polymaker-polymax-pc-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_polymaker-polymax-pc-175_0.2mm.inst.cfg index a075d5ffe6..29433f8387 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_labs_polymaker-polymax-pc-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_polymaker-polymax-pc-175_0.2mm.inst.cfg @@ -54,5 +54,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.22 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-abs-175_0.2mm.inst.cfg index 3309bb6660..627ff55215 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-abs-175_0.2mm.inst.cfg @@ -59,5 +59,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-abscf-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-abscf-175_0.2mm.inst.cfg index 6596cdd4df..71bcca17c0 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-abscf-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-abscf-175_0.2mm.inst.cfg @@ -54,5 +54,5 @@ support_xy_distance = 0.3 support_xy_distance_overhang = 0.25 support_z_distance = 0.15 wall_overhang_angle = 30 -wall_overhang_speed_factor = 50 +wall_overhang_speed_factors = [50] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-absr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-absr-175_0.2mm.inst.cfg index e7a46cdcee..fa7a1b5e56 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-absr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-absr-175_0.2mm.inst.cfg @@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm.inst.cfg index 972840dde0..d9f9ba645e 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm.inst.cfg @@ -57,5 +57,5 @@ support_xy_overrides_z = xy_overrides_z support_z_distance = 0.15 top_skin_expand_distance = 2.4 wall_overhang_angle = 30 -wall_overhang_speed_factor = 40 +wall_overhang_speed_factors = [40] diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index 6c78e40503..c8935896b6 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -248,6 +248,7 @@ cool_fan_speed_0 cool_fan_full_at_height cool_fan_full_layer cool_min_layer_time +cool_min_layer_time_overhang cool_min_speed cool_lift_head cool_during_extruder_switch diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 160799be6e..1ae316f96c 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -567,7 +567,7 @@ "section_icon_column": [2.5, 2.5], "setting": [25.0, 1.8], - "setting_control": [11.0, 2.0], + "setting_control": [9.0, 2.0], "setting_control_radius": [0.15, 0.15], "setting_control_depth_margin": [1.4, 0.0], "setting_unit_margin": [0.5, 0.5],