diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 579be0d953..8caccc786e 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -73,9 +73,6 @@ from cura.Scene import ZOffsetDecorator from cura.Machines.ContainerTree import ContainerTree from cura.Machines.MachineErrorChecker import MachineErrorChecker -import cura.Machines.MaterialManager #Imported like this to prevent circular imports. -import cura.Machines.QualityManager #Imported like this to prevent circular imports. -from cura.Machines.VariantManager import VariantManager from cura.Machines.Models.BuildPlateModel import BuildPlateModel from cura.Machines.Models.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel @@ -924,20 +921,6 @@ class CuraApplication(QtApplication): self._extruder_manager = ExtruderManager() return self._extruder_manager - @deprecated("Use the ContainerTree structure instead.", since = "4.3") - def getVariantManager(self, *args) -> VariantManager: - return VariantManager.getInstance() - - # Can't deprecate this function since the deprecation marker collides with pyqtSlot! - @pyqtSlot(result = QObject) - def getMaterialManager(self, *args) -> cura.Machines.MaterialManager.MaterialManager: - return cura.Machines.MaterialManager.MaterialManager.getInstance() - - # Can't deprecate this function since the deprecation marker collides with pyqtSlot! - @pyqtSlot(result = QObject) - def getQualityManager(self, *args) -> cura.Machines.QualityManager.QualityManager: - return cura.Machines.QualityManager.QualityManager.getInstance() - def getIntentManager(self, *args) -> IntentManager: return IntentManager.getInstance() diff --git a/cura/Machines/MaterialManager.py b/cura/Machines/MaterialManager.py deleted file mode 100644 index 549d7bf747..0000000000 --- a/cura/Machines/MaterialManager.py +++ /dev/null @@ -1,349 +0,0 @@ -# Copyright (c) 2019 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from collections import defaultdict -import copy -import uuid -from typing import Dict, Optional, TYPE_CHECKING, Any, List, cast - -from PyQt5.Qt import QTimer, QObject, pyqtSignal, pyqtSlot - -from UM.Decorators import deprecated -from UM.Logger import Logger -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Util import parseBool -import cura.CuraApplication # Imported like this to prevent circular imports. -from cura.Machines.ContainerTree import ContainerTree -from cura.Settings.CuraContainerRegistry import CuraContainerRegistry - -from .MaterialNode import MaterialNode -from .MaterialGroup import MaterialGroup - -if TYPE_CHECKING: - from UM.Settings.DefinitionContainer import DefinitionContainer - from UM.Settings.InstanceContainer import InstanceContainer - from cura.Settings.GlobalStack import GlobalStack - from cura.Settings.ExtruderStack import ExtruderStack - - -# -# MaterialManager maintains a number of maps and trees for material lookup. -# The models GUI and QML use are now only dependent on the MaterialManager. That means as long as the data in -# MaterialManager gets updated correctly, the GUI models should be updated correctly too, and the same goes for GUI. -# -# For now, updating the lookup maps and trees here is very simple: we discard the old data completely and recreate them -# again. This means the update is exactly the same as initialization. There are performance concerns about this approach -# but so far the creation of the tables and maps is very fast and there is no noticeable slowness, we keep it like this -# because it's simple. -# -class MaterialManager(QObject): - __instance = None - - @classmethod - @deprecated("Use the ContainerTree structure instead.", since = "4.3") - def getInstance(cls) -> "MaterialManager": - if cls.__instance is None: - cls.__instance = MaterialManager() - return cls.__instance - - materialsUpdated = pyqtSignal() # Emitted whenever the material lookup tables are updated. - favoritesUpdated = pyqtSignal() # Emitted whenever the favorites are changed - - def __init__(self, parent = None): - super().__init__(parent) - # Material_type -> generic material metadata - self._fallback_materials_map = dict() # type: Dict[str, Dict[str, Any]] - - # Root_material_id -> MaterialGroup - self._material_group_map = dict() # type: Dict[str, MaterialGroup] - - # Material id including diameter (generic_pla_175) -> material root id (generic_pla) - self._diameter_material_map = dict() # type: Dict[str, str] - - # This is used in Legacy UM3 send material function and the material management page. - # GUID -> a list of material_groups - self._guid_material_groups_map = defaultdict(list) # type: Dict[str, List[MaterialGroup]] - - self._favorites = set(cura.CuraApplication.CuraApplication.getInstance().getPreferences().getValue("cura/favorite_materials").split(";")) - self.materialsUpdated.emit() - - self._update_timer = QTimer(self) - self._update_timer.setInterval(300) - - self._update_timer.setSingleShot(True) - self._update_timer.timeout.connect(self.materialsUpdated) - - container_registry = ContainerRegistry.getInstance() - container_registry.containerMetaDataChanged.connect(self._onContainerMetadataChanged) - container_registry.containerAdded.connect(self._onContainerMetadataChanged) - container_registry.containerRemoved.connect(self._onContainerMetadataChanged) - - def _onContainerMetadataChanged(self, container): - self._onContainerChanged(container) - - def _onContainerChanged(self, container): - container_type = container.getMetaDataEntry("type") - if container_type != "material": - return - - # update the maps - - self._update_timer.start() - - def getMaterialGroup(self, root_material_id: str) -> Optional[MaterialGroup]: - return self._material_group_map.get(root_material_id) - - def getRootMaterialIDForDiameter(self, root_material_id: str, approximate_diameter: str) -> str: - original_material = CuraContainerRegistry.getInstance().findInstanceContainersMetadata(id=root_material_id)[0] - if original_material["approximate_diameter"] == approximate_diameter: - return root_material_id - - matching_materials = CuraContainerRegistry.getInstance().findInstanceContainersMetadata(type = "material", brand = original_material["brand"], definition = original_material["definition"], material = original_material["material"], color_name = original_material["color_name"]) - for material in matching_materials: - if material["approximate_diameter"] == approximate_diameter: - return material["id"] - return root_material_id - - def getRootMaterialIDWithoutDiameter(self, root_material_id: str) -> str: - return self._diameter_material_map.get(root_material_id, "") - - def getMaterialGroupListByGUID(self, guid: str) -> Optional[List[MaterialGroup]]: - return self._guid_material_groups_map.get(guid) - - # Returns a dict of all material groups organized by root_material_id. - def getAllMaterialGroups(self) -> Dict[str, "MaterialGroup"]: - return self._material_group_map - - ## Gives a dictionary of all root material IDs and their associated - # MaterialNodes from the ContainerTree that are available for the given - # printer and variant. - def getAvailableMaterials(self, definition_id: str, nozzle_name: Optional[str]) -> Dict[str, MaterialNode]: - return ContainerTree.getInstance().machines[definition_id].variants[nozzle_name].materials - - # - # A convenience function to get available materials for the given machine with the extruder position. - # - def getAvailableMaterialsForMachineExtruder(self, machine: "GlobalStack", - extruder_stack: "ExtruderStack") -> Dict[str, MaterialNode]: - nozzle_name = None - if extruder_stack.variant.getId() != "empty_variant": - nozzle_name = extruder_stack.variant.getName() - - # Fetch the available materials (ContainerNode) for the current active machine and extruder setup. - materials = self.getAvailableMaterials(machine.definition.getId(), nozzle_name) - compatible_material_diameter = extruder_stack.getApproximateMaterialDiameter() - result = {key: material for key, material in materials.items() if material.container and float(material.getMetaDataEntry("approximate_diameter")) == compatible_material_diameter} - return result - - # - # Gets MaterialNode for the given extruder and machine with the given material name. - # Returns None if: - # 1. the given machine doesn't have materials; - # 2. cannot find any material InstanceContainers with the given settings. - # - def getMaterialNode(self, machine_definition_id: str, nozzle_name: Optional[str], - buildplate_name: Optional[str], diameter: float, root_material_id: str) -> Optional["MaterialNode"]: - container_tree = ContainerTree.getInstance() - machine_node = container_tree.machines.get(machine_definition_id) - if machine_node is None: - Logger.log("w", "Could not find machine with definition %s in the container tree", machine_definition_id) - return None - - variant_node = machine_node.variants.get(nozzle_name) - if variant_node is None: - Logger.log("w", "Could not find variant %s for machine with definition %s in the container tree", nozzle_name, machine_definition_id ) - return None - - material_node = variant_node.materials.get(root_material_id) - - if material_node is None: - Logger.log("w", "Could not find material %s for machine with definition %s and variant %s in the container tree", root_material_id, machine_definition_id, nozzle_name) - return None - - return material_node - - # - # Gets MaterialNode for the given extruder and machine with the given material type. - # Returns None if: - # 1. the given machine doesn't have materials; - # 2. cannot find any material InstanceContainers with the given settings. - # - def getMaterialNodeByType(self, global_stack: "GlobalStack", position: str, nozzle_name: str, - buildplate_name: Optional[str], material_guid: str) -> Optional["MaterialNode"]: - machine_definition = global_stack.definition - extruder = global_stack.extruderList[int(position)] - variant_name = extruder.variant.getName() - approximate_diameter = extruder.getApproximateMaterialDiameter() - - return self.getMaterialNode(machine_definition.getId(), variant_name, buildplate_name, approximate_diameter, material_guid) - - # There are 2 ways to get fallback materials; - # - A fallback by type (@sa getFallbackMaterialIdByMaterialType), which adds the generic version of this material - # - A fallback by GUID; If a material has been duplicated, it should also check if the original materials do have - # a GUID. This should only be done if the material itself does not have a quality just yet. - def getFallBackMaterialIdsByMaterial(self, material: "InstanceContainer") -> List[str]: - results = [] # type: List[str] - - material_groups = self.getMaterialGroupListByGUID(material.getMetaDataEntry("GUID")) - for material_group in material_groups: # type: ignore - if material_group.name != material.getId(): - # If the material in the group is read only, put it at the front of the list (since that is the most - # likely one to get a result) - if material_group.is_read_only: - results.insert(0, material_group.name) - else: - results.append(material_group.name) - - fallback = self.getFallbackMaterialIdByMaterialType(material.getMetaDataEntry("material")) - if fallback is not None: - results.append(fallback) - return results - - # - # Built-in quality profiles may be based on generic material IDs such as "generic_pla". - # For materials such as ultimaker_pla_orange, no quality profiles may be found, so we should fall back to use - # the generic material IDs to search for qualities. - # - # An example would be, suppose we have machine with preferred material set to "filo3d_pla" (1.75mm), but its - # extruders only use 2.85mm materials, then we won't be able to find the preferred material for this machine. - # A fallback would be to fetch a generic material of the same type "PLA" as "filo3d_pla", and in this case it will - # be "generic_pla". This function is intended to get a generic fallback material for the given material type. - # - # This function returns the generic root material ID for the given material type, where material types are "PLA", - # "ABS", etc. - # - def getFallbackMaterialIdByMaterialType(self, material_type: str) -> Optional[str]: - # For safety - if material_type not in self._fallback_materials_map: - Logger.log("w", "The material type [%s] does not have a fallback material" % material_type) - return None - fallback_material = self._fallback_materials_map[material_type] - if fallback_material: - return self.getRootMaterialIDWithoutDiameter(fallback_material["id"]) - else: - return None - - ## Get default material for given global stack, extruder position and extruder nozzle name - # you can provide the extruder_definition and then the position is ignored (useful when building up global stack in CuraStackBuilder) - def getDefaultMaterial(self, global_stack: "GlobalStack", position: str, nozzle_name: Optional[str], - extruder_definition: Optional["DefinitionContainer"] = None) -> "MaterialNode": - definition_id = global_stack.definition.getId() - machine_node = ContainerTree.getInstance().machines[definition_id] - if nozzle_name in machine_node.variants: - nozzle_node = machine_node.variants[nozzle_name] - else: - Logger.log("w", "Could not find variant {nozzle_name} for machine with definition {definition_id} in the container tree".format(nozzle_name = nozzle_name, definition_id = definition_id)) - nozzle_node = next(iter(machine_node.variants)) - - if not parseBool(global_stack.getMetaDataEntry("has_materials", False)): - return next(iter(nozzle_node.materials)) - - if extruder_definition is not None: - material_diameter = extruder_definition.getProperty("material_diameter", "value") - else: - material_diameter = global_stack.extruders[position].getCompatibleMaterialDiameter() - approximate_material_diameter = round(material_diameter) - - return nozzle_node.preferredMaterial(approximate_material_diameter) - - def removeMaterialByRootId(self, root_material_id: str): - container_registry = CuraContainerRegistry.getInstance() - results = container_registry.findContainers(id = root_material_id) - if not results: - container_registry.addWrongContainerId(root_material_id) - - for result in results: - container_registry.removeContainer(result.getMetaDataEntry("id", "")) - - @pyqtSlot("QVariant", result = bool) - def canMaterialBeRemoved(self, material_node: "MaterialNode"): - # Check if the material is active in any extruder train. In that case, the material shouldn't be removed! - # In the future we might enable this again, but right now, it's causing a ton of issues if we do (since it - # corrupts the configuration) - root_material_id = material_node.base_file - ids_to_remove = {metadata.get("id", "") for metadata in CuraContainerRegistry.getInstance().findInstanceContainersMetadata(base_file = root_material_id)} - - for extruder_stack in CuraContainerRegistry.getInstance().findContainerStacks(type = "extruder_train"): - if extruder_stack.material.getId() in ids_to_remove: - return False - return True - - ## Change the user-visible name of a material. - # \param material_node The ContainerTree node of the material to rename. - # \param name The new name for the material. - @pyqtSlot("QVariant", str) - def setMaterialName(self, material_node: "MaterialNode", name: str) -> None: - return cura.CuraApplication.CuraApplication.getMaterialManagementModel().setMaterialName(material_node, name) - - ## Deletes a material from Cura. - # - # This function does not do any safety checking any more. Please call this - # function only if: - # - The material is not read-only. - # - The material is not used in any stacks. - # If the material was not lazy-loaded yet, this will fully load the - # container. When removing this material node, all other materials with - # the same base fill will also be removed. - # \param material_node The material to remove. - @pyqtSlot("QVariant") - def removeMaterial(self, material_node: "MaterialNode") -> None: - return cura.CuraApplication.CuraApplication.getMaterialManagementModel().setMaterialName(material_node) - - def duplicateMaterialByRootId(self, root_material_id: str, new_base_id: Optional[str] = None, new_metadata: Optional[Dict[str, Any]] = None) -> Optional[str]: - result = cura.CuraApplication.CuraApplication.getInstance().getMaterialManagementModel().duplicateMaterialByBaseFile(root_material_id, new_base_id, new_metadata) - if result is None: - return "ERROR" - return result - - ## Creates a duplicate of a material with the same GUID and base_file - # metadata. - # \param material_node The node representing the material to duplicate. - # \param new_base_id A new material ID for the base material. The IDs of - # the submaterials will be based off this one. If not provided, a material - # ID will be generated automatically. - # \param new_metadata Metadata for the new material. If not provided, this - # will be duplicated from the original material. - # \return The root material ID of the duplicate material. - @pyqtSlot("QVariant", result = str) - def duplicateMaterial(self, material_node: MaterialNode, new_base_id: Optional[str] = None, new_metadata: Optional[Dict[str, Any]] = None) -> str: - result = cura.CuraApplication.CuraApplication.getInstance().getMaterialManagementModel().duplicateMaterial(material_node, new_base_id, new_metadata) - if result is None: - return "ERROR" - return result - - ## Create a new material by cloning the preferred material for the current - # material diameter and generate a new GUID. - # - # The material type is explicitly left to be the one from the preferred - # material, since this allows the user to still have SOME profiles to work - # with. - # \return The ID of the newly created material. - @pyqtSlot(result = str) - def createMaterial(self) -> str: - return cura.CuraApplication.CuraApplication.getMaterialManagementModel().createMaterial() - - @pyqtSlot(str) - def addFavorite(self, root_material_id: str) -> None: - self._favorites.add(root_material_id) - self.materialsUpdated.emit() - - # Ensure all settings are saved. - cura.CuraApplication.CuraApplication.getInstance().getPreferences().setValue("cura/favorite_materials", ";".join(list(self._favorites))) - cura.CuraApplication.CuraApplication.getInstance().saveSettings() - - @pyqtSlot(str) - def removeFavorite(self, root_material_id: str) -> None: - try: - self._favorites.remove(root_material_id) - except KeyError: - Logger.log("w", "Could not delete material %s from favorites as it was already deleted", root_material_id) - return - self.materialsUpdated.emit() - - # Ensure all settings are saved. - cura.CuraApplication.CuraApplication.getInstance().getPreferences().setValue("cura/favorite_materials", ";".join(list(self._favorites))) - cura.CuraApplication.CuraApplication.getInstance().saveSettings() - - @pyqtSlot() - def getFavorites(self): - return self._favorites diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py index 368d30ae25..73d9d48b22 100644 --- a/cura/Machines/Models/BaseMaterialsModel.py +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -1,9 +1,9 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, Dict, Set +from typing import Dict, Set -from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty +from PyQt5.QtCore import Qt, QTimer, pyqtSignal, pyqtProperty from UM.Qt.ListModel import ListModel @@ -38,14 +38,25 @@ class BaseMaterialsModel(ListModel): self._extruder_stack = None self._enabled = True + # CURA-6904 + # Updating the material model requires information from material nodes and containers. We use a timer here to + # make sure that an update function call will not be directly invoked by an event. Because the triggered event + # can be caused in the middle of a XMLMaterial loading, and the material container we try to find may not be + # in the system yet. This will cause an infinite recursion of (1) trying to load a material, (2) trying to + # update the material model, (3) cannot find the material container, load it, (4) repeat #1. + self._update_timer = QTimer() + self._update_timer.setInterval(100) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._update) + # Update the stack and the model data when the machine changes self._machine_manager.globalContainerChanged.connect(self._updateExtruderStack) self._updateExtruderStack() # Update this model when switching machines or tabs, when adding materials or changing their metadata. - self._machine_manager.activeStackChanged.connect(self._update) + self._machine_manager.activeStackChanged.connect(self._onChanged) ContainerTree.getInstance().materialsChanged.connect(self._materialsListChanged) - self._application.getMaterialManagementModel().favoritesChanged.connect(self._update) + self._application.getMaterialManagementModel().favoritesChanged.connect(self._onChanged) self.addRoleName(Qt.UserRole + 1, "root_material_id") self.addRoleName(Qt.UserRole + 2, "id") @@ -64,14 +75,17 @@ class BaseMaterialsModel(ListModel): self.addRoleName(Qt.UserRole + 15, "container_node") self.addRoleName(Qt.UserRole + 16, "is_favorite") + def _onChanged(self) -> None: + self._update_timer.start() + def _updateExtruderStack(self): global_stack = self._machine_manager.activeMachine if global_stack is None: return if self._extruder_stack is not None: - self._extruder_stack.pyqtContainersChanged.disconnect(self._update) - self._extruder_stack.approximateMaterialDiameterChanged.disconnect(self._update) + self._extruder_stack.pyqtContainersChanged.disconnect(self._onChanged) + self._extruder_stack.approximateMaterialDiameterChanged.disconnect(self._onChanged) try: self._extruder_stack = global_stack.extruderList[self._extruder_position] @@ -79,10 +93,10 @@ class BaseMaterialsModel(ListModel): self._extruder_stack = None if self._extruder_stack is not None: - self._extruder_stack.pyqtContainersChanged.connect(self._update) - self._extruder_stack.approximateMaterialDiameterChanged.connect(self._update) + self._extruder_stack.pyqtContainersChanged.connect(self._onChanged) + self._extruder_stack.approximateMaterialDiameterChanged.connect(self._onChanged) # Force update the model when the extruder stack changes - self._update() + self._onChanged() def setExtruderPosition(self, position: int): if self._extruder_stack is None or self._extruder_position != position: @@ -99,7 +113,7 @@ class BaseMaterialsModel(ListModel): self._enabled = enabled if self._enabled: # ensure the data is there again. - self._update() + self._onChanged() self.enabledChanged.emit() @pyqtProperty(bool, fset = setEnabled, notify = enabledChanged) @@ -119,12 +133,12 @@ class BaseMaterialsModel(ListModel): return if material.variant.machine.container_id != global_stack.definition.getId(): return - self._update() + self._onChanged() ## Triggered when the list of favorite materials is changed. def _favoritesChanged(self, material_base_file: str) -> None: if material_base_file in self._available_materials: - self._update() + self._onChanged() ## This is an abstract method that needs to be implemented by the specific # models themselves. diff --git a/cura/Machines/Models/FavoriteMaterialsModel.py b/cura/Machines/Models/FavoriteMaterialsModel.py index 77ae4da115..6b8f0e8e56 100644 --- a/cura/Machines/Models/FavoriteMaterialsModel.py +++ b/cura/Machines/Models/FavoriteMaterialsModel.py @@ -9,14 +9,14 @@ class FavoriteMaterialsModel(BaseMaterialsModel): def __init__(self, parent = None): super().__init__(parent) cura.CuraApplication.CuraApplication.getInstance().getPreferences().preferenceChanged.connect(self._onFavoritesChanged) - self._update() + self._onChanged() ## Triggered when any preference changes, but only handles it when the list # of favourites is changed. def _onFavoritesChanged(self, preference_key: str) -> None: if preference_key != "cura/favorite_materials": return - self._update() + self._onChanged() def _update(self): if not self._canUpdate(): diff --git a/cura/Machines/Models/GenericMaterialsModel.py b/cura/Machines/Models/GenericMaterialsModel.py index 42aff40d0d..9ed1632b87 100644 --- a/cura/Machines/Models/GenericMaterialsModel.py +++ b/cura/Machines/Models/GenericMaterialsModel.py @@ -7,7 +7,7 @@ class GenericMaterialsModel(BaseMaterialsModel): def __init__(self, parent = None): super().__init__(parent) - self._update() + self._onChanged() def _update(self): if not self._canUpdate(): diff --git a/cura/Machines/Models/IntentCategoryModel.py b/cura/Machines/Models/IntentCategoryModel.py index 2733c87ca2..add70f4c1a 100644 --- a/cura/Machines/Models/IntentCategoryModel.py +++ b/cura/Machines/Models/IntentCategoryModel.py @@ -3,7 +3,7 @@ from PyQt5.QtCore import Qt import collections -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Optional, Dict from cura.Machines.Models.IntentModel import IntentModel from cura.Settings.IntentManager import IntentManager @@ -25,16 +25,26 @@ class IntentCategoryModel(ListModel): IntentCategoryRole = Qt.UserRole + 2 WeightRole = Qt.UserRole + 3 QualitiesRole = Qt.UserRole + 4 - - #Translations to user-visible string. Ordered by weight. - #TODO: Create a solution for this name and weight to be used dynamically. - name_translation = collections.OrderedDict() #type: "collections.OrderedDict[str,str]" - name_translation["default"] = catalog.i18nc("@label", "Default") - name_translation["engineering"] = catalog.i18nc("@label", "Engineering") - name_translation["smooth"] = catalog.i18nc("@label", "Smooth") + DescriptionRole = Qt.UserRole + 5 modelUpdated = pyqtSignal() + # Translations to user-visible string. Ordered by weight. + # TODO: Create a solution for this name and weight to be used dynamically. + _translations = collections.OrderedDict() # type: "collections.OrderedDict[str,Dict[str,Optional[str]]]" + _translations["default"] = { + "name": catalog.i18nc("@label", "Default") + } + _translations["engineering"] = { + "name": catalog.i18nc("@label", "Engineering"), + "description": catalog.i18nc("@text", "Suitable for engineering work") + + } + _translations["smooth"] = { + "name": catalog.i18nc("@label", "Smooth"), + "description": catalog.i18nc("@text", "Optimized for a smooth surfaces") + } + ## Creates a new model for a certain intent category. # \param The category to list the intent profiles for. def __init__(self, intent_category: str) -> None: @@ -45,6 +55,7 @@ class IntentCategoryModel(ListModel): self.addRoleName(self.IntentCategoryRole, "intent_category") self.addRoleName(self.WeightRole, "weight") self.addRoleName(self.QualitiesRole, "qualities") + self.addRoleName(self.DescriptionRole, "description") application = cura.CuraApplication.CuraApplication.getInstance() @@ -73,10 +84,18 @@ class IntentCategoryModel(ListModel): qualities = IntentModel() qualities.setIntentCategory(category) result.append({ - "name": self.name_translation.get(category, catalog.i18nc("@label", "Unknown")), + "name": IntentCategoryModel.translation(category, "name", catalog.i18nc("@label", "Unknown")), + "description": IntentCategoryModel.translation(category, "description", None), "intent_category": category, - "weight": list(self.name_translation.keys()).index(category), + "weight": list(self._translations.keys()).index(category), "qualities": qualities }) result.sort(key = lambda k: k["weight"]) self.setItems(result) + + ## Get a display value for a category. See IntenCategoryModel._translations + ## for categories and keys + @staticmethod + def translation(category: str, key: str, default: Optional[str] = None): + display_strings = IntentCategoryModel._translations.get(category, {}) + return display_strings.get(key, default) diff --git a/cura/Machines/Models/QualityManagementModel.py b/cura/Machines/Models/QualityManagementModel.py index 3b503edcf0..d8b0785778 100644 --- a/cura/Machines/Models/QualityManagementModel.py +++ b/cura/Machines/Models/QualityManagementModel.py @@ -345,11 +345,13 @@ class QualityManagementModel(ListModel): # Create quality_changes group items quality_changes_item_list = [] for quality_changes_group in quality_changes_group_list: + # CURA-6913 Note that custom qualities can be based on "not supported", so the quality group can be None. quality_group = quality_group_dict.get(quality_changes_group.quality_type) + quality_type = quality_changes_group.quality_type item = {"name": quality_changes_group.name, "is_read_only": False, "quality_group": quality_group, - "quality_type": quality_group.quality_type, + "quality_type": quality_type, "quality_changes_group": quality_changes_group, "intent_category": quality_changes_group.intent_category, "section_name": catalog.i18nc("@label", "Custom profiles"), diff --git a/cura/Machines/QualityManager.py b/cura/Machines/QualityManager.py deleted file mode 100644 index 4aa88d6775..0000000000 --- a/cura/Machines/QualityManager.py +++ /dev/null @@ -1,215 +0,0 @@ -# Copyright (c) 2019 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from typing import Any, Dict, List, Optional, TYPE_CHECKING - -from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot - -from UM.Util import parseBool -from UM.Settings.InstanceContainer import InstanceContainer -from UM.Decorators import deprecated - -import cura.CuraApplication -from cura.Settings.ExtruderStack import ExtruderStack - -from cura.Machines.ContainerTree import ContainerTree # The implementation that replaces this manager, to keep the deprecated interface working. -from .QualityChangesGroup import QualityChangesGroup -from .QualityGroup import QualityGroup -from .QualityNode import QualityNode - -if TYPE_CHECKING: - from UM.Settings.Interfaces import DefinitionContainerInterface - from cura.Settings.GlobalStack import GlobalStack - from .QualityChangesGroup import QualityChangesGroup - - -# -# Similar to MaterialManager, QualityManager maintains a number of maps and trees for quality profile lookup. -# The models GUI and QML use are now only dependent on the QualityManager. That means as long as the data in -# QualityManager gets updated correctly, the GUI models should be updated correctly too, and the same goes for GUI. -# -# For now, updating the lookup maps and trees here is very simple: we discard the old data completely and recreate them -# again. This means the update is exactly the same as initialization. There are performance concerns about this approach -# but so far the creation of the tables and maps is very fast and there is no noticeable slowness, we keep it like this -# because it's simple. -# -class QualityManager(QObject): - __instance = None - - @classmethod - @deprecated("Use the ContainerTree structure instead.", since = "4.3") - def getInstance(cls) -> "QualityManager": - if cls.__instance is None: - cls.__instance = QualityManager() - return cls.__instance - - qualitiesUpdated = pyqtSignal() - - def __init__(self, parent = None) -> None: - super().__init__(parent) - application = cura.CuraApplication.CuraApplication.getInstance() - self._container_registry = application.getContainerRegistry() - - self._empty_quality_container = application.empty_quality_container - self._empty_quality_changes_container = application.empty_quality_changes_container - - # For quality lookup - self._machine_nozzle_buildplate_material_quality_type_to_quality_dict = {} # type: Dict[str, QualityNode] - - # For quality_changes lookup - self._machine_quality_type_to_quality_changes_dict = {} # type: Dict[str, QualityNode] - - self._default_machine_definition_id = "fdmprinter" - - self._container_registry.containerMetaDataChanged.connect(self._onContainerMetadataChanged) - self._container_registry.containerAdded.connect(self._onContainerMetadataChanged) - self._container_registry.containerRemoved.connect(self._onContainerMetadataChanged) - - def _onContainerMetadataChanged(self, container: InstanceContainer) -> None: - self._onContainerChanged(container) - - def _onContainerChanged(self, container: InstanceContainer) -> None: - container_type = container.getMetaDataEntry("type") - if container_type not in ("quality", "quality_changes"): - return - - # Returns a dict of "custom profile name" -> QualityChangesGroup - def getQualityChangesGroups(self, machine: "GlobalStack") -> List[QualityChangesGroup]: - variant_names = [extruder.variant.getName() for extruder in machine.extruderList] - material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in machine.extruderList] - extruder_enabled = [extruder.isEnabled for extruder in machine.extruderList] - machine_node = ContainerTree.getInstance().machines[machine.definition.getId()] - return machine_node.getQualityChangesGroups(variant_names, material_bases, extruder_enabled) - - ## Gets the quality groups for the current printer. - # - # Both available and unavailable quality groups will be included. Whether - # a quality group is available can be known via the field - # ``QualityGroup.is_available``. For more details, see QualityGroup. - # \return A dictionary with quality types as keys and the quality groups - # for those types as values. - def getQualityGroups(self, global_stack: "GlobalStack") -> Dict[str, QualityGroup]: - # Gather up the variant names and material base files for each extruder. - variant_names = [extruder.variant.getName() for extruder in global_stack.extruderList] - material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruderList] - extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruderList] - definition_id = global_stack.definition.getId() - return ContainerTree.getInstance().machines[definition_id].getQualityGroups(variant_names, material_bases, extruder_enabled) - - def getQualityGroupsForMachineDefinition(self, machine: "GlobalStack") -> Dict[str, QualityGroup]: - machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition) - - # To find the quality container for the GlobalStack, check in the following fall-back manner: - # (1) the machine-specific node - # (2) the generic node - machine_node = self._machine_nozzle_buildplate_material_quality_type_to_quality_dict.get(machine_definition_id) - default_machine_node = self._machine_nozzle_buildplate_material_quality_type_to_quality_dict.get( - self._default_machine_definition_id) - nodes_to_check = [machine_node, default_machine_node] - - # Iterate over all quality_types in the machine node - quality_group_dict = dict() - for node in nodes_to_check: - if node and node.quality_type: - quality_group = QualityGroup(node.getMetaDataEntry("name", ""), node.quality_type) - quality_group.setGlobalNode(node) - quality_group_dict[node.quality_type] = quality_group - - return quality_group_dict - - ## Get the quality group for the preferred quality type for a certain - # global stack. - # - # If the preferred quality type is not available, ``None`` will be - # returned. - # \param machine The global stack of the machine to get the preferred - # quality group for. - # \return The preferred quality group, or ``None`` if that is not - # available. - def getDefaultQualityType(self, machine: "GlobalStack") -> Optional[QualityGroup]: - machine_node = ContainerTree.getInstance().machines[machine.definition.getId()] - quality_groups = self.getQualityGroups(machine) - result = quality_groups.get(machine_node.preferred_quality_type) - if result is not None and result.is_available: - return result - return None # If preferred quality type is not available, leave it up for the caller. - - - # - # Methods for GUI - # - - ## Deletes a custom profile. It will be gone forever. - # \param quality_changes_group The quality changes group representing the - # profile to delete. - @pyqtSlot(QObject) - def removeQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup") -> None: - return cura.CuraApplication.CuraApplication.getInstance().getQualityManagementModel().removeQualityChangesGroup(quality_changes_group) - - ## Rename a custom profile. - # - # Because the names must be unique, the new name may not actually become - # the name that was given. The actual name is returned by this function. - # \param quality_changes_group The custom profile that must be renamed. - # \param new_name The desired name for the profile. - # \return The actual new name of the profile, after making the name - # unique. - @pyqtSlot(QObject, str, result = str) - def renameQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup", new_name: str) -> str: - return cura.CuraApplication.CuraApplication.getInstance().getQualityManagementModel().renameQualityChangesGroup(quality_changes_group, new_name) - - ## Duplicates a given quality profile OR quality changes profile. - # \param new_name The desired name of the new profile. This will be made - # unique, so it might end up with a different name. - # \param quality_model_item The item of this model to duplicate, as - # dictionary. See the descriptions of the roles of this list model. - @pyqtSlot(str, "QVariantMap") - def duplicateQualityChanges(self, quality_changes_name: str, quality_model_item: Dict[str, Any]) -> None: - return cura.CuraApplication.CuraApplication.getInstance().getQualityManagementModel().duplicateQualityChanges(quality_changes_name, quality_model_item) - - ## Create quality changes containers from the user containers in the active - # stacks. - # - # This will go through the global and extruder stacks and create - # quality_changes containers from the user containers in each stack. These - # then replace the quality_changes containers in the stack and clear the - # user settings. - # \param base_name The new name for the quality changes profile. The final - # name of the profile might be different from this, because it needs to be - # made unique. - @pyqtSlot(str) - def createQualityChanges(self, base_name: str) -> None: - return cura.CuraApplication.CuraApplication.getInstance().getQualityManagementModel().createQualityChanges(base_name) - - ## Create a quality changes container with the given set-up. - # \param quality_type The quality type of the new container. - # \param new_name The name of the container. This name must be unique. - # \param machine The global stack to create the profile for. - # \param extruder_stack The extruder stack to create the profile for. If - # not provided, only a global container will be created. - def _createQualityChanges(self, quality_type: str, new_name: str, machine: "GlobalStack", extruder_stack: Optional["ExtruderStack"]) -> "InstanceContainer": - return cura.CuraApplication.CuraApplication.getInstance().getQualityManagementModel()._createQualityChanges(quality_type, new_name, machine, extruder_stack) - -# -# Gets the machine definition ID that can be used to search for Quality containers that are suitable for the given -# machine. The rule is as follows: -# 1. By default, the machine definition ID for quality container search will be "fdmprinter", which is the generic -# machine. -# 2. If a machine has its own machine quality (with "has_machine_quality = True"), we should use the given machine's -# own machine definition ID for quality search. -# Example: for an Ultimaker 3, the definition ID should be "ultimaker3". -# 3. When condition (2) is met, AND the machine has "quality_definition" defined in its definition file, then the -# definition ID specified in "quality_definition" should be used. -# Example: for an Ultimaker 3 Extended, it has "quality_definition = ultimaker3". This means Ultimaker 3 Extended -# shares the same set of qualities profiles as Ultimaker 3. -# -def getMachineDefinitionIDForQualitySearch(machine_definition: "DefinitionContainerInterface", - default_definition_id: str = "fdmprinter") -> str: - machine_definition_id = default_definition_id - if parseBool(machine_definition.getMetaDataEntry("has_machine_quality", False)): - # Only use the machine's own quality definition ID if this machine has machine quality. - machine_definition_id = machine_definition.getMetaDataEntry("quality_definition") - if machine_definition_id is None: - machine_definition_id = machine_definition.getId() - - return machine_definition_id diff --git a/cura/Machines/VariantManager.py b/cura/Machines/VariantManager.py deleted file mode 100644 index 617f85b8ca..0000000000 --- a/cura/Machines/VariantManager.py +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright (c) 2019 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from collections import OrderedDict -from typing import Optional, TYPE_CHECKING, Dict - -from UM.ConfigurationErrorMessage import ConfigurationErrorMessage -from UM.Decorators import deprecated -from UM.Logger import Logger -from UM.Util import parseBool - -from cura.Machines.ContainerNode import ContainerNode -from cura.Machines.VariantType import VariantType, ALL_VARIANT_TYPES -from cura.Settings.CuraContainerRegistry import CuraContainerRegistry -from cura.Settings.GlobalStack import GlobalStack - -if TYPE_CHECKING: - from UM.Settings.DefinitionContainer import DefinitionContainer - - -# -# VariantManager is THE place to look for a specific variant. It maintains two variant lookup tables with the following -# structure: -# -# [machine_definition_id] -> [variant_type] -> [variant_name] -> ContainerNode(metadata / container) -# Example: "ultimaker3" -> "buildplate" -> "Glass" (if present) -> ContainerNode -# -> ... -# -> "nozzle" -> "AA 0.4" -# -> "BB 0.8" -# -> ... -# -# [machine_definition_id] -> [machine_buildplate_type] -> ContainerNode(metadata / container) -# Example: "ultimaker3" -> "glass" (this is different from the variant name) -> ContainerNode -# -# Note that the "container" field is not loaded in the beginning because it would defeat the purpose of lazy-loading. -# A container is loaded when getVariant() is called to load a variant InstanceContainer. -# -class VariantManager: - __instance = None - - @classmethod - @deprecated("Use the ContainerTree structure instead.", since = "4.3") - def getInstance(cls) -> "VariantManager": - if cls.__instance is None: - cls.__instance = VariantManager() - return cls.__instance - - def __init__(self) -> None: - self._machine_to_variant_dict_map = dict() # type: Dict[str, Dict["VariantType", Dict[str, ContainerNode]]] - - self._exclude_variant_id_list = ["empty_variant"] - - # - # Gets the variant InstanceContainer with the given information. - # Almost the same as getVariantMetadata() except that this returns an InstanceContainer if present. - # - def getVariantNode(self, machine_definition_id: str, variant_name: str, - variant_type: Optional["VariantType"] = None) -> Optional["ContainerNode"]: - if variant_type is None: - variant_node = None - variant_type_dict = self._machine_to_variant_dict_map.get("machine_definition_id", {}) - for variant_dict in variant_type_dict.values(): - if variant_name in variant_dict: - variant_node = variant_dict[variant_name] - break - return variant_node - - return self._machine_to_variant_dict_map.get(machine_definition_id, {}).get(variant_type, {}).get(variant_name) - - def getVariantNodes(self, machine: "GlobalStack", variant_type: "VariantType") -> Dict[str, ContainerNode]: - machine_definition_id = machine.definition.getId() - return self._machine_to_variant_dict_map.get(machine_definition_id, {}).get(variant_type, {}) - - # - # Gets the default variant for the given machine definition. - # If the optional GlobalStack is given, the metadata information will be fetched from the GlobalStack instead of - # the DefinitionContainer. Because for machines such as UM2, you can enable Olsson Block, which will set - # "has_variants" to True in the GlobalStack. In those cases, we need to fetch metadata from the GlobalStack or - # it may not be correct. - # - def getDefaultVariantNode(self, machine_definition: "DefinitionContainer", - variant_type: "VariantType", - global_stack: Optional["GlobalStack"] = None) -> Optional["ContainerNode"]: - machine_definition_id = machine_definition.getId() - container_for_metadata_fetching = global_stack if global_stack is not None else machine_definition - - preferred_variant_name = None - if variant_type == VariantType.BUILD_PLATE: - if parseBool(container_for_metadata_fetching.getMetaDataEntry("has_variant_buildplates", False)): - preferred_variant_name = container_for_metadata_fetching.getMetaDataEntry("preferred_variant_buildplate_name") - else: - if parseBool(container_for_metadata_fetching.getMetaDataEntry("has_variants", False)): - preferred_variant_name = container_for_metadata_fetching.getMetaDataEntry("preferred_variant_name") - - node = None - if preferred_variant_name: - node = self.getVariantNode(machine_definition_id, preferred_variant_name, variant_type) - return node diff --git a/cura/Machines/VariantNode.py b/cura/Machines/VariantNode.py index 1c5474422e..334a01158b 100644 --- a/cura/Machines/VariantNode.py +++ b/cura/Machines/VariantNode.py @@ -122,8 +122,8 @@ class VariantNode(ContainerNode): if base_file not in self.materials: # Completely new base file. Always better than not having a file as long as it matches our set-up. if material_definition != "fdmprinter" and material_definition != self.machine.container_id: return - material_variant = container.getMetaDataEntry("variant_name", empty_variant_container.getName()) - if material_variant != self.variant_name: + material_variant = container.getMetaDataEntry("variant_name") + if material_variant is not None and material_variant != self.variant_name: return else: # We already have this base profile. Replace the base profile if the new one is more specific. new_definition = container.getMetaDataEntry("definition") diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index b3c5da0b07..488454e640 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1586,8 +1586,9 @@ class MachineManager(QObject): intent_category = self.activeIntentCategory if intent_category != "default": - intent_display_name = IntentCategoryModel.name_translation.get(intent_category, - catalog.i18nc("@label", "Unknown")) + intent_display_name = IntentCategoryModel.translation(intent_category, + "name", + catalog.i18nc("@label", "Unknown")) display_name = "{intent_name} - {the_rest}".format(intent_name = intent_display_name, the_rest = display_name) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index b973a0775a..29a6d8ff30 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -106,6 +106,11 @@ class StartSliceJob(Job): if stack is None: return False + # if there are no per-object settings we don't need to check the other settings here + stack_top = stack.getTop() + if stack_top is None or not stack_top.getAllKeys(): + return False + for key in stack.getAllKeys(): validation_state = stack.getProperty(key, "validationState") if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError, ValidatorState.Invalid): diff --git a/plugins/PreviewStage/PreviewMain.qml b/plugins/PreviewStage/PreviewMain.qml index 6b5ce2436b..1b8387644d 100644 --- a/plugins/PreviewStage/PreviewMain.qml +++ b/plugins/PreviewStage/PreviewMain.qml @@ -11,12 +11,30 @@ import Cura 1.0 as Cura Item { + + // Subtract the actionPanel from the safe area. This way the view won't draw interface elements under/over it + Item { + id: safeArea + visible: false + anchors.left: parent.left + anchors.right: actionPanelWidget.left + anchors.top: parent.top + anchors.bottom: actionPanelWidget.top + } + Loader { id: previewMain anchors.fill: parent source: UM.Controller.activeView != null && UM.Controller.activeView.mainComponent != null ? UM.Controller.activeView.mainComponent : "" + + Binding + { + target: previewMain.item + property: "safeArea" + value:safeArea + } } Cura.ActionPanelWidget diff --git a/plugins/SimulationView/LayerSlider.qml b/plugins/SimulationView/LayerSlider.qml index 88f298d1f5..15b0fdbe12 100644 --- a/plugins/SimulationView/LayerSlider.qml +++ b/plugins/SimulationView/LayerSlider.qml @@ -176,6 +176,11 @@ Item } } + onHeightChanged : { + // After a height change, the pixel-position of the lower handle is out of sync with the property value + setLowerValue(lowerValue) + } + // Upper handle Rectangle { @@ -333,7 +338,6 @@ Item // set the slider position based on the lower value function setValue(value) { - // Normalize values between range, since using arrow keys will create out-of-the-range values value = sliderRoot.normalizeValue(value) diff --git a/plugins/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index 28d5a74523..3a7cb0d2fe 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -48,7 +48,7 @@ if TYPE_CHECKING: catalog = i18nCatalog("cura") -## View used to display g-code paths. +## The preview layer view. It is used to display g-code paths. class SimulationView(CuraView): # Must match SimulationViewMenuComponent.qml LAYER_VIEW_TYPE_MATERIAL_TYPE = 0 diff --git a/plugins/SimulationView/SimulationViewMainComponent.qml b/plugins/SimulationView/SimulationViewMainComponent.qml index 58901652d3..cd7d108370 100644 --- a/plugins/SimulationView/SimulationViewMainComponent.qml +++ b/plugins/SimulationView/SimulationViewMainComponent.qml @@ -11,9 +11,18 @@ import Cura 1.0 as Cura Item { - property bool is_simulation_playing: false + // An Item whose bounds are guaranteed to be safe for overlays to be placed. + // Defaults to parent, ie. the entire available area + // eg. the layer slider will not be placed in this area. + property var safeArea: parent + + + property bool isSimulationPlaying: false + readonly property var layerSliderSafeYMax: safeArea.y + safeArea.height + visible: UM.SimulationView.layerActivity && CuraApplication.platformActivity + // A slider which lets users trace a single layer (XY movements) PathSlider { id: pathSlider @@ -58,7 +67,7 @@ Item UM.SimpleButton { id: playButton - iconSource: !is_simulation_playing ? "./resources/simulation_resume.svg": "./resources/simulation_pause.svg" + iconSource: !isSimulationPlaying ? "./resources/simulation_resume.svg": "./resources/simulation_pause.svg" width: UM.Theme.getSize("small_button").width height: UM.Theme.getSize("small_button").height hoverColor: UM.Theme.getColor("slider_handle_active") @@ -88,7 +97,7 @@ Item onClicked: { - if(is_simulation_playing) + if(isSimulationPlaying) { pauseSimulation() } @@ -102,7 +111,7 @@ Item { UM.SimulationView.setSimulationRunning(false) simulationTimer.stop() - is_simulation_playing = false + isSimulationPlaying = false layerSlider.manuallyChanged = true pathSlider.manuallyChanged = true } @@ -131,7 +140,7 @@ Item // When the user plays the simulation, if the path slider is at the end of this layer, we start // the simulation at the beginning of the current layer. - if (!is_simulation_playing) + if (!isSimulationPlaying) { if (currentPath >= numPaths) { @@ -166,22 +175,28 @@ Item } // The status must be set here instead of in the resumeSimulation function otherwise it won't work // correctly, because part of the logic is in this trigger function. - is_simulation_playing = true + isSimulationPlaying = true } } + // Scrolls trough Z layers LayerSlider { + property var preferredHeight: UM.Theme.getSize("slider_layerview_size").height + property double heightMargin: UM.Theme.getSize("default_margin").height id: layerSlider width: UM.Theme.getSize("slider_handle").width - height: UM.Theme.getSize("slider_layerview_size").height + height: preferredHeight + heightMargin * 2 < layerSliderSafeYMax ? preferredHeight : layerSliderSafeYMax - heightMargin * 2 anchors { right: parent.right verticalCenter: parent.verticalCenter + verticalCenterOffset: -(parent.height - layerSliderSafeYMax) / 2 // center between parent top and layerSliderSafeYMax rightMargin: UM.Theme.getSize("default_margin").width + bottomMargin: heightMargin + topMargin: heightMargin } // Custom properties diff --git a/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py b/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py index b6416b2bd0..0446af177b 100644 --- a/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py +++ b/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py @@ -36,9 +36,15 @@ class ZeroConfClient: def start(self) -> None: self._service_changed_request_queue = Queue() self._service_changed_request_event = Event() - self._service_changed_request_thread = Thread(target=self._handleOnServiceChangedRequests, daemon=True) + try: + self._zero_conf = Zeroconf() + # CURA-6855 catch WinErrors + except OSError: + Logger.logException("e", "Failed to create zeroconf instance.") + return + + self._service_changed_request_thread = Thread(target = self._handleOnServiceChangedRequests, daemon = True) self._service_changed_request_thread.start() - self._zero_conf = Zeroconf() self._zero_conf_browser = ServiceBrowser(self._zero_conf, self.ZERO_CONF_NAME, [self._queueService]) # Cleanup ZeroConf resources. diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py b/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py index 195bc70016..e8eefb1bb0 100644 --- a/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py +++ b/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py @@ -2,6 +2,7 @@ import configparser from typing import Tuple, List import io from UM.VersionUpgrade import VersionUpgrade +from UM.Util import parseBool # To parse whether the Alternate Skin Rotations function is activated. _renamed_container_id_map = { "ultimaker2_0.25": "ultimaker2_olsson_0.25", @@ -61,6 +62,11 @@ class VersionUpgrade43to44(VersionUpgrade): if parser["metadata"].get("type", "") == "quality_changes": parser["metadata"]["intent_category"] = "default" + if "values" in parser: + # Alternate skin rotation should be translated to top/bottom line directions. + if "skin_alternate_rotation" in parser["values"] and parseBool(parser["values"]["skin_alternate_rotation"]): + parser["values"]["skin_angles"] = "[45, 135, 0, 90]" + result = io.StringIO() parser.write(result) return [filename], [result.getvalue()] diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index fe0f73f2b3..093638d594 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -76,7 +76,9 @@ class XmlMaterialProfile(InstanceContainer): new_setting_values_dict[self.__material_properties_setting_map[k]] = v if not apply_to_all: # Historical: If you only want to modify THIS container. We only used that to prevent recursion but with the below code that's no longer necessary. - container_query = registry.findContainers(id = self.getId()) + # CURA-6920: This is an optimization, but it also fixes the problem that you can only set metadata for a + # material container that can be found in the container registry. + container_query = [self] else: container_query = registry.findContainers(base_file = self.getMetaDataEntry("base_file")) diff --git a/resources/definitions/101Hero.def.json b/resources/definitions/101Hero.def.json index a77ea5ed97..d356d15da9 100644 --- a/resources/definitions/101Hero.def.json +++ b/resources/definitions/101Hero.def.json @@ -34,7 +34,6 @@ }, "speed_print": { "default_value": 14 }, "speed_travel": { "value": "speed_print" }, - "speed_infill": { "default_value": 14 }, "speed_wall": { "value": "speed_print * 0.7" }, "speed_topbottom": { "value": "speed_print * 0.7" }, "speed_layer_0": { "value": "speed_print * 0.7" }, diff --git a/resources/definitions/3dator.def.json b/resources/definitions/3dator.def.json index 901ea87510..ac37523379 100644 --- a/resources/definitions/3dator.def.json +++ b/resources/definitions/3dator.def.json @@ -17,15 +17,10 @@ "overrides": { "machine_name": { "default_value": "3Dator" }, - "speed_travel": { "default_value": 120 }, "prime_tower_size": { "default_value": 8.660254037844387 }, "infill_sparse_density": { "default_value": 20 }, - "speed_wall_x": { "default_value": 45 }, - "speed_wall_0": { "default_value": 40 }, - "speed_topbottom": { "default_value": 35 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 50 }, - "speed_infill": { "default_value": 60 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, "machine_height": { "default_value": 260 }, @@ -33,8 +28,6 @@ "machine_depth": { "default_value": 170 }, "machine_width": { "default_value": 180 }, "retraction_speed": {"default_value":100}, - "cool_fan_speed_min": {"default_value": 20}, - "cool_fan_speed_max": {"default_value": 70}, "adhesion_type": { "default_value": "none" }, "machine_head_with_fans_polygon": { "default_value": [ diff --git a/resources/definitions/Mark2_for_Ultimaker2.def.json b/resources/definitions/Mark2_for_Ultimaker2.def.json index b02dc78adf..1aca2a3844 100644 --- a/resources/definitions/Mark2_for_Ultimaker2.def.json +++ b/resources/definitions/Mark2_for_Ultimaker2.def.json @@ -79,9 +79,6 @@ "line_width": { "value": "round(machine_nozzle_size * 0.875, 2)" }, - "speed_layer_0": { - "default_value": 20 - }, "speed_support": { "value": "speed_wall_0" }, @@ -107,22 +104,18 @@ "default_value": 25 }, "switch_extruder_retraction_amount": { - "default_value": 0, "value": "retraction_amount", "enabled": false }, "switch_extruder_retraction_speeds": { - "default_value": 25, "value": "retraction_speed", "enabled": false }, "switch_extruder_retraction_speed": { - "default_value": 25, "value": "retraction_retract_speed", "enabled": false }, "switch_extruder_prime_speed": { - "default_value": 25, "value": "retraction_prime_speed", "enabled": false }, @@ -142,11 +135,9 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode" : { - "default_value": "", "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nM200 D0 T0 ;reset filament diameter\\nM200 D0 T1\\nG28 Z0; home all\\nG28 X0 Y0\\nG0 Z20 F2400 ;move the platform to 20mm\\nG92 E0\\nM190 S{material_bed_temperature_layer_0}\\nM109 T0 S{material_standby_temperature, 0}\\nM109 T1 S{material_print_temperature_layer_0, 1}\\nM104 T0 S{material_print_temperature_layer_0, 0}\\nT1 ; move to the 2th head\\nG0 Z20 F2400\\nG92 E-7.0 ;prime distance\\nG1 E0 F45 ;purge nozzle\\nG1 E-5.1 F1500 ; retract\\nG1 X90 Z0.01 F5000 ; move away from the prime poop\\nG1 X50 F9000\\nG0 Z20 F2400\\nT0 ; move to the first head\\nM104 T1 S{material_standby_temperature, 1}\\nG0 Z20 F2400\\nM104 T{initial_extruder_nr} S{material_print_temperature_layer_0, initial_extruder_nr}\\nG92 E-7.0\\nG1 E0 F45 ;purge nozzle\\nG1 X60 Z0.01 F5000 ; move away from the prime poop\\nG1 X20 F9000\\nM400 ;finish all moves\\nG92 E0\\n;end of startup sequence\\n\"" }, "machine_end_gcode" : { - "default_value": "", "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G90 ;absolute positioning\\nM104 S0 T0 ;extruder heater off\\nM104 S0 T1\\nM140 S0 ;turn off bed\\nT0 ; move to the first head\\nM107 ;fan off\"" }, "machine_extruder_count": { @@ -158,12 +149,10 @@ }, "acceleration_print": { - "default_value": 2000, "value": "2000" }, "acceleration_travel": { - "default_value": 3000, "value": "acceleration_print if magic_spiralize else 3000" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, @@ -183,7 +172,6 @@ }, "jerk_travel": { - "default_value": 20, "value": "jerk_print if magic_spiralize else 20" }, "jerk_layer_0": { "value": "jerk_topbottom" }, diff --git a/resources/definitions/abax_pri3.def.json b/resources/definitions/abax_pri3.def.json index 1ab48b865a..529636be90 100644 --- a/resources/definitions/abax_pri3.def.json +++ b/resources/definitions/abax_pri3.def.json @@ -49,33 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 70 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/abax_pri5.def.json b/resources/definitions/abax_pri5.def.json index 46229ce756..9e4e7e3b20 100644 --- a/resources/definitions/abax_pri5.def.json +++ b/resources/definitions/abax_pri5.def.json @@ -49,33 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 70 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/abax_titan.def.json b/resources/definitions/abax_titan.def.json index 9f67117d6c..98643df22b 100644 --- a/resources/definitions/abax_titan.def.json +++ b/resources/definitions/abax_titan.def.json @@ -49,33 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 70 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/alfawise_u20.def.json b/resources/definitions/alfawise_u20.def.json index 748bf8797a..4da42fdb1d 100644 --- a/resources/definitions/alfawise_u20.def.json +++ b/resources/definitions/alfawise_u20.def.json @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 50 - }, "layer_height_0": { "default_value": 0.2 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/alfawise_u30.def.json b/resources/definitions/alfawise_u30.def.json index 44caf61d1a..e05536f66c 100644 --- a/resources/definitions/alfawise_u30.def.json +++ b/resources/definitions/alfawise_u30.def.json @@ -22,16 +22,9 @@ "default_value": "; -- END GCODE --\nM104 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\nG1 Z+0.5 E-5 X-20 Y-20 F80 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\nM107 ;turn the fan off; -- end of END GCODE --" }, "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { "default_value": 210 }, - "material_bed_temperature": { "default_value": 50 }, "layer_height_0": { "default_value": 0.2 }, "wall_thickness": { "default_value": 1.2 }, "speed_print": { "default_value": 40 }, - "speed_infill": { "default_value": 50 }, - "speed_wall": { "default_value": 35 }, - "speed_topbottom": { "default_value": 35 }, - "speed_travel": { "default_value": 120 }, - "speed_layer_0": { "default_value": 20 }, "support_enable": { "default_value": true }, "retraction_enable": { "default_value": true }, "retraction_amount": { "default_value": 5 }, diff --git a/resources/definitions/bfb.def.json b/resources/definitions/bfb.def.json index d1dfa9ef1b..e88c8c792b 100644 --- a/resources/definitions/bfb.def.json +++ b/resources/definitions/bfb.def.json @@ -15,26 +15,19 @@ }, "overrides": { - "speed_topbottom": { "default_value": 40 }, "speed_print": { "default_value": 40 }, "machine_extruder_count": { "default_value": 1 }, "prime_tower_size": { "default_value": 7.745966692414834 }, "machine_name": { "default_value": "BFB_Test" }, "machine_heated_bed": { "default_value": false }, - "speed_layer_0": { "default_value": 25 }, "machine_width": { "default_value": 275 }, "machine_gcode_flavor": { "default_value": "BFB" }, "machine_depth": { "default_value": 265 }, - "speed_infill": { "default_value": 30 }, "machine_center_is_zero": { "default_value": true }, "machine_height": { "default_value": 240 }, "layer_height": { "default_value": 0.25 }, - "material_print_temperature": { "default_value": 200 }, "retraction_amount": { "default_value": 0.05 }, - "speed_wall_0": { "default_value": 25 }, - "speed_travel": { "default_value": 50 }, "infill_sparse_density": { "default_value": 10 }, - "layer_height_0": { "default_value": 0.5 }, - "speed_wall_x": { "default_value": 20 } + "layer_height_0": { "default_value": 0.5 } } } diff --git a/resources/definitions/bibo2_dual.def.json b/resources/definitions/bibo2_dual.def.json index 0197426ac6..a644185915 100644 --- a/resources/definitions/bibo2_dual.def.json +++ b/resources/definitions/bibo2_dual.def.json @@ -1,5 +1,4 @@ { - "id": "BIBO2 dual", "version": 2, "name": "BIBO2 dual", "inherits": "fdmprinter", diff --git a/resources/definitions/bq_hephestos.def.json b/resources/definitions/bq_hephestos.def.json index be024cd6fa..d9e84dae87 100644 --- a/resources/definitions/bq_hephestos.def.json +++ b/resources/definitions/bq_hephestos.def.json @@ -54,33 +54,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 220 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/bq_hephestos_2.def.json b/resources/definitions/bq_hephestos_2.def.json index 90a86433fb..5c122eb9a4 100644 --- a/resources/definitions/bq_hephestos_2.def.json +++ b/resources/definitions/bq_hephestos_2.def.json @@ -24,26 +24,14 @@ "machine_height": { "default_value": 220 }, "machine_heated_bed": { "default_value": false }, "machine_center_is_zero": { "default_value": false }, - "material_print_temperature": { "default_value": 210 }, - "material_bed_temperature": { "default_value": 0 }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { "default_value": 3 }, "wall_thickness": { "default_value": 1.2 }, "top_bottom_thickness": { "default_value": 1.2 }, "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { "default_value": 15 }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 160 }, - "speed_layer_0": { "default_value": 30 }, - "speed_wall_x": { "default_value": 35 }, - "speed_wall_0": { "default_value": 30 }, - "speed_infill": { "default_value": 80 }, - "speed_topbottom": { "default_value": 35 }, - "skirt_brim_speed": { "default_value": 35 }, "skirt_line_count": { "default_value": 4 }, "skirt_brim_minimal_length": { "default_value": 30 }, - "skirt_gap": { "default_value": 6 }, - "cool_fan_full_at_height": { "default_value": 0.4 } + "skirt_gap": { "default_value": 6 } } } diff --git a/resources/definitions/bq_hephestos_xl.def.json b/resources/definitions/bq_hephestos_xl.def.json index a8d63cbb41..16d0953bf1 100644 --- a/resources/definitions/bq_hephestos_xl.def.json +++ b/resources/definitions/bq_hephestos_xl.def.json @@ -53,33 +53,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 220 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/bq_witbox.def.json b/resources/definitions/bq_witbox.def.json index b96da6179c..fce2af9f97 100644 --- a/resources/definitions/bq_witbox.def.json +++ b/resources/definitions/bq_witbox.def.json @@ -54,33 +54,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 220 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/bq_witbox_2.def.json b/resources/definitions/bq_witbox_2.def.json index 7412647852..d1114aafd6 100644 --- a/resources/definitions/bq_witbox_2.def.json +++ b/resources/definitions/bq_witbox_2.def.json @@ -41,21 +41,12 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 0 - }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { - "default_value": 3 - }, "wall_thickness": { "default_value": 1.2 }, @@ -65,33 +56,9 @@ "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { - "default_value": 15 - }, "speed_print": { "default_value": 60 }, - "speed_travel": { - "default_value": 160 - }, - "speed_layer_0": { - "default_value": 30 - }, - "speed_wall_x": { - "default_value": 35 - }, - "speed_wall_0": { - "default_value": 30 - }, - "speed_infill": { - "default_value": 80 - }, - "speed_topbottom": { - "default_value": 35 - }, - "skirt_brim_speed": { - "default_value": 35 - }, "skirt_line_count": { "default_value": 4 }, @@ -101,9 +68,6 @@ "skirt_gap": { "default_value": 6 }, - "cool_fan_full_at_height": { - "default_value": 0.4 - }, "support_enable": { "default_value": false } diff --git a/resources/definitions/builder_premium_large.def.json b/resources/definitions/builder_premium_large.def.json index d100cd1ba9..e5411027e3 100644 --- a/resources/definitions/builder_premium_large.def.json +++ b/resources/definitions/builder_premium_large.def.json @@ -35,8 +35,6 @@ "material_standby_temperature": { "value": "material_print_temperature" }, "switch_extruder_retraction_speeds": {"default_value": 15 }, - "switch_extruder_retraction_speed": {"default_value": 15 }, - "switch_extruder_prime_speed": {"default_value": 15 }, "switch_extruder_retraction_amount": {"value": 1 }, "speed_travel": { "value": "100" }, @@ -85,8 +83,6 @@ "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, - "retraction_retract_speed": { "default_value": 15 }, - "retraction_prime_speed": { "default_value": 15 }, "travel_retract_before_outer_wall": { "default_value": true }, "skin_overlap": { "value": "15" }, "adhesion_type": { "default_value": "skirt" }, diff --git a/resources/definitions/builder_premium_medium.def.json b/resources/definitions/builder_premium_medium.def.json index 16aeeffdae..1817dfe7db 100644 --- a/resources/definitions/builder_premium_medium.def.json +++ b/resources/definitions/builder_premium_medium.def.json @@ -35,8 +35,6 @@ "material_standby_temperature": { "value": "material_print_temperature" }, "switch_extruder_retraction_speeds": {"default_value": 15 }, - "switch_extruder_retraction_speed": {"default_value": 15 }, - "switch_extruder_prime_speed": {"default_value": 15 }, "switch_extruder_retraction_amount": {"value": 1 }, "speed_travel": { "value": "100" }, @@ -85,8 +83,6 @@ "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, - "retraction_retract_speed": { "default_value": 15 }, - "retraction_prime_speed": { "default_value": 15 }, "travel_retract_before_outer_wall": { "default_value": true }, "skin_overlap": { "value": "15" }, "adhesion_type": { "default_value": "skirt" }, diff --git a/resources/definitions/builder_premium_small.def.json b/resources/definitions/builder_premium_small.def.json index 290e79660f..f126da7752 100644 --- a/resources/definitions/builder_premium_small.def.json +++ b/resources/definitions/builder_premium_small.def.json @@ -34,8 +34,6 @@ "material_standby_temperature": { "value": "material_print_temperature" }, "switch_extruder_retraction_speeds": {"default_value": 15 }, - "switch_extruder_retraction_speed": {"default_value": 15 }, - "switch_extruder_prime_speed": {"default_value": 15 }, "switch_extruder_retraction_amount": {"value": 1 }, "speed_travel": { "value": "100" }, @@ -84,8 +82,6 @@ "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, - "retraction_retract_speed": { "default_value": 15 }, - "retraction_prime_speed": { "default_value": 15 }, "travel_retract_before_outer_wall": { "default_value": true }, "skin_overlap": { "value": "15" }, "adhesion_type": { "default_value": "skirt" }, diff --git a/resources/definitions/cocoon_create_modelmaker.def.json b/resources/definitions/cocoon_create_modelmaker.def.json index 83d1f41a99..b738dc64ff 100644 --- a/resources/definitions/cocoon_create_modelmaker.def.json +++ b/resources/definitions/cocoon_create_modelmaker.def.json @@ -47,9 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 220 - }, "layer_height": { "default_value": 0.10 }, @@ -65,21 +62,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 70 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/creality_cr-x.def.json b/resources/definitions/creality_cr-x.def.json index 0117c4fffe..13409a7212 100644 --- a/resources/definitions/creality_cr-x.def.json +++ b/resources/definitions/creality_cr-x.def.json @@ -1,5 +1,4 @@ { - "id": "CR-X", "version": 2, "name": "Creality CR-X", "inherits": "fdmprinter", @@ -32,7 +31,6 @@ "adhesion_type": { "default_value": "skirt" }, "gantry_height": { "value": "30" }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 120 }, "machine_max_acceleration_x": { "default_value": 500 }, "machine_max_acceleration_y": { "default_value": 500 }, "machine_max_acceleration_z": { "default_value": 100 }, @@ -43,9 +41,7 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { "default_value": "G21 ;metric values\nG28 ;home all\nG90 ;absolute positioning\nM107 ;start with the fan off\nG1 F2400 Z15.0 ;raise the nozzle 15mm\nM109 S{material_print_temperature} ;Set Extruder Temperature and Wait\nM190 S{material_bed_temperature}; Wait for bed temperature to reach target temp\nT0 ;Switch to Extruder 1\nG1 F3000 X5 Y10 Z0.2 ;move to prime start position\nG92 E0 ;reset extrusion distance\nG1 F600 X160 E15 ;prime nozzle in a line\nG1 F5000 X180 ;quick wipe\nG92 E0 ;reset extrusion distance" }, "machine_end_gcode": { "default_value": "M104 S0 ;hotend off\nM140 S0 ;bed off\nG92 E0\nG1 F2000 E-100 ;retract filament 100mm\nG92 E0\nG1 F3000 X0 Y270 ;move bed for easy part removal\nM84 ;disable steppers" }, - "material_print_temperature": { "default_value": 200 }, "wall_thickness": { "default_value": 1 }, - "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { "default_value": 1 } + "top_bottom_thickness": { "default_value": 1 } } } diff --git a/resources/definitions/creatable_d3.def.json b/resources/definitions/creatable_d3.def.json index 1491089e24..f621bcbe97 100644 --- a/resources/definitions/creatable_d3.def.json +++ b/resources/definitions/creatable_d3.def.json @@ -27,14 +27,12 @@ "machine_max_feedrate_z": { "default_value": 300 }, "gantry_height": {"value": "43"}, "layer_height": { "default_value": 0.1 }, - "relative_extrusion": { "default_value": false }, + "relative_extrusion": { "value": "False" }, "retraction_combing": { "default_value": "off" }, - "retraction_hop_enabled": { "default_value": true }, + "retraction_hop_enabled": { "default_value": true }, "retraction_hop_only_when_collides": { "default_value": false }, - "retraction_retract_speed": { "default_value": 100 }, "retraction_speed": { "default_value": 100 }, "retraction_amount": { "default_value": 4.5 }, - "retraction_prime_speed": { "default_value": 45 }, "machine_start_gcode": { "default_value": "G21\nG90\nM82\nM106 S255\nG28\nG92 E0\nG1 Z100 F5000\nM190 S50\nM109 S200\nG1 X-135\nG1 Z0.3\nG92 E-32\nG1 E0 F1000\nG1 E50 F200\nG1 F1000\nG1 X-125\nG92 E0" }, diff --git a/resources/definitions/cubicon_3dp_110f.def.json b/resources/definitions/cubicon_3dp_110f.def.json index 168b57cd66..eecfdd5911 100644 --- a/resources/definitions/cubicon_3dp_110f.def.json +++ b/resources/definitions/cubicon_3dp_110f.def.json @@ -1,5 +1,4 @@ { - "id": "3DP-110F", "version": 2, "name": "Cubicon Single", "inherits": "cubicon_common", diff --git a/resources/definitions/cubicon_3dp_210f.def.json b/resources/definitions/cubicon_3dp_210f.def.json index cc99899f92..5d8ff78487 100644 --- a/resources/definitions/cubicon_3dp_210f.def.json +++ b/resources/definitions/cubicon_3dp_210f.def.json @@ -1,5 +1,4 @@ { - "id": "3DP-210F", "version": 2, "name": "Cubicon Style", "inherits": "cubicon_common", diff --git a/resources/definitions/cubicon_3dp_310f.def.json b/resources/definitions/cubicon_3dp_310f.def.json index 90d0e3f25c..1dc78f0ebf 100644 --- a/resources/definitions/cubicon_3dp_310f.def.json +++ b/resources/definitions/cubicon_3dp_310f.def.json @@ -1,5 +1,4 @@ { - "id": "3DP-310F", "version": 2, "name": "Cubicon Single Plus", "inherits": "cubicon_common", diff --git a/resources/definitions/cubicon_common.def.json b/resources/definitions/cubicon_common.def.json index ae085c7552..6b1e3d953e 100644 --- a/resources/definitions/cubicon_common.def.json +++ b/resources/definitions/cubicon_common.def.json @@ -23,77 +23,34 @@ "travel_compensate_overlapping_walls_enabled": { "default_value": false }, - "travel_compensate_overlapping_walls_0_enabled": { - "default_value": false - }, - "travel_compensate_overlapping_walls_x_enabled": { - "default_value": false - }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "infill_line_width": { - "default_value": 0.6 - }, "adhesion_type": { "default_value": "raft" }, - "roofing_pattern": { "default_value": "lines" }, "top_bottom_pattern": { "default_value": "lines" }, - "top_bottom_pattern_0": { - "default_value": "zigzag" - }, "fill_perimeter_gaps": { "default_value": "everywhere" }, - "infill_pattern": { - "default_value": "zigzag" - }, "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { - "default_value": 15 - }, "infill_before_walls": { "default_value": false }, - "infill_sparse_thickness": { "default_value": 0.2 }, "top_bottom_thickness": { "default_value": 1.0 }, - "top_thickness": { - "default_value": 1.0 - }, "bottom_thickness": { - "default_value": 0.6, "value": "top_bottom_thickness * 0.6" }, - "roofing_layer_count": { - "default_value": 1 - }, - "skin_preshrink": { "default_value": true }, "material_flow_layer_0": { "default_value": 100 }, - "top_skin_preshrink": { "default_value": 1.2 }, - "bottom_skin_preshrink": { "default_value": 1.2 }, "max_skin_angle_for_expansion": { "default_value": 90 }, - "min_skin_width_for_expansion": { "default_value": 2.7475 }, "skin_angles": { "default_value": "[135,45]" }, - "roofing_angles": { "default_value": "[135,45]" }, "coasting_volume": { "default_value": 0.032 }, "wall_thickness": { "default_value": 1.2 }, - "wall_line_count": { "default_value": 3 }, - "speed_wall_0": { "default_value": 25 }, - "skin_overlap": { "default_value": 5 }, "cool_min_layer_time_fan_speed_max": { "default_value": 15 }, "cool_min_layer_time": { "default_value": 15 }, - "support_roof_pattern": { "default_value": "zigzag" }, - "support_bottom_pattern": { "default_value": "zigzag" }, "support_interface_pattern": { "default_value": "zigzag" }, "support_pattern": { "default_value": "zigzag" }, - "retraction_amount": { "default_value": 1.5 }, - "top_layers": { - "default_value": 5 - }, - "bottom_layers": { - "default_value": 3 - } + "retraction_amount": { "default_value": 1.5 } } } \ No newline at end of file diff --git a/resources/definitions/dagoma_discoeasy200.def.json b/resources/definitions/dagoma_discoeasy200.def.json index 17e285a422..30c0abdab2 100644 --- a/resources/definitions/dagoma_discoeasy200.def.json +++ b/resources/definitions/dagoma_discoeasy200.def.json @@ -52,9 +52,6 @@ "speed_print": { "default_value": 60 }, - "speed_travel": { - "default_value": 100 - }, "retraction_amount": { "default_value": 3.5 }, diff --git a/resources/definitions/dagoma_magis.def.json b/resources/definitions/dagoma_magis.def.json index 9d2f7170c6..dc5a0f86d2 100644 --- a/resources/definitions/dagoma_magis.def.json +++ b/resources/definitions/dagoma_magis.def.json @@ -55,9 +55,6 @@ "speed_print": { "default_value": 40 }, - "speed_travel": { - "default_value": 120 - }, "retraction_amount": { "default_value": 3.8 }, diff --git a/resources/definitions/dagoma_neva.def.json b/resources/definitions/dagoma_neva.def.json index ea6046b613..43a3e0c4f1 100644 --- a/resources/definitions/dagoma_neva.def.json +++ b/resources/definitions/dagoma_neva.def.json @@ -55,9 +55,6 @@ "speed_print": { "default_value": 40 }, - "speed_travel": { - "default_value": 120 - }, "retraction_amount": { "default_value": 3.8 }, diff --git a/resources/definitions/delta_go.def.json b/resources/definitions/delta_go.def.json index cd1fb180c2..04f0580898 100644 --- a/resources/definitions/delta_go.def.json +++ b/resources/definitions/delta_go.def.json @@ -16,12 +16,8 @@ "overrides": { "machine_name": { "default_value": "Delta Go" }, "default_material_print_temperature": { "default_value": 210 }, - "speed_travel": { "default_value": 150 }, "prime_tower_size": { "default_value": 8.66 }, "infill_sparse_density": { "default_value": 10 }, - "speed_wall_x": { "default_value": 30 }, - "speed_wall_0": { "default_value": 30 }, - "speed_topbottom": { "default_value": 20 }, "layer_height": { "default_value": 0.15 }, "speed_print": { "default_value": 30 }, "machine_heated_bed": { "default_value": false }, diff --git a/resources/definitions/deltabot.def.json b/resources/definitions/deltabot.def.json index 613b61d32c..ad6a207bb2 100644 --- a/resources/definitions/deltabot.def.json +++ b/resources/definitions/deltabot.def.json @@ -15,15 +15,10 @@ }, "overrides": { - "speed_travel": { "default_value": 150 }, "prime_tower_size": { "default_value": 8.660254037844387 }, "infill_sparse_density": { "default_value": 10 }, - "speed_wall_x": { "default_value": 30 }, - "speed_wall_0": { "default_value": 30 }, - "speed_topbottom": { "default_value": 30 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 30 }, - "speed_infill": { "default_value": 30 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": true }, diff --git a/resources/definitions/deltacomb.def.json b/resources/definitions/deltacomb.def.json index c46beeec2d..ac2ea5abe1 100755 --- a/resources/definitions/deltacomb.def.json +++ b/resources/definitions/deltacomb.def.json @@ -37,7 +37,7 @@ "retraction_amount" : { "default_value": 3.5 }, "retraction_speed" : { "default_value": 30 }, "retraction_combing" : { "default_value": "noskin" }, - "travel_avoid_distance": { "default_value": 1, "value": "1" }, + "travel_avoid_distance": { "value": "1" }, "speed_print" : { "default_value": 80 }, "speed_infill": { "value": "round(speed_print * 1.05, 0)" }, "speed_topbottom": { "value": "round(speed_print * 0.95, 0)" }, @@ -45,7 +45,7 @@ "speed_wall_0": { "value": "30" }, "speed_wall_x": { "value": "speed_wall" }, "speed_layer_0": { "value": "min(round(speed_print * 0.75, 0), 45.0)" }, - "speed_travel": { "default_value": 150, "value": 150 }, + "speed_travel": { "value": 150 }, "speed_travel_layer_0": { "value": "round(speed_travel * 0.7, 0)" }, "skirt_brim_speed": { "value": "speed_layer_0" }, "skirt_line_count": { "default_value": 3 }, @@ -57,10 +57,10 @@ "support_z_distance": { "value": "layer_height * 2" }, "support_bottom_distance": { "value": "layer_height" }, "support_use_towers" : { "default_value": false }, - "jerk_enabled": { "default_value": 1, "value": "1" }, - "jerk_infill" : { "default_value": 5, "value": "5" }, - "jerk_support" : { "default_value": 5, "value": "5" }, - "acceleration_enabled": { "default_value": 1, "value": "1" }, + "jerk_enabled": { "value": "True" }, + "jerk_infill" : { "value": "5" }, + "jerk_support" : { "value": "5" }, + "acceleration_enabled": { "value": "1" }, "acceleration_travel" : { "value": 5000 }, "machine_max_feedrate_z" : { "default_value": 300 } } diff --git a/resources/definitions/easyarts_ares.def.json b/resources/definitions/easyarts_ares.def.json index 0e2742f484..18d73a3531 100644 --- a/resources/definitions/easyarts_ares.def.json +++ b/resources/definitions/easyarts_ares.def.json @@ -49,27 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, "speed_print": { "default_value": 75 }, - "speed_infill": { - "default_value": 100 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/erzay3d.def.json b/resources/definitions/erzay3d.def.json index 0a6d676bea..875aea708e 100644 --- a/resources/definitions/erzay3d.def.json +++ b/resources/definitions/erzay3d.def.json @@ -56,57 +56,17 @@ "ironing_pattern": { "default_value": "concentric" }, "ironing_flow": { "default_value": 7.0 }, - "roofing_pattern": { "default_value": "concentric" }, "infill_sparse_density": { "default_value": 20 }, - "infill_line_distance": { "default_value": 4 }, "default_material_print_temperature": { "default_value": 220 }, - "material_print_temperature": { "default_value": 220 }, - "material_print_temperature_layer_0": { "default_value": 220 }, - "material_initial_print_temperature": { "default_value": 220 }, - "material_final_print_temperature": { "default_value": 220 }, "retraction_amount": { "default_value": 6.5 }, "speed_print": { "default_value": 40 }, - "speed_infill": { "default_value": 60 }, - "speed_wall": { "default_value": 20 }, - "speed_wall_0": { "default_value": 20 }, - "speed_wall_x": { "default_value": 40 }, - "speed_roofing": { "default_value": 20 }, - "speed_topbottom": { "default_value": 20 }, - "speed_support": { "default_value": 40 }, - "speed_support_infill": { "default_value": 40 }, - "speed_support_interface": { "default_value": 25 }, - "speed_support_roof": { "default_value": 25 }, - "speed_support_bottom": { "default_value": 25 }, - "speed_prime_tower": { "default_value": 40 }, - "speed_travel": { "default_value": 100 }, - "speed_layer_0": { "default_value": 20 }, - "speed_print_layer_0": { "default_value": 20 }, - "speed_travel_layer_0": { "default_value": 80 }, - "skirt_brim_speed": { "default_value": 20 }, "speed_equalize_flow_enabled": { "default_value": true }, "speed_equalize_flow_max": { "default_value": 100 }, "acceleration_print": { "default_value": 1000 }, - "acceleration_infill": { "default_value": 3000 }, - "acceleration_wall": { "default_value": 1000 }, - "acceleration_wall_0": { "default_value": 1000 }, - "acceleration_wall_x": { "default_value": 1000 }, - "acceleration_roofing": { "default_value": 1000 }, - "acceleration_topbottom": { "default_value": 1000 }, - "acceleration_support": { "default_value": 1000 }, - "acceleration_support_infill": { "default_value": 1000 }, - "acceleration_support_interface": { "default_value": 1000 }, - "acceleration_support_roof": { "default_value": 1000 }, - "acceleration_support_bottom": { "default_value": 1000 }, - "acceleration_prime_tower": { "default_value": 1000 }, - "acceleration_travel": { "default_value": 1500 }, - "acceleration_layer_0": { "default_value": 1000 }, - "acceleration_print_layer_0": { "default_value": 1000 }, - "acceleration_travel_layer_0": { "default_value": 1000 }, - "acceleration_skirt_brim": { "default_value": 1000 }, "jerk_print": { "default_value": 10 }, diff --git a/resources/definitions/fabtotum.def.json b/resources/definitions/fabtotum.def.json index 959a5bdaec..355f6a1434 100644 --- a/resources/definitions/fabtotum.def.json +++ b/resources/definitions/fabtotum.def.json @@ -50,8 +50,8 @@ "retraction_hop_enabled": { "default_value": false }, "material_final_print_temperature": { "value": "material_print_temperature - 5" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, - "travel_avoid_distance": { "default_value": 1, "value": 1 }, - "speed_travel": { "default_value": 200, "value": 200 }, + "travel_avoid_distance": { "value": 1 }, + "speed_travel": { "value": 200 }, "speed_infill": { "value": "round(speed_print * 1.05, 0)" }, "speed_topbottom": { "value": "round(speed_print * 0.95, 0)" }, "speed_wall": { "value": "speed_print" }, diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 55061d793d..ca0057adb4 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1190,6 +1190,18 @@ "value": "999999 if infill_sparse_density == 100 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", + "default_value": 6, + "type": "int", + "value": "bottom_layers", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true } } } @@ -4071,7 +4083,7 @@ "description": "The extruder train to use for printing the support. This is used in multi-extrusion.", "type": "extruder", "default_value": "0", - "value": "defaultExtruderPosition()", + "value": "int(defaultExtruderPosition())", "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, @@ -5038,7 +5050,7 @@ "description": "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion.", "type": "extruder", "default_value": "0", - "value": "defaultExtruderPosition()", + "value": "int(defaultExtruderPosition())", "enabled": "extruders_enabled_count > 1 and (resolveOrValue('adhesion_type') != 'none' or resolveOrValue('prime_tower_brim_enable'))", "settable_per_mesh": false, "settable_per_extruder": false @@ -5833,6 +5845,18 @@ "settable_per_mesh": false, "settable_per_extruder": false }, + "meshfix_maximum_resolution": + { + "label": "Maximum Resolution", + "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", + "type": "float", + "unit": "mm", + "default_value": 0.5, + "minimum_value": "0.001", + "minimum_value_warning": "0.01", + "maximum_value_warning": "3", + "settable_per_mesh": true + }, "meshfix_maximum_travel_resolution": { "label": "Maximum Travel Resolution", @@ -6217,6 +6241,7 @@ "label": "Infill Travel Optimization", "description": "When enabled, the order in which the infill lines are printed is optimized to reduce the distance travelled. The reduction in travel time achieved very much depends on the model being sliced, infill pattern, density, etc. Note that, for some models that have many small areas of infill, the time to slice the model may be greatly increased.", "type": "bool", + "enabled": "resolveOrValue('retraction_combing') != 'off'", "default_value": false, "settable_per_mesh": true }, @@ -6254,18 +6279,6 @@ "settable_per_mesh": true, "settable_per_extruder": false }, - "meshfix_maximum_resolution": - { - "label": "Maximum Resolution", - "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", - "type": "float", - "unit": "mm", - "default_value": 0.5, - "minimum_value": "0.001", - "minimum_value_warning": "0.01", - "maximum_value_warning": "3", - "settable_per_mesh": true - }, "support_skip_some_zags": { "label": "Break Up Support In Chunks", @@ -6428,16 +6441,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "skin_alternate_rotation": - { - "label": "Alternate Skin Rotation", - "description": "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions.", - "type": "bool", - "default_value": false, - "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, "cross_infill_pocket_size": { "label": "Cross 3D Pocket Size", @@ -6594,7 +6597,7 @@ "minimum_value_warning": "machine_nozzle_size * 3", "maximum_value_warning": "100.0", "type": "float", - "enabled": "support_conical_enabled and support_enable", + "enabled": "support_conical_enabled and support_enable and support_conical_angle > 0", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": true }, diff --git a/resources/definitions/felixpro2dual.def.json b/resources/definitions/felixpro2dual.def.json index 0c978cdb71..fdd8a1b694 100644 --- a/resources/definitions/felixpro2dual.def.json +++ b/resources/definitions/felixpro2dual.def.json @@ -24,7 +24,6 @@ "layer_height": { "default_value": 0.15 }, "layer_height_0": { "default_value": 0.2 }, - "speed_layer_0": { "default_value": 20}, "infill_sparse_density": { "default_value": 20 }, "wall_thickness": { "default_value": 1 }, @@ -53,7 +52,6 @@ "machine_center_is_zero": { "default_value": false }, "speed_print": { "default_value": 80 }, - "speed_travel": { "default_value": 200 }, "retraction_amount": { "default_value": 1 }, "retraction_speed": { "default_value": 50}, diff --git a/resources/definitions/felixtec4dual.def.json b/resources/definitions/felixtec4dual.def.json index ba5bcfa112..efc13c1759 100644 --- a/resources/definitions/felixtec4dual.def.json +++ b/resources/definitions/felixtec4dual.def.json @@ -39,7 +39,6 @@ "machine_center_is_zero": { "default_value": false }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 200 }, "retraction_amount": { "default_value": 1 }, "retraction_speed": { "default_value": 50}, diff --git a/resources/definitions/flsun_qq_s.def.json b/resources/definitions/flsun_qq_s.def.json index 5a739e9ae1..9c3bf571ae 100644 --- a/resources/definitions/flsun_qq_s.def.json +++ b/resources/definitions/flsun_qq_s.def.json @@ -1,5 +1,4 @@ { - "id": "flsun_qq_s", "version": 2, "name": "FLSUN QQ-S", "inherits": "fdmprinter", @@ -33,14 +32,8 @@ "z_seam_type": { "default_value": "back" }, - "top_thickness": { - "default_value": 5 - }, - "bottom_layers": { - "default_value": 4 - }, "gantry_height": { - "default_value": 0 + "value": "0" }, "machine_nozzle_size": { "default_value": 0.4 diff --git a/resources/definitions/geeetech_a30.def.json b/resources/definitions/geeetech_a30.def.json index 3d8823f438..a700f4e473 100644 --- a/resources/definitions/geeetech_a30.def.json +++ b/resources/definitions/geeetech_a30.def.json @@ -1,5 +1,4 @@ { - "id": "geeetech_a30", "version": 2, "name": "Geeetech A30", "inherits": "fdmprinter", @@ -42,9 +41,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_bed_temperature": { - "default_value": 60 - }, "machine_nozzle_size": { "default_value": 0.4 }, @@ -60,12 +56,6 @@ "retraction_speed": { "default_value": 25 }, - "retraction_retract_speed": { - "default_value": 25 - }, - "retraction_prime_speed": { - "default_value": 25 - }, "adhesion_type": { "default_value": "skirt" }, @@ -86,7 +76,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_max_feedrate_x": { "default_value": 300 diff --git a/resources/definitions/gmax15plus.def.json b/resources/definitions/gmax15plus.def.json index eb576f0e19..e98d6c02fe 100644 --- a/resources/definitions/gmax15plus.def.json +++ b/resources/definitions/gmax15plus.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus", "version": 2, "name": "gMax 1.5 Plus", "inherits": "fdmprinter", @@ -39,7 +38,6 @@ "adhesion_type": { "default_value": "skirt" }, "gantry_height": { "value": "50" }, "speed_print": { "default_value": 50 }, - "speed_travel": { "default_value": 70 }, "machine_max_acceleration_x": { "default_value": 600 }, "machine_max_acceleration_y": { "default_value": 600 }, "machine_max_acceleration_z": { "default_value": 30 }, @@ -50,9 +48,7 @@ "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 X/Y/Z\nM104 S{material_print_temperature} ; Preheat\nM109 S{material_print_temperature} ; Preheat\nG91 ;relative positioning\nG90 ;absolute positioning\nG1 Z25.0 F9000 ;raise nozzle 25mm\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\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, - "material_print_temperature": { "default_value": 202 }, "wall_thickness": { "default_value": 1 }, - "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { "default_value": 1 } + "top_bottom_thickness": { "default_value": 1 } } } diff --git a/resources/definitions/gmax15plus_dual.def.json b/resources/definitions/gmax15plus_dual.def.json index 40a3dde303..aaba2cc55b 100644 --- a/resources/definitions/gmax15plus_dual.def.json +++ b/resources/definitions/gmax15plus_dual.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_dual", "version": 2, "name": "gMax 1.5 Plus Dual Extruder", "inherits": "fdmprinter", @@ -37,7 +36,6 @@ "adhesion_type": { "default_value": "skirt" }, "gantry_height": { "value": "50" }, "speed_print": { "default_value": 50 }, - "speed_travel": { "default_value": 70 }, "machine_max_acceleration_x": { "default_value": 600 }, "machine_max_acceleration_y": { "default_value": 600 }, "machine_max_acceleration_z": { "default_value": 30 }, @@ -48,9 +46,7 @@ "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 X/Y/Z\nM104 S{material_print_temperature} T0 ; Preheat Left Extruder\nM104 S{material_print_temperature} T1 ; Preheat Right Extruder\nM109 S{material_print_temperature} T0 ; Preheat Left Extruder\nM109 S{material_print_temperature} T1 ; Preheat Right Extruder\nG91 ;relative positioning\nG90 ;absolute positioning\nM218 T1 X34.3 Y0; Set 2nd extruder offset. This can be changed later if needed\nG1 Z25.0 F9000 ;raise nozzle 25mm\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 T0;Left extruder off\nM104 S0 T1; Right extruder 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\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, - "material_print_temperature": { "default_value": 202 }, "wall_thickness": { "default_value": 1 }, - "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { "default_value": 1 } + "top_bottom_thickness": { "default_value": 1 } } } diff --git a/resources/definitions/helloBEEprusa.def.json b/resources/definitions/helloBEEprusa.def.json index 65716ac175..2c8c4839d0 100644 --- a/resources/definitions/helloBEEprusa.def.json +++ b/resources/definitions/helloBEEprusa.def.json @@ -26,28 +26,15 @@ "machine_height": { "default_value": 190 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, - "material_print_temperature": { "default_value": 200 }, - "material_bed_temperature": { "default_value": 60 }, - "line_width": { "default_value": 0.48 }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { "default_value": 3 }, "wall_thickness": { "default_value": 1.2 }, "top_bottom_thickness": { "default_value": 1.2 }, "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { "default_value": 15 }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 160 }, - "speed_layer_0": { "default_value": 30 }, - "speed_wall_x": { "default_value": 35 }, - "speed_wall_0": { "default_value": 30 }, - "speed_infill": { "default_value": 60 }, - "speed_topbottom": { "default_value": 20 }, - "skirt_brim_speed": { "default_value": 35 }, "skirt_line_count": { "default_value": 4 }, "skirt_brim_minimal_length": { "default_value": 30 }, "skirt_gap": { "default_value": 6 }, - "cool_fan_full_at_height": { "default_value": 0.4 }, "retraction_speed": { "default_value": 15.0}, "retraction_amount": { "default_value": 1.5} } diff --git a/resources/definitions/innovo_inventor.def.json b/resources/definitions/innovo_inventor.def.json index 72a9ec3edb..13a8a7c59b 100644 --- a/resources/definitions/innovo_inventor.def.json +++ b/resources/definitions/innovo_inventor.def.json @@ -61,36 +61,10 @@ "top_bottom_thickness": { "default_value": 1.2 }, - "material_print_temperature": { - "default_value": 205 - }, - "material_bed_temperature": { - "default_value": 60 - }, "speed_print": { "default_value": 50 }, - "speed_wall_0": { - "default_value": 25 - }, - "speed_wall_x": { - "default_value": 40 - }, - "speed_infill": { - "default_value": 80 - }, - "speed_topbottom": { - "default_value": 30 - }, - "speed_support_interface": - { - "default_value": 20 - }, - "speed_travel": { - "default_value": 150 - }, "speed_layer_0": { - "default_value": 30.0, "minimum_value": 0.1 } } diff --git a/resources/definitions/jgaurora_a1.def.json b/resources/definitions/jgaurora_a1.def.json index 3c9f9c61e9..1c910f0d95 100644 --- a/resources/definitions/jgaurora_a1.def.json +++ b/resources/definitions/jgaurora_a1.def.json @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 215 - }, - "material_bed_temperature": { - "default_value": 67 - }, "layer_height_0": { "default_value": 0.12 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 12 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/jgaurora_a3s.def.json b/resources/definitions/jgaurora_a3s.def.json index bd8d0bd0e3..ead0a5f9e7 100644 --- a/resources/definitions/jgaurora_a3s.def.json +++ b/resources/definitions/jgaurora_a3s.def.json @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 65 - }, "layer_height_0": { "default_value": 0.12 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 35 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 30 - }, - "speed_topbottom": { - "default_value": 20 - }, - "speed_travel": { - "default_value": 100 - }, - "speed_layer_0": { - "default_value": 12 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/jgaurora_a5.def.json b/resources/definitions/jgaurora_a5.def.json index e02fca881b..b9f179d38e 100644 --- a/resources/definitions/jgaurora_a5.def.json +++ b/resources/definitions/jgaurora_a5.def.json @@ -49,12 +49,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 215 - }, - "material_bed_temperature": { - "default_value": 67 - }, "layer_height_0": { "default_value": 0.12 }, @@ -64,21 +58,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 12 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/jgaurora_jgmaker_magic.def.json b/resources/definitions/jgaurora_jgmaker_magic.def.json index 703305151a..8d0349a48c 100644 --- a/resources/definitions/jgaurora_jgmaker_magic.def.json +++ b/resources/definitions/jgaurora_jgmaker_magic.def.json @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 60 - }, "layer_height_0": { "default_value": 0.2 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 60 - }, - "speed_wall": { - "default_value": 30 - }, - "speed_topbottom": { - "default_value": 45 - }, - "speed_travel": { - "default_value": 125 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/jgaurora_z_603s.def.json b/resources/definitions/jgaurora_z_603s.def.json index ceade3243a..8dbf5a82bb 100644 --- a/resources/definitions/jgaurora_z_603s.def.json +++ b/resources/definitions/jgaurora_z_603s.def.json @@ -22,7 +22,7 @@ }, "machine_end_gcode": { "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 Y0 F600 ;move to the X/Y-axis origin (Home)\nM84 ;turn off stepper motors\n; -- end of END GCODE --" - }, + }, "machine_width": { "default_value": 280 }, @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 55 - }, "layer_height_0": { "default_value": 0.2 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 60 - }, - "speed_wall": { - "default_value": 30 - }, - "speed_topbottom": { - "default_value": 45 - }, - "speed_travel": { - "default_value": 125 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/julia.def.json b/resources/definitions/julia.def.json index 62e4170c1f..15e5057a55 100644 --- a/resources/definitions/julia.def.json +++ b/resources/definitions/julia.def.json @@ -21,25 +21,14 @@ "machine_end_gcode": { "default_value": " M104 S0 ;extruder heater off\n M140 S0 ;heated bed heater off (if you have it)\n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning\n" }, - "material_bed_temperature": { "default_value": 100 }, "layer_height": { "default_value": 0.2 }, "support_angle": { "default_value": 30 }, - "infill_overlap": { "default_value": 30 }, "layer_height_0": { "default_value": 0.2 }, "speed_print": { "default_value": 80 }, - "speed_wall_0": { "default_value": 30 }, - "speed_travel": { "default_value": 150 }, - "brim_line_count": { "default_value": 15 }, - "skin_overlap": { "default_value": 30 }, "prime_tower_size": { "default_value": 8.660254037844387 }, - "bottom_thickness": { "default_value": 0.8 }, "retraction_amount": { "default_value": 3 }, - "speed_topbottom": { "default_value": 80 }, - "material_print_temperature": { "default_value": 230 }, "support_pattern": { "default_value": "grid" }, - "speed_infill": { "default_value": 80 }, "infill_sparse_density": { "default_value": 10 }, - "top_thickness": { "default_value": 0.8 }, "machine_extruder_count": { "default_value": 1 }, "retraction_combing": { "default_value": "off" }, "machine_heated_bed": { "default_value": true }, diff --git a/resources/definitions/key3d_tyro.def.json b/resources/definitions/key3d_tyro.def.json new file mode 100644 index 0000000000..e14f601d7d --- /dev/null +++ b/resources/definitions/key3d_tyro.def.json @@ -0,0 +1,65 @@ +{ + "name": "Tyro", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "DragonJe", + "manufacturer": "Key3D", + "file_formats": "text/x-gcode", + "platform_offset": [0, 0, 0], + "has_materials": true, + "has_variants": false, + "preferred_quality_type": "normal", + "has_machine_quality": true, + "preferred_material": "generic_pla", + "machine_extruder_trains": + { + "0": "key3d_tyro_extruder_0" + } + }, + + "overrides": { + "machine_name": { + "default_value": "Tyro" + }, + "machine_width": { + "default_value": 150 + }, + "machine_height": { + "default_value": 150 + }, + "machine_depth": { + "default_value": 150 + }, + "machine_head_polygon": { + "default_value": [ + [-30, 34], + [-30, -32], + [30, -32], + [30, 34] + ] + }, + "gantry_height": { + "value": "30" + }, + "machine_heated_bed": { + "default_value": false + }, + "machine_heated_build_volume": { + "default_value": false + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G28 ; Home\nG1 Z15.0 F6000 ; Move Z axis up 15mm\n ; Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_end_gcode": { + "default_value": "M104 S0\nM140 S0\n ; Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" + } + } +} diff --git a/resources/definitions/makeit_pro_l.def.json b/resources/definitions/makeit_pro_l.def.json index 5d09189de8..d601a5c309 100644 --- a/resources/definitions/makeit_pro_l.def.json +++ b/resources/definitions/makeit_pro_l.def.json @@ -77,27 +77,12 @@ "retraction_amount": { "default_value": 6 }, - "retraction_min_travel": { - "default_value": 1.5 - }, - "speed_travel": { - "default_value": 150 - }, "speed_print": { "default_value": 60 }, "wall_thickness": { "default_value": 1.2 }, - "bottom_thickness": { - "default_value": 0.2 - }, - "speed_layer_0": { - "default_value": 20 - }, - "speed_print_layer_0": { - "default_value": 20 - }, "cool_min_layer_time_fan_speed_max": { "default_value": 5 }, diff --git a/resources/definitions/makeit_pro_m.def.json b/resources/definitions/makeit_pro_m.def.json index 57e2a7dbd4..267646b647 100644 --- a/resources/definitions/makeit_pro_m.def.json +++ b/resources/definitions/makeit_pro_m.def.json @@ -77,27 +77,12 @@ "retraction_amount": { "default_value": 6 }, - "retraction_min_travel": { - "default_value": 1.5 - }, - "speed_travel": { - "default_value": 150 - }, "speed_print": { "default_value": 60 }, "wall_thickness": { "default_value": 1.2 }, - "bottom_thickness": { - "default_value": 0.2 - }, - "speed_layer_0": { - "default_value": 20 - }, - "speed_print_layer_0": { - "default_value": 20 - }, "cool_min_layer_time_fan_speed_max": { "default_value": 5 }, diff --git a/resources/definitions/maker_starter.def.json b/resources/definitions/maker_starter.def.json index 560e53ccb9..96dca118af 100644 --- a/resources/definitions/maker_starter.def.json +++ b/resources/definitions/maker_starter.def.json @@ -53,57 +53,15 @@ "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { - "default_value": 2 - }, - "top_layers": { - "default_value": 4 - }, - "bottom_layers": { - "default_value": 4 - }, "speed_print": { "default_value": 50 }, - "speed_wall": { - "default_value": 30 - }, - "speed_wall_0": { - "default_value": 30 - }, - "speed_wall_x": { - "default_value": 30 - }, - "speed_topbottom": { - "default_value": 50 - }, - "speed_support": { - "default_value": 50 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, - "skirt_brim_speed": { - "default_value": 15 - }, "speed_slowdown_layers": { "default_value": 4 }, "infill_sparse_density": { "default_value": 20 }, - "cool_fan_speed_min": { - "default_value": 50 - }, - "cool_fan_speed_max": { - "default_value": 100 - }, - "cool_fan_full_layer": { - "default_value": 4 - }, "cool_min_layer_time": { "default_value": 5 }, @@ -122,12 +80,6 @@ "support_z_distance": { "default_value": 0.2 }, - "support_top_distance": { - "default_value": 0.2 - }, - "support_bottom_distance": { - "default_value": 0.24 - }, "support_pattern": { "default_value": "ZigZag" }, @@ -140,24 +92,6 @@ "skirt_brim_minimal_length": { "default_value": 100 }, - "raft_base_line_spacing": { - "default_value": 2 - }, - "raft_base_thickness": { - "default_value": 0.3 - }, - "raft_base_line_width": { - "default_value": 2 - }, - "raft_base_speed": { - "default_value": 15 - }, - "raft_interface_thickness": { - "default_value": 0.24 - }, - "raft_interface_line_width": { - "default_value": 0.6 - }, "raft_airgap": { "default_value": 0.2 }, diff --git a/resources/definitions/makerbotreplicator.def.json b/resources/definitions/makerbotreplicator.def.json index 3b02215e74..24b556e1ee 100644 --- a/resources/definitions/makerbotreplicator.def.json +++ b/resources/definitions/makerbotreplicator.def.json @@ -18,9 +18,7 @@ "overrides": { "prime_tower_size": { "default_value": 10.0 }, "infill_sparse_density": { "default_value": 10 }, - "speed_travel": { "default_value": 150 }, "layer_height": { "default_value": 0.15 }, - "material_print_temperature": { "default_value": 220 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/malyan_m180.def.json b/resources/definitions/malyan_m180.def.json index cd3a068134..bb812b6dd6 100644 --- a/resources/definitions/malyan_m180.def.json +++ b/resources/definitions/malyan_m180.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m180", "version": 2, "name": "Malyan M180", "inherits": "fdmprinter", diff --git a/resources/definitions/malyan_m200.def.json b/resources/definitions/malyan_m200.def.json index 71c94184b2..fc8756ff6a 100644 --- a/resources/definitions/malyan_m200.def.json +++ b/resources/definitions/malyan_m200.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m200", "version": 2, "name": "Malyan M200", "inherits": "fdmprinter", @@ -30,8 +29,6 @@ "speed_wall_x": { "value": "speed_print" }, "speed_support": { "value": "speed_wall_0" }, "speed_layer_0": { "value": "round(speed_print / 2.0, 2)" }, - "speed_travel": { "default_value": 50 }, - "speed_travel_layer_0": { "default_value": 40 }, "speed_infill": { "value": "speed_print" }, "speed_topbottom": {"value": "speed_print / 2"}, diff --git a/resources/definitions/mankati_fullscale_xt_plus.def.json b/resources/definitions/mankati_fullscale_xt_plus.def.json index 104be7091b..b6fa040750 100644 --- a/resources/definitions/mankati_fullscale_xt_plus.def.json +++ b/resources/definitions/mankati_fullscale_xt_plus.def.json @@ -41,23 +41,15 @@ "layer_height": { "default_value": 0.2 }, "wall_thickness": { "default_value": 0.8 }, "top_bottom_thickness": { "default_value": 0.3 }, - "material_print_temperature": { "default_value": 195 }, - "material_bed_temperature": { "default_value": 60 }, "retraction_enable": { "default_value": true }, "retraction_speed": { "default_value": 50 }, "retraction_amount": { "default_value": 0.8 }, "retraction_hop": { "default_value": 0.075 }, "speed_print": { "default_value": 60 }, - "speed_infill": { "default_value": 100 }, - "speed_topbottom": { "default_value": 15 }, - "speed_travel": { "default_value": 150 }, "speed_layer_0": { - "minimum_value": "0.1", - "default_value": 15.0 + "minimum_value": "0.1" }, - "infill_overlap": { "default_value": 10 }, "cool_fan_enabled": { "default_value": false }, - "cool_fan_speed": { "default_value": 0 }, "skirt_line_count": { "default_value": 3 }, "skirt_gap": { "default_value": 4 }, "skirt_brim_minimal_length": { "default_value": 200 } diff --git a/resources/definitions/monoprice_select_mini_v1.def.json b/resources/definitions/monoprice_select_mini_v1.def.json index a516d54b18..4fe67fc92e 100644 --- a/resources/definitions/monoprice_select_mini_v1.def.json +++ b/resources/definitions/monoprice_select_mini_v1.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v1", "version": 2, "name": "Monoprice Select Mini V1", "inherits": "malyan_m200", diff --git a/resources/definitions/monoprice_select_mini_v2.def.json b/resources/definitions/monoprice_select_mini_v2.def.json index bed4fb1adb..2364e49383 100644 --- a/resources/definitions/monoprice_select_mini_v2.def.json +++ b/resources/definitions/monoprice_select_mini_v2.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v2", "version": 2, "name": "Monoprice Select Mini V2 (E3D)", "inherits": "malyan_m200", diff --git a/resources/definitions/ord.def.json b/resources/definitions/ord.def.json index de410b0d58..4a550602f2 100644 --- a/resources/definitions/ord.def.json +++ b/resources/definitions/ord.def.json @@ -19,12 +19,9 @@ }, "overrides": { - "material_bed_temperature": { "default_value": 60 }, "prime_tower_size": { "default_value": 7.0710678118654755 }, "infill_sparse_density": { "default_value": 15 }, - "speed_travel": { "default_value": 150 }, "layer_height": { "default_value": 0.3 }, - "material_print_temperature": { "default_value": 240 }, "machine_extruder_count": { "default_value": 5 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/printrbot_play.def.json b/resources/definitions/printrbot_play.def.json index b8879e825c..bf52363800 100644 --- a/resources/definitions/printrbot_play.def.json +++ b/resources/definitions/printrbot_play.def.json @@ -29,7 +29,6 @@ "machine_head_with_fans_polygon": { "default_value": [[-32,999],[37,999],[37,-32],[-32,-32]] }, "gantry_height": { "value": "55" }, "speed_print": { "default_value": 50 }, - "speed_travel": { "default_value": 55 }, "machine_max_feedrate_x": {"default_value": 125}, "machine_max_feedrate_y": {"default_value": 125}, "machine_max_feedrate_z": { "default_value": 5 }, diff --git a/resources/definitions/prusa_i3_mk2.def.json b/resources/definitions/prusa_i3_mk2.def.json index ff6f4469e7..5ae541049d 100644 --- a/resources/definitions/prusa_i3_mk2.def.json +++ b/resources/definitions/prusa_i3_mk2.def.json @@ -22,13 +22,10 @@ "machine_height": { "default_value": 200 }, "machine_depth": { "default_value": 210 }, "machine_center_is_zero": { "default_value": false }, - "material_bed_temperature": { "default_value": 55 }, "layer_height": { "default_value": 0.1 }, "layer_height_0": { "default_value": 0.15 }, "retraction_amount": { "default_value": 0.8 }, "retraction_speed": { "default_value": 35 }, - "retraction_retract_speed": { "default_value": 35 }, - "retraction_prime_speed": { "default_value": 35 }, "adhesion_type": { "default_value": "skirt" }, "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] }, "gantry_height": { "value": "28" }, diff --git a/resources/definitions/prusa_i3_mk3.def.json b/resources/definitions/prusa_i3_mk3.def.json new file mode 100644 index 0000000000..0b55e4f200 --- /dev/null +++ b/resources/definitions/prusa_i3_mk3.def.json @@ -0,0 +1,53 @@ +{ + "version": 2, + "name": "Prusa i3 Mk3/Mk3s", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Prusa Research", + "manufacturer": "Prusa3D", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "platform": "Original_Prusa_i3_MK3S_MK3_platform.stl", + "has_materials": true, + "machine_extruder_trains": + { + "0": "prusa_i3_mk3_extruder_0" + } + }, + + "overrides": { + "machine_name": { "default_value": "Prusa i3 Mk3/Mk3s" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 250 }, + "machine_height": { "default_value": 210 }, + "machine_depth": { "default_value": 210 }, + "machine_center_is_zero": { "default_value": false }, + "material_diameter": { "default_value": 1.75 }, + "material_bed_temperature": { "default_value": 60 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "layer_height": { "default_value": 0.15 }, + "layer_height_0": { "default_value": 0.2 }, + "retraction_amount": { "default_value": 0.8 }, + "retraction_speed": { "default_value": 35 }, + "retraction_retract_speed": { "default_value": 35 }, + "retraction_prime_speed": { "default_value": 35 }, + "adhesion_type": { "default_value": "skirt" }, + "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] }, + "gantry_height": { "default_value": 28 }, + "machine_max_feedrate_z": { "default_value": 12 }, + "machine_max_feedrate_e": { "default_value": 120 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "machine_max_jerk_z": { "default_value": 0.2 }, + "machine_max_jerk_e": { "default_value": 2.5 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { + "default_value": "G21 ; set units to millimeters\nG90 ; use absolute positioning\nM82 ; absolute extrusion mode\nM104 S{material_print_temperature_layer_0} ; set extruder temp\nM140 S{material_bed_temperature_layer_0} ; set bed temp\nM190 S{material_bed_temperature_layer_0} ; wait for bed temp\nM109 S{material_print_temperature_layer_0} ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG92 E0.0 ; reset extruder distance position\nG1 Y-3.0 F1000.0 ; go outside print area\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E21.5 F1000.0 ; intro line\nG92 E0.0 ; reset extruder distance position" + }, + "machine_end_gcode": { + "default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y210; home X axis and push Y forward\nM84 ; disable motors" + } + } +} diff --git a/resources/definitions/punchtec_connect_xl.def.json b/resources/definitions/punchtec_connect_xl.def.json index 1efdd226fd..b262daa445 100644 --- a/resources/definitions/punchtec_connect_xl.def.json +++ b/resources/definitions/punchtec_connect_xl.def.json @@ -17,15 +17,9 @@ "overrides": { "machine_head_polygon": { "default_value": [[ 0, 0], [ 0, 0], [ 0, 0], [ 0, 0]] }, - "speed_travel": { "default_value": 150 }, "prime_tower_size": { "default_value": 8.660254037844387 }, - "speed_wall_x": { "default_value": 40 }, - "speed_wall_0": { "default_value": 40 }, - "speed_topbottom": { "default_value": 40 }, "layer_height": { "default_value": 0.2 }, - "material_print_temperature": { "default_value": 195 }, "speed_print": { "default_value": 40 }, - "speed_infill": { "default_value": 40 }, "machine_extruder_count": { "default_value": 2 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/rigid3d.def.json b/resources/definitions/rigid3d.def.json index 43ffd6924a..a66559b393 100644 --- a/resources/definitions/rigid3d.def.json +++ b/resources/definitions/rigid3d.def.json @@ -25,23 +25,13 @@ "skirt_gap": { "default_value": 5.0 }, "cool_min_layer_time": { "default_value": 10 }, "prime_tower_size": { "default_value": 7.745966692414834 }, - "speed_wall_x": { "default_value": 40 }, - "speed_travel": { "default_value": 100 }, - "bottom_thickness": { "default_value": 0.75 }, "layer_height_0": { "default_value": 0.25 }, "support_angle": { "default_value": 45 }, - "material_bed_temperature": { "default_value": 100 }, - "top_thickness": { "default_value": 0.75 }, - "material_print_temperature": { "default_value": 235 }, "retraction_speed": { "default_value": 60.0 }, "wall_thickness": { "default_value": 0.8 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 30 }, "retraction_amount": { "default_value": 1 }, - "speed_topbottom": { "default_value": 30 }, "layer_height": { "default_value": 0.25 }, "speed_print": { "default_value": 40 }, - "speed_infill": { "default_value": 40 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/rigid3d_3rdgen.def.json b/resources/definitions/rigid3d_3rdgen.def.json index bb3414b75d..b4d0252075 100644 --- a/resources/definitions/rigid3d_3rdgen.def.json +++ b/resources/definitions/rigid3d_3rdgen.def.json @@ -25,20 +25,12 @@ "cool_min_layer_time": { "default_value": 10 }, "prime_tower_size": { "default_value": 7.745966692414834 }, "skirt_gap": { "default_value": 5.0 }, - "speed_travel": { "default_value": 120 }, - "bottom_thickness": { "default_value": 0.75 }, "layer_height_0": { "default_value": 0.25 }, "support_angle": { "default_value": 45 }, - "material_bed_temperature": { "default_value": 100 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 30 }, "retraction_speed": { "default_value": 60.0 }, "wall_thickness": { "default_value": 0.8 }, - "material_print_temperature": { "default_value": 235 }, "retraction_amount": { "default_value": 1 }, - "speed_topbottom": { "default_value": 25 }, "layer_height": { "default_value": 0.25 }, - "top_thickness": { "default_value": 0.75 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/rigid3d_hobby.def.json b/resources/definitions/rigid3d_hobby.def.json index db48195fe0..f50df0c47d 100644 --- a/resources/definitions/rigid3d_hobby.def.json +++ b/resources/definitions/rigid3d_hobby.def.json @@ -17,25 +17,17 @@ "overrides": { "machine_head_polygon": { "default_value": [[ 16, 30], [ 16, 45], [ 16, 45], [ 16, 30]] }, "prime_tower_size": { "default_value": 8.660254037844387 }, - "speed_travel": { "default_value": 40 }, "skirt_gap": { "default_value": 5.0 }, "cool_min_layer_time": { "default_value": 15 }, "support_pattern": { "default_value": "grid" }, "layer_height_0": { "default_value": 0.25 }, - "speed_wall_x": { "default_value": 30 }, "skirt_line_count": { "default_value": 2 }, "support_angle": { "default_value": 45 }, - "speed_topbottom": { "default_value": 20 }, - "material_print_temperature": { "default_value": 205 }, "retraction_speed": { "default_value": 80 }, "wall_thickness": { "default_value": 0.8 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 20 }, "retraction_amount": { "default_value": 2 }, - "speed_layer_0": { "default_value": 15 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 30 }, - "speed_infill": { "default_value": 30 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": false }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/rigid3d_mucit.def.json b/resources/definitions/rigid3d_mucit.def.json index 42cd99a3bd..75853fab8b 100644 --- a/resources/definitions/rigid3d_mucit.def.json +++ b/resources/definitions/rigid3d_mucit.def.json @@ -76,14 +76,9 @@ "default_value": true }, "cool_fan_speed": { - "default_value": 100, "value": "100" }, - "cool_fan_speed_min": { - "default_value": 0 - }, "cool_fan_full_at_height": { - "default_value": 0.5, "value": "0.5" }, "support_z_distance": { diff --git a/resources/definitions/rigid3d_zero.def.json b/resources/definitions/rigid3d_zero.def.json index f55f913a56..64909630d2 100644 --- a/resources/definitions/rigid3d_zero.def.json +++ b/resources/definitions/rigid3d_zero.def.json @@ -24,21 +24,11 @@ "machine_head_polygon": { "default_value": [[ 40, 15], [ 40, 60], [ 30, 60], [ 30, 15]] }, "support_pattern": { "default_value": "grid" }, "cool_min_layer_time": { "default_value": 10 }, - "speed_travel": { "default_value": 80 }, "support_angle": { "default_value": 45 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 20 }, - "speed_layer_0": { "default_value": 15 }, - "speed_infill": { "default_value": 30 }, - "speed_topbottom": { "default_value": 30 }, "prime_tower_size": { "default_value": 7.745966692414834 }, "skirt_line_count": { "default_value": 2 }, - "speed_wall_x": { "default_value": 30 }, - "bottom_thickness": { "default_value": 0.75 }, "layer_height_0": { "default_value": 0.25 }, - "top_thickness": { "default_value": 0.75 }, "wall_thickness": { "default_value": 0.8 }, - "material_print_temperature": { "default_value": 195 }, "retraction_amount": { "default_value": 1.5 }, "skirt_gap": { "default_value": 5.0 }, "layer_height": { "default_value": 0.25 }, diff --git a/resources/definitions/rigid3d_zero2.def.json b/resources/definitions/rigid3d_zero2.def.json index f24c869636..cc922769f7 100644 --- a/resources/definitions/rigid3d_zero2.def.json +++ b/resources/definitions/rigid3d_zero2.def.json @@ -44,9 +44,6 @@ "material_print_temperature": { "value": 235 }, - "material_bed_temperature": { - "default_value": 100 - }, "speed_print": { "default_value": 40 }, @@ -55,7 +52,7 @@ }, "speed_travel": { "value": 100 - }, + }, "support_enable": { "default_value": false }, @@ -90,14 +87,9 @@ "default_value": false }, "cool_fan_speed": { - "default_value": 50, "value": 50 }, - "cool_fan_speed_min": { - "default_value": 0 - }, "cool_fan_full_at_height": { - "default_value": 1.0, "value": 1.0 }, "support_z_distance": { diff --git a/resources/definitions/rigidbot.def.json b/resources/definitions/rigidbot.def.json index c04cd7c5e6..d6fb4f1651 100644 --- a/resources/definitions/rigidbot.def.json +++ b/resources/definitions/rigidbot.def.json @@ -49,37 +49,15 @@ "top_bottom_thickness": { "default_value": 0.3 }, - "material_print_temperature": { - "default_value": 195 - }, - "material_bed_temperature": { - "default_value": 60 - }, "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 100 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, "speed_layer_0": { - "default_value": 15, "minimum_value": "0.1" }, - "infill_overlap": { - "default_value": 10 - }, "cool_fan_enabled": { "default_value": false }, - "cool_fan_speed": { - "default_value": 0 - }, "skirt_line_count": { "default_value": 3 }, diff --git a/resources/definitions/rigidbot_big.def.json b/resources/definitions/rigidbot_big.def.json index c97c6df9f3..9568417acc 100644 --- a/resources/definitions/rigidbot_big.def.json +++ b/resources/definitions/rigidbot_big.def.json @@ -49,37 +49,15 @@ "top_bottom_thickness": { "default_value": 0.3 }, - "material_print_temperature": { - "default_value": 195 - }, - "material_bed_temperature": { - "default_value": 60 - }, "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 100 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, "speed_layer_0": { - "default_value": 15, "minimum_value": "0.1" }, - "infill_overlap": { - "default_value": 10 - }, "cool_fan_enabled": { "default_value": false }, - "cool_fan_speed": { - "default_value": 0 - }, "skirt_line_count": { "default_value": 3 }, diff --git a/resources/definitions/robo_3d_r1.def.json b/resources/definitions/robo_3d_r1.def.json index 8d7698e198..36b8addd27 100644 --- a/resources/definitions/robo_3d_r1.def.json +++ b/resources/definitions/robo_3d_r1.def.json @@ -22,28 +22,16 @@ "default_value": " M104 S0 ;extruder heater off\n M140 S0 ;heated bed heater off (if you have it)\n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning\n" }, "cool_min_layer_time": { "default_value": 7 }, - "speed_topbottom": { "default_value": 40 }, "retraction_speed": { "default_value": 50 }, - "layer_0_z_overlap": { "default_value": 0.2 }, "cool_min_speed": { "default_value": 19 }, - "material_bed_temperature": { "default_value": 60 }, "support_angle": { "default_value": 50 }, - "speed_layer_0": { "default_value": 30 }, - "line_width": { "default_value": 0.4 }, - "speed_infill": { "default_value": 60 }, "prime_tower_size": { "default_value": 8.660254037844387 }, "support_enable": { "default_value": true }, - "cool_fan_full_at_height": { "default_value": 0.1 }, - "bottom_thickness": { "default_value": 1.2 }, "raft_airgap": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.15 }, - "top_thickness": { "default_value": 1.2 }, - "speed_wall_0": { "default_value": 40 }, - "retraction_min_travel": { "default_value": 5 }, "material_flow": { "default_value": 100 }, "infill_sparse_density": { "default_value": 10 }, "wall_thickness": { "default_value": 1.2 }, - "material_print_temperature": { "default_value": 190 }, "retraction_amount": { "default_value": 3 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 40 }, diff --git a/resources/definitions/seemecnc_artemis.def.json b/resources/definitions/seemecnc_artemis.def.json index ec92f528d7..88c1d84b3d 100644 --- a/resources/definitions/seemecnc_artemis.def.json +++ b/resources/definitions/seemecnc_artemis.def.json @@ -27,13 +27,11 @@ "machine_name": { "default_value": "Artemis" }, "machine_shape": { "default_value": "elliptic" }, "machine_width": { "default_value": 290 }, - "relative_extrusion": { "default_value": false }, + "relative_extrusion": { "value": "False" }, "retraction_amount": { "default_value": 3.2 }, "retraction_combing": { "default_value": "off" }, "retraction_hop_enabled": { "default_value": true }, "retraction_hop_only_when_collides": { "default_value": false }, - "retraction_prime_speed": { "default_value": 45 }, - "retraction_retract_speed": { "default_value": 45 }, "retraction_speed": { "default_value": 45 }, "machine_start_gcode": { "default_value": "G28\nG1 Z15.0 F10000\nG92 E0" diff --git a/resources/definitions/seemecnc_v32.def.json b/resources/definitions/seemecnc_v32.def.json index d4316c25d9..0f49410116 100644 --- a/resources/definitions/seemecnc_v32.def.json +++ b/resources/definitions/seemecnc_v32.def.json @@ -27,13 +27,11 @@ "machine_name": { "default_value": "Rostock Max V3.2" }, "machine_shape": { "default_value": "elliptic" }, "machine_width": { "default_value": 265 }, - "relative_extrusion": { "default_value": false }, + "relative_extrusion": { "value": "False" }, "retraction_amount": { "default_value": 3.2 }, "retraction_combing": { "default_value": "off" }, "retraction_hop_enabled": { "default_value": true }, "retraction_hop_only_when_collides": { "default_value": false }, - "retraction_prime_speed": { "default_value": 45 }, - "retraction_retract_speed": { "default_value": 45 }, "retraction_speed": { "default_value": 45 }, "machine_start_gcode": { "default_value": "G28\nG1 Z15.0 F10000\nG92 E0" diff --git a/resources/definitions/strateo3d.def.json b/resources/definitions/strateo3d.def.json index a3710fb9af..4ae8473285 100644 --- a/resources/definitions/strateo3d.def.json +++ b/resources/definitions/strateo3d.def.json @@ -32,7 +32,7 @@ "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, "machine_head_with_fans_polygon": { "default_value": [ [ -76, -51.8 ] , [ 25, -51.8 ] , [ 25, 38.2 ] , [ -76, 38.2 ] ] }, - "gantry_height": { "default_value": 40 }, + "gantry_height": { "value": "40" }, "machine_extruder_count": { "default_value": 2 }, "machine_gcode_flavor": { "default_value": "Marlin" }, "machine_start_gcode": { "default_value": "G28 \nG90 G1 X300 Y210 Z15 F6000 \nG92 E0" }, diff --git a/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json index a7f4b7e549..e4893cacac 100644 --- a/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json +++ b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json @@ -55,9 +55,6 @@ "line_width": { "value": "round(machine_nozzle_size * 0.875, 2)" }, - "speed_layer_0": { - "default_value": 10 - }, "speed_support": { "value": "speed_wall_0" }, diff --git a/resources/definitions/tam.def.json b/resources/definitions/tam.def.json index 67a4bb8eab..211049ca3d 100644 --- a/resources/definitions/tam.def.json +++ b/resources/definitions/tam.def.json @@ -37,7 +37,6 @@ "machine_center_is_zero": { "default_value": false }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 200 }, "retraction_amount": { "default_value": 0.4 }, "retraction_speed": { "default_value": 35}, diff --git a/resources/definitions/tizyx_evy.def.json b/resources/definitions/tizyx_evy.def.json index f92f679677..57c7337196 100644 --- a/resources/definitions/tizyx_evy.def.json +++ b/resources/definitions/tizyx_evy.def.json @@ -50,13 +50,8 @@ "fill_outline_gaps": { "default_value": true}, "infill_sparse_density": { "default_value": 15}, "retraction_amount": { "default_value": 2.5}, - "retraction_min_travel": { "default_value": 2}, "retraction_speed": { "default_value": 30}, "speed_print": { "default_value": 60}, - "speed_topbottom": { "default_value": 50}, - "speed_wall_0": { "default_value": 40}, - "top_layers": { "default_value": 4}, - "wall_line_count": { "default_value": 2}, "cool_min_layer_time": { "default_value": 11}, "layer_height": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, "layer_height_0": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, diff --git a/resources/definitions/ubuild-3d_mr_bot_280.def.json b/resources/definitions/ubuild-3d_mr_bot_280.def.json index 060752387b..255d8f032b 100644 --- a/resources/definitions/ubuild-3d_mr_bot_280.def.json +++ b/resources/definitions/ubuild-3d_mr_bot_280.def.json @@ -1,5 +1,4 @@ { - "id": "ubuild-3d_mr_bot_280", "version": 2, "name": "uBuild-3D Mr Bot 280", "inherits": "fdmprinter", @@ -24,12 +23,9 @@ "machine_height": { "default_value": 275 }, "machine_depth": { "default_value": 275 }, "machine_center_is_zero": { "default_value": false }, - "material_bed_temperature": { "default_value": 70 }, "layer_height_0": { "default_value": 0.1 }, "retraction_amount": { "default_value": 2 }, "retraction_speed": { "default_value": 50 }, - "retraction_retract_speed": { "default_value": 50 }, - "retraction_prime_speed": { "default_value": 30 }, "adhesion_type": { "default_value": "skirt" }, "machine_nozzle_heat_up_speed": { "default_value": 2 }, "machine_nozzle_cool_down_speed": { "default_value": 2 }, diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index bb1ab13196..40fbdaf709 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -88,9 +88,6 @@ }, "machine_acceleration": { "default_value": 3000 - }, - "machine_nozzle_temp_enabled": { - "default_value": false } } } diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index 65ee8f063b..633e50bdba 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -37,9 +37,6 @@ "line_width": { "value": "round(machine_nozzle_size * 0.875, 2)" }, - "speed_layer_0": { - "default_value": 20 - }, "speed_support": { "value": "speed_wall_0" }, diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 0d6834521e..7348c14a2a 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s3", "version": 2, "name": "Ultimaker S3", "inherits": "ultimaker", diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index dfa8da5397..dcd44a371a 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s5", "version": 2, "name": "Ultimaker S5", "inherits": "ultimaker", @@ -70,8 +69,6 @@ "extruder_prime_pos_abs": { "default_value": true }, "machine_start_gcode": { "default_value": "" }, "machine_end_gcode": { "default_value": "" }, - "prime_tower_position_x": { "value": "345" }, - "prime_tower_position_y": { "value": "222.5" }, "prime_blob_enable": { "enabled": true, "default_value": false }, "speed_travel": diff --git a/resources/definitions/uni_print_3d.def.json b/resources/definitions/uni_print_3d.def.json index 427177176a..99d9eab1e0 100644 --- a/resources/definitions/uni_print_3d.def.json +++ b/resources/definitions/uni_print_3d.def.json @@ -1,5 +1,4 @@ { - "id": "uni_print_3d", "name": "UNI-PRINT-3D", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/vertex_k8400.def.json b/resources/definitions/vertex_k8400.def.json index 6bba095978..dad50cffe8 100644 --- a/resources/definitions/vertex_k8400.def.json +++ b/resources/definitions/vertex_k8400.def.json @@ -20,12 +20,6 @@ "machine_heated_bed": { "default_value": true }, - "material_bed_temperature": { - "default_value": 0 - }, - "material_bed_temperature_layer_0": { - "default_value": 0 - }, "machine_width": { "default_value": 200 }, diff --git a/resources/definitions/vertex_k8400_dual.def.json b/resources/definitions/vertex_k8400_dual.def.json index 9d014b9cf8..f5c4921cfc 100644 --- a/resources/definitions/vertex_k8400_dual.def.json +++ b/resources/definitions/vertex_k8400_dual.def.json @@ -18,12 +18,6 @@ "machine_heated_bed": { "default_value": true }, - "material_bed_temperature": { - "default_value": 0 - }, - "material_bed_temperature_layer_0": { - "default_value": 0 - }, "machine_width": { "default_value": 223.7 }, diff --git a/resources/definitions/vertex_nano_k8600.def.json b/resources/definitions/vertex_nano_k8600.def.json index 02697a1152..ef9552caf3 100644 --- a/resources/definitions/vertex_nano_k8600.def.json +++ b/resources/definitions/vertex_nano_k8600.def.json @@ -19,12 +19,6 @@ "machine_heated_bed": { "default_value": false }, - "material_bed_temperature": { - "default_value": 0 - }, - "material_bed_temperature_layer_0": { - "default_value": 0 - }, "machine_width": { "default_value": 80 }, diff --git a/resources/definitions/wanhao_d9.def.json b/resources/definitions/wanhao_d9.def.json index 39ad139ff8..ac4d41fa40 100644 --- a/resources/definitions/wanhao_d9.def.json +++ b/resources/definitions/wanhao_d9.def.json @@ -31,8 +31,6 @@ "support_angle": { "default_value": 60 }, "support_enable": { "default_value": true }, "layer_height_0": { "default_value": 0.15 }, - "top_thickness": { "default_value": 0.6 }, - "material_print_temperature": { "default_value": 190 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 30 }, "adhesion_type": { "default_value": "raft" }, diff --git a/resources/definitions/zone3d_printer.def.json b/resources/definitions/zone3d_printer.def.json index 5aa015cace..4c72422788 100644 --- a/resources/definitions/zone3d_printer.def.json +++ b/resources/definitions/zone3d_printer.def.json @@ -16,9 +16,7 @@ "overrides": { "prime_tower_size": { "default_value": 10.350983390135314 }, - "material_print_temperature": { "default_value": 260 }, "layer_height": { "default_value": 0.14 }, - "speed_travel": { "default_value": 150 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/extruders/101Hero_extruder_0.def.json b/resources/extruders/101Hero_extruder_0.def.json index 82c06e40d6..21c892133c 100644 --- a/resources/extruders/101Hero_extruder_0.def.json +++ b/resources/extruders/101Hero_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "101Hero_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/3dator_extruder_0.def.json b/resources/extruders/3dator_extruder_0.def.json index 6749eb7bb4..97b03518f7 100644 --- a/resources/extruders/3dator_extruder_0.def.json +++ b/resources/extruders/3dator_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "3dator_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/Mark2_extruder1.def.json b/resources/extruders/Mark2_extruder1.def.json index 915c331083..27becf88ff 100644 --- a/resources/extruders/Mark2_extruder1.def.json +++ b/resources/extruders/Mark2_extruder1.def.json @@ -1,5 +1,4 @@ { - "id": "Mark2_extruder1", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/Mark2_extruder2.def.json b/resources/extruders/Mark2_extruder2.def.json index 2c05a09391..ac654d9c00 100644 --- a/resources/extruders/Mark2_extruder2.def.json +++ b/resources/extruders/Mark2_extruder2.def.json @@ -1,5 +1,4 @@ { - "id": "Mark2_extruder2", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/abax_pri3_extruder_0.def.json b/resources/extruders/abax_pri3_extruder_0.def.json index 27e86d6042..618ca7f596 100644 --- a/resources/extruders/abax_pri3_extruder_0.def.json +++ b/resources/extruders/abax_pri3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "abax_pri3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/abax_pri5_extruder_0.def.json b/resources/extruders/abax_pri5_extruder_0.def.json index 842e76e5f3..4a96b5e12e 100644 --- a/resources/extruders/abax_pri5_extruder_0.def.json +++ b/resources/extruders/abax_pri5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "abax_pri5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/abax_titan_extruder_0.def.json b/resources/extruders/abax_titan_extruder_0.def.json index 79e1974def..078b9f0470 100644 --- a/resources/extruders/abax_titan_extruder_0.def.json +++ b/resources/extruders/abax_titan_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "abax_titan_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/alfawise_u20_extruder_0.def.json b/resources/extruders/alfawise_u20_extruder_0.def.json index 2fbe3f1772..6bb2bde534 100644 --- a/resources/extruders/alfawise_u20_extruder_0.def.json +++ b/resources/extruders/alfawise_u20_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "alfawise_u20_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/alfawise_u30_extruder_0.def.json b/resources/extruders/alfawise_u30_extruder_0.def.json index 37f59eb567..4014b5ab62 100644 --- a/resources/extruders/alfawise_u30_extruder_0.def.json +++ b/resources/extruders/alfawise_u30_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "alfawise_u30_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/alya3dp_extruder_0.def.json b/resources/extruders/alya3dp_extruder_0.def.json index 3676f01ad2..5e05210e2c 100644 --- a/resources/extruders/alya3dp_extruder_0.def.json +++ b/resources/extruders/alya3dp_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "alya3dp_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/anet_a6_extruder_0.def.json b/resources/extruders/anet_a6_extruder_0.def.json index 704d3a55ca..c87160a542 100644 --- a/resources/extruders/anet_a6_extruder_0.def.json +++ b/resources/extruders/anet_a6_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "anet_a6_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/anycubic_4max_extruder_0.def.json b/resources/extruders/anycubic_4max_extruder_0.def.json index 5c2ab8d479..9ea55928b8 100644 --- a/resources/extruders/anycubic_4max_extruder_0.def.json +++ b/resources/extruders/anycubic_4max_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "anycubic_4max_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/anycubic_chiron_extruder_0.def.json b/resources/extruders/anycubic_chiron_extruder_0.def.json index cc48df08bb..b4117c755a 100644 --- a/resources/extruders/anycubic_chiron_extruder_0.def.json +++ b/resources/extruders/anycubic_chiron_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "anycubic_chiron_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/anycubic_i3_mega_extruder_0.def.json b/resources/extruders/anycubic_i3_mega_extruder_0.def.json index 6d9c330536..f15eab4829 100644 --- a/resources/extruders/anycubic_i3_mega_extruder_0.def.json +++ b/resources/extruders/anycubic_i3_mega_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "anycubic_i3_mega_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bfb_extruder_0.def.json b/resources/extruders/bfb_extruder_0.def.json index 88c81ee03e..6dd995d098 100644 --- a/resources/extruders/bfb_extruder_0.def.json +++ b/resources/extruders/bfb_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bfb_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bibo2_dual_extruder_0.def.json b/resources/extruders/bibo2_dual_extruder_0.def.json index f83801fa0c..b918d070be 100644 --- a/resources/extruders/bibo2_dual_extruder_0.def.json +++ b/resources/extruders/bibo2_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "BIBO1", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bibo2_dual_extruder_1.def.json b/resources/extruders/bibo2_dual_extruder_1.def.json index 5f479ba54b..e0386188bb 100644 --- a/resources/extruders/bibo2_dual_extruder_1.def.json +++ b/resources/extruders/bibo2_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "BIBO2", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_hephestos_2_extruder_0.def.json b/resources/extruders/bq_hephestos_2_extruder_0.def.json index 833907937d..d58d8d755a 100644 --- a/resources/extruders/bq_hephestos_2_extruder_0.def.json +++ b/resources/extruders/bq_hephestos_2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_hephestos_extruder_0.def.json b/resources/extruders/bq_hephestos_extruder_0.def.json index 753778f399..dc9b42d66d 100644 --- a/resources/extruders/bq_hephestos_extruder_0.def.json +++ b/resources/extruders/bq_hephestos_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_hephestos_xl_extruder_0.def.json b/resources/extruders/bq_hephestos_xl_extruder_0.def.json index 91cac04dc9..a52032f129 100644 --- a/resources/extruders/bq_hephestos_xl_extruder_0.def.json +++ b/resources/extruders/bq_hephestos_xl_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_xl_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_witbox_2_extruder_0.def.json b/resources/extruders/bq_witbox_2_extruder_0.def.json index 04107f4471..62fe62ad0b 100644 --- a/resources/extruders/bq_witbox_2_extruder_0.def.json +++ b/resources/extruders/bq_witbox_2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_witbox_2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_witbox_extruder_0.def.json b/resources/extruders/bq_witbox_extruder_0.def.json index d3a5c677af..37b1492676 100644 --- a/resources/extruders/bq_witbox_extruder_0.def.json +++ b/resources/extruders/bq_witbox_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_witbox_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_large_front.def.json b/resources/extruders/builder_premium_large_front.def.json index 4834bc8fd9..dc1c557304 100644 --- a/resources/extruders/builder_premium_large_front.def.json +++ b/resources/extruders/builder_premium_large_front.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_large_front", "version": 2, "name": "Front Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_large_rear.def.json b/resources/extruders/builder_premium_large_rear.def.json index f257749ea4..5dbe6d30c9 100644 --- a/resources/extruders/builder_premium_large_rear.def.json +++ b/resources/extruders/builder_premium_large_rear.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_large_rear", "version": 2, "name": "Rear Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_medium_front.def.json b/resources/extruders/builder_premium_medium_front.def.json index 05dcb3d49f..2d38e48aab 100644 --- a/resources/extruders/builder_premium_medium_front.def.json +++ b/resources/extruders/builder_premium_medium_front.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_medium_front", "version": 2, "name": "Front Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_medium_rear.def.json b/resources/extruders/builder_premium_medium_rear.def.json index 3461e07f09..0a789c38f1 100644 --- a/resources/extruders/builder_premium_medium_rear.def.json +++ b/resources/extruders/builder_premium_medium_rear.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_medium_rear", "version": 2, "name": "Rear Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_small_front.def.json b/resources/extruders/builder_premium_small_front.def.json index 7a1c352c73..b36c535aeb 100644 --- a/resources/extruders/builder_premium_small_front.def.json +++ b/resources/extruders/builder_premium_small_front.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_small_front", "version": 2, "name": "Front Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_small_rear.def.json b/resources/extruders/builder_premium_small_rear.def.json index 7085236a5c..8e00d0cc39 100644 --- a/resources/extruders/builder_premium_small_rear.def.json +++ b/resources/extruders/builder_premium_small_rear.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_small_rear", "version": 2, "name": "Rear Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_0.def.json b/resources/extruders/cartesio_extruder_0.def.json index 6d2b5f634e..ad27d4854c 100644 --- a/resources/extruders/cartesio_extruder_0.def.json +++ b/resources/extruders/cartesio_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_1.def.json b/resources/extruders/cartesio_extruder_1.def.json index 3d49a220c0..1699a9c6a8 100644 --- a/resources/extruders/cartesio_extruder_1.def.json +++ b/resources/extruders/cartesio_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_1", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_2.def.json b/resources/extruders/cartesio_extruder_2.def.json index 1f8f8b9ca9..2521ada681 100644 --- a/resources/extruders/cartesio_extruder_2.def.json +++ b/resources/extruders/cartesio_extruder_2.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_2", "version": 2, "name": "Extruder 3", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_3.def.json b/resources/extruders/cartesio_extruder_3.def.json index 0b1cfe493e..c844e7ce54 100644 --- a/resources/extruders/cartesio_extruder_3.def.json +++ b/resources/extruders/cartesio_extruder_3.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_3", "version": 2, "name": "Extruder 4", "inherits": "fdmextruder", diff --git a/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json b/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json index 26d847483d..dfa06c776a 100644 --- a/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json +++ b/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cocoon_create_modelmaker_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cr-x_extruder_0.def.json b/resources/extruders/cr-x_extruder_0.def.json index 8135815afb..4e73fd0e8e 100644 --- a/resources/extruders/cr-x_extruder_0.def.json +++ b/resources/extruders/cr-x_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cr-x_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/cr-x_extruder_1.def.json b/resources/extruders/cr-x_extruder_1.def.json index 9313f2ea78..ed6056dab9 100644 --- a/resources/extruders/cr-x_extruder_1.def.json +++ b/resources/extruders/cr-x_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "cr-x_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/creatable_d3_extruder_0.def.json b/resources/extruders/creatable_d3_extruder_0.def.json index 7d45bb8e8a..6a805febd5 100644 --- a/resources/extruders/creatable_d3_extruder_0.def.json +++ b/resources/extruders/creatable_d3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "creatable_d3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_3dp_110f_extruder_0.def.json b/resources/extruders/cubicon_3dp_110f_extruder_0.def.json index 9c854fd2a1..048c12b992 100644 --- a/resources/extruders/cubicon_3dp_110f_extruder_0.def.json +++ b/resources/extruders/cubicon_3dp_110f_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_3dp_110f_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_3dp_210f_extruder_0.def.json b/resources/extruders/cubicon_3dp_210f_extruder_0.def.json index 8a8573760a..07fe7f3769 100644 --- a/resources/extruders/cubicon_3dp_210f_extruder_0.def.json +++ b/resources/extruders/cubicon_3dp_210f_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_3dp_210f_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_3dp_310f_extruder_0.def.json b/resources/extruders/cubicon_3dp_310f_extruder_0.def.json index 4edbbd5a6c..8dc336877f 100644 --- a/resources/extruders/cubicon_3dp_310f_extruder_0.def.json +++ b/resources/extruders/cubicon_3dp_310f_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_3dp_310f_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_dual_pro_a30_extruder_0.def.json b/resources/extruders/cubicon_dual_pro_a30_extruder_0.def.json index 689be873e0..6c8993e799 100644 --- a/resources/extruders/cubicon_dual_pro_a30_extruder_0.def.json +++ b/resources/extruders/cubicon_dual_pro_a30_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_dual_pro_a30_extruder_1", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_dual_pro_a30_extruder_1.def.json b/resources/extruders/cubicon_dual_pro_a30_extruder_1.def.json index c01a05a894..ccdfdee1f7 100644 --- a/resources/extruders/cubicon_dual_pro_a30_extruder_1.def.json +++ b/resources/extruders/cubicon_dual_pro_a30_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_dual_pro_a30_extruder_2", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_style_plus_a15_extruder_0.def.json b/resources/extruders/cubicon_style_plus_a15_extruder_0.def.json index 18621ba429..12d022cd1e 100644 --- a/resources/extruders/cubicon_style_plus_a15_extruder_0.def.json +++ b/resources/extruders/cubicon_style_plus_a15_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_style_plus_a15_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_1.def.json b/resources/extruders/custom_extruder_1.def.json index 859c6a2f22..942f3e96b9 100644 --- a/resources/extruders/custom_extruder_1.def.json +++ b/resources/extruders/custom_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_1", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_2.def.json b/resources/extruders/custom_extruder_2.def.json index eecda5dfcd..cd43efa994 100644 --- a/resources/extruders/custom_extruder_2.def.json +++ b/resources/extruders/custom_extruder_2.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_2", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_3.def.json b/resources/extruders/custom_extruder_3.def.json index 77909ec05d..be5bdd0e6a 100644 --- a/resources/extruders/custom_extruder_3.def.json +++ b/resources/extruders/custom_extruder_3.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_3", "version": 2, "name": "Extruder 3", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_4.def.json b/resources/extruders/custom_extruder_4.def.json index be792c3a8e..ce1df0a5f5 100644 --- a/resources/extruders/custom_extruder_4.def.json +++ b/resources/extruders/custom_extruder_4.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_4", "version": 2, "name": "Extruder 4", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_5.def.json b/resources/extruders/custom_extruder_5.def.json index ea64605041..beb4786505 100644 --- a/resources/extruders/custom_extruder_5.def.json +++ b/resources/extruders/custom_extruder_5.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_5", "version": 2, "name": "Extruder 5", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_6.def.json b/resources/extruders/custom_extruder_6.def.json index fd27fadace..7f1e1a1343 100644 --- a/resources/extruders/custom_extruder_6.def.json +++ b/resources/extruders/custom_extruder_6.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_6", "version": 2, "name": "Extruder 6", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_7.def.json b/resources/extruders/custom_extruder_7.def.json index cf003d1a6b..e4239f35f0 100644 --- a/resources/extruders/custom_extruder_7.def.json +++ b/resources/extruders/custom_extruder_7.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_7", "version": 2, "name": "Extruder 7", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_8.def.json b/resources/extruders/custom_extruder_8.def.json index f418a55186..7671825792 100644 --- a/resources/extruders/custom_extruder_8.def.json +++ b/resources/extruders/custom_extruder_8.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_8", "version": 2, "name": "Extruder 8", "inherits": "fdmextruder", diff --git a/resources/extruders/delta_go_extruder_0.def.json b/resources/extruders/delta_go_extruder_0.def.json index 2262270dfb..330cde08bf 100644 --- a/resources/extruders/delta_go_extruder_0.def.json +++ b/resources/extruders/delta_go_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "delta_go_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/deltabot_extruder_0.def.json b/resources/extruders/deltabot_extruder_0.def.json index e13d6a6ee3..d4773ccf9f 100644 --- a/resources/extruders/deltabot_extruder_0.def.json +++ b/resources/extruders/deltabot_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "deltabot_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/deltacomb_extruder_0.def.json b/resources/extruders/deltacomb_extruder_0.def.json index 64c512b7fe..875655d5c7 100755 --- a/resources/extruders/deltacomb_extruder_0.def.json +++ b/resources/extruders/deltacomb_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "deltacomb_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/deltacomb_extruder_1.def.json b/resources/extruders/deltacomb_extruder_1.def.json index 1657688482..b1f30f4624 100755 --- a/resources/extruders/deltacomb_extruder_1.def.json +++ b/resources/extruders/deltacomb_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "deltacomb_extruder_1", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/easyarts_ares_extruder_0.def.json b/resources/extruders/easyarts_ares_extruder_0.def.json index ec7ba81c57..4ddd476dbb 100644 --- a/resources/extruders/easyarts_ares_extruder_0.def.json +++ b/resources/extruders/easyarts_ares_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "easyarts_ares_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/erzay3d_extruder_0.def.json b/resources/extruders/erzay3d_extruder_0.def.json index 65bf515263..a9cea62897 100644 --- a/resources/extruders/erzay3d_extruder_0.def.json +++ b/resources/extruders/erzay3d_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "erzay3d_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/fabtotum_extruder_0.def.json b/resources/extruders/fabtotum_extruder_0.def.json index 5ed4da6256..a763fbcc15 100644 --- a/resources/extruders/fabtotum_extruder_0.def.json +++ b/resources/extruders/fabtotum_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "fabtotum_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/felixpro2_dual_extruder_0.def.json b/resources/extruders/felixpro2_dual_extruder_0.def.json index 90c41a83b5..4278a532f9 100644 --- a/resources/extruders/felixpro2_dual_extruder_0.def.json +++ b/resources/extruders/felixpro2_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "felixpro2_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/felixpro2_dual_extruder_1.def.json b/resources/extruders/felixpro2_dual_extruder_1.def.json index 3ff0d401fd..195aad474d 100644 --- a/resources/extruders/felixpro2_dual_extruder_1.def.json +++ b/resources/extruders/felixpro2_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "felixpro2_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/felixtec4_dual_extruder_0.def.json b/resources/extruders/felixtec4_dual_extruder_0.def.json index 2a2d0468e1..1821b0e601 100644 --- a/resources/extruders/felixtec4_dual_extruder_0.def.json +++ b/resources/extruders/felixtec4_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "felixtec4_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/felixtec4_dual_extruder_1.def.json b/resources/extruders/felixtec4_dual_extruder_1.def.json index 5d7e9c74a3..37a99c5fb4 100644 --- a/resources/extruders/felixtec4_dual_extruder_1.def.json +++ b/resources/extruders/felixtec4_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "felixtec4_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/flsun_qq_extruder.def.json b/resources/extruders/flsun_qq_extruder.def.json index 7c93776836..c7ca0ed6eb 100644 --- a/resources/extruders/flsun_qq_extruder.def.json +++ b/resources/extruders/flsun_qq_extruder.def.json @@ -1,5 +1,4 @@ { - "id": "flsun_qq_extruder", "version": 2, "name": "Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/flsun_qq_s_extruder_0.def.json b/resources/extruders/flsun_qq_s_extruder_0.def.json index cba424e182..e61056fcd3 100644 --- a/resources/extruders/flsun_qq_s_extruder_0.def.json +++ b/resources/extruders/flsun_qq_s_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "flsun_qq_s_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/folgertech_FT-5_extruder_0.def.json b/resources/extruders/folgertech_FT-5_extruder_0.def.json index 8ba9d130c6..861b0e7a7e 100644 --- a/resources/extruders/folgertech_FT-5_extruder_0.def.json +++ b/resources/extruders/folgertech_FT-5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "folgertech_FT-5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/geeetech_a30_extruder_0.def.json b/resources/extruders/geeetech_a30_extruder_0.def.json index bc1d6a6ed6..90cb496877 100644 --- a/resources/extruders/geeetech_a30_extruder_0.def.json +++ b/resources/extruders/geeetech_a30_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "geeetech_a30_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/gmax15plus_dual_extruder_0.def.json b/resources/extruders/gmax15plus_dual_extruder_0.def.json index d3146a0576..45f35dee1f 100644 --- a/resources/extruders/gmax15plus_dual_extruder_0.def.json +++ b/resources/extruders/gmax15plus_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/gmax15plus_dual_extruder_1.def.json b/resources/extruders/gmax15plus_dual_extruder_1.def.json index 7b7354d794..6d0d5db06f 100644 --- a/resources/extruders/gmax15plus_dual_extruder_1.def.json +++ b/resources/extruders/gmax15plus_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/gmax15plus_extruder_0.def.json b/resources/extruders/gmax15plus_extruder_0.def.json index 70389745b3..5b0889d46d 100644 --- a/resources/extruders/gmax15plus_extruder_0.def.json +++ b/resources/extruders/gmax15plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/grr_neo_extruder_0.def.json b/resources/extruders/grr_neo_extruder_0.def.json index 6d76c90796..a9f1fa4faa 100644 --- a/resources/extruders/grr_neo_extruder_0.def.json +++ b/resources/extruders/grr_neo_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "grr_neo_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/hBp_extruder_left.def.json b/resources/extruders/hBp_extruder_left.def.json index 7e71ca27a8..ce23f27c29 100644 --- a/resources/extruders/hBp_extruder_left.def.json +++ b/resources/extruders/hBp_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "hBp_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/hBp_extruder_right.def.json b/resources/extruders/hBp_extruder_right.def.json index acd2312268..170556a1fd 100644 --- a/resources/extruders/hBp_extruder_right.def.json +++ b/resources/extruders/hBp_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "hBp_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/hms434_tool_1.def.json b/resources/extruders/hms434_tool_1.def.json index c1e20140f3..3a1619d98b 100644 --- a/resources/extruders/hms434_tool_1.def.json +++ b/resources/extruders/hms434_tool_1.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_1", "version": 2, "name": "Tool 1", "inherits": "fdmextruder", diff --git a/resources/extruders/hms434_tool_2.def.json b/resources/extruders/hms434_tool_2.def.json index a2015006dc..3a174f82b9 100644 --- a/resources/extruders/hms434_tool_2.def.json +++ b/resources/extruders/hms434_tool_2.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_2", "version": 2, "name": "Tool 2", "inherits": "fdmextruder", diff --git a/resources/extruders/hms434_tool_3.def.json b/resources/extruders/hms434_tool_3.def.json index b0199d5523..e1e237d332 100644 --- a/resources/extruders/hms434_tool_3.def.json +++ b/resources/extruders/hms434_tool_3.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_3", "version": 2, "name": "Tool 3", "inherits": "fdmextruder", diff --git a/resources/extruders/hms434_tool_4.def.json b/resources/extruders/hms434_tool_4.def.json index 9346dafd67..1a68d5aff5 100644 --- a/resources/extruders/hms434_tool_4.def.json +++ b/resources/extruders/hms434_tool_4.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_4", "version": 2, "name": "Tool 4", "inherits": "fdmextruder", diff --git a/resources/extruders/hms434_tool_5.def.json b/resources/extruders/hms434_tool_5.def.json index 051227fb1b..b56e8be84e 100644 --- a/resources/extruders/hms434_tool_5.def.json +++ b/resources/extruders/hms434_tool_5.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_5", "version": 2, "name": "Tool 5", "inherits": "fdmextruder", diff --git a/resources/extruders/hms434_tool_6.def.json b/resources/extruders/hms434_tool_6.def.json index 056bb66741..b8c8cdf062 100644 --- a/resources/extruders/hms434_tool_6.def.json +++ b/resources/extruders/hms434_tool_6.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_6", "version": 2, "name": "Tool 6", "inherits": "fdmextruder", diff --git a/resources/extruders/hms434_tool_7.def.json b/resources/extruders/hms434_tool_7.def.json index ff8f938e1c..3fc04078fa 100644 --- a/resources/extruders/hms434_tool_7.def.json +++ b/resources/extruders/hms434_tool_7.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_7", "version": 2, "name": "Tool 7", "inherits": "fdmextruder", diff --git a/resources/extruders/hms434_tool_8.def.json b/resources/extruders/hms434_tool_8.def.json index 2e9302e26c..faa6f36871 100644 --- a/resources/extruders/hms434_tool_8.def.json +++ b/resources/extruders/hms434_tool_8.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_8", "version": 2, "name": "Tool 8", "inherits": "fdmextruder", diff --git a/resources/extruders/imade3d_jellybox_2_extruder_0.def.json b/resources/extruders/imade3d_jellybox_2_extruder_0.def.json index 1d50297343..ca25b62286 100644 --- a/resources/extruders/imade3d_jellybox_2_extruder_0.def.json +++ b/resources/extruders/imade3d_jellybox_2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "imade3d_jellybox_2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/imade3d_jellybox_extruder_0.def.json b/resources/extruders/imade3d_jellybox_extruder_0.def.json index feaa717ee6..69c6d87d79 100644 --- a/resources/extruders/imade3d_jellybox_extruder_0.def.json +++ b/resources/extruders/imade3d_jellybox_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "imade3d_jellybox_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/innovo_inventor_extruder_0.def.json b/resources/extruders/innovo_inventor_extruder_0.def.json index ed599463f2..8758f3d516 100644 --- a/resources/extruders/innovo_inventor_extruder_0.def.json +++ b/resources/extruders/innovo_inventor_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "innovo_inventor_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_a1_extruder_0.def.json b/resources/extruders/jgaurora_a1_extruder_0.def.json index 71742b734a..f67d8d553e 100644 --- a/resources/extruders/jgaurora_a1_extruder_0.def.json +++ b/resources/extruders/jgaurora_a1_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_a1_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_a3s_extruder_0.def.json b/resources/extruders/jgaurora_a3s_extruder_0.def.json index 430867b38b..9a42d0da04 100644 --- a/resources/extruders/jgaurora_a3s_extruder_0.def.json +++ b/resources/extruders/jgaurora_a3s_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_a3s_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_a5_extruder_0.def.json b/resources/extruders/jgaurora_a5_extruder_0.def.json index fbc6ba77e6..5308c57934 100644 --- a/resources/extruders/jgaurora_a5_extruder_0.def.json +++ b/resources/extruders/jgaurora_a5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_a5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json b/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json index 41593a4821..58beaa4cc8 100644 --- a/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json +++ b/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_jgmaker_magic_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_z_603s_extruder_0.def.json b/resources/extruders/jgaurora_z_603s_extruder_0.def.json index 987425b28a..647016d5ff 100644 --- a/resources/extruders/jgaurora_z_603s_extruder_0.def.json +++ b/resources/extruders/jgaurora_z_603s_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_z_603s_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/julia_extruder_0.def.json b/resources/extruders/julia_extruder_0.def.json index 53a569ccd8..ef0ca83ac4 100644 --- a/resources/extruders/julia_extruder_0.def.json +++ b/resources/extruders/julia_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "julia_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kemiq_q2_beta_extruder_0.def.json b/resources/extruders/kemiq_q2_beta_extruder_0.def.json index 0c7d1b7b50..79d55223f3 100644 --- a/resources/extruders/kemiq_q2_beta_extruder_0.def.json +++ b/resources/extruders/kemiq_q2_beta_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kemiq_q2_beta_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kemiq_q2_gama_extruder_0.def.json b/resources/extruders/kemiq_q2_gama_extruder_0.def.json index bb165ca35e..ad6e6372ee 100644 --- a/resources/extruders/kemiq_q2_gama_extruder_0.def.json +++ b/resources/extruders/kemiq_q2_gama_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kemiq_q2_gama_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/key3d_tyro_extruder_0.def.json b/resources/extruders/key3d_tyro_extruder_0.def.json new file mode 100644 index 0000000000..11619da332 --- /dev/null +++ b/resources/extruders/key3d_tyro_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "0.4mm Nozzle", + "inherits": "fdmextruder", + "metadata": { + "machine": "Tyro", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/kossel_mini_extruder_0.def.json b/resources/extruders/kossel_mini_extruder_0.def.json index f57154e1a3..7da2cff3b1 100644 --- a/resources/extruders/kossel_mini_extruder_0.def.json +++ b/resources/extruders/kossel_mini_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kossel_mini_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kossel_pro_extruder_0.def.json b/resources/extruders/kossel_pro_extruder_0.def.json index 921e1d8bb4..48c1180f84 100644 --- a/resources/extruders/kossel_pro_extruder_0.def.json +++ b/resources/extruders/kossel_pro_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kossel_pro_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kupido_extruder_0.def.json b/resources/extruders/kupido_extruder_0.def.json index ef988d4fde..784e453bd1 100644 --- a/resources/extruders/kupido_extruder_0.def.json +++ b/resources/extruders/kupido_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kupido_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/makeR_pegasus_extruder_0.def.json b/resources/extruders/makeR_pegasus_extruder_0.def.json index e37891abde..c17c51d599 100644 --- a/resources/extruders/makeR_pegasus_extruder_0.def.json +++ b/resources/extruders/makeR_pegasus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "makeR_pegasus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json b/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json index a80d4079cb..278981f355 100644 --- a/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json +++ b/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "makeR_prusa_tairona_i3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/makeit_dual_1st.def.json b/resources/extruders/makeit_dual_1st.def.json index 0f5a716e16..16374b40d1 100644 --- a/resources/extruders/makeit_dual_1st.def.json +++ b/resources/extruders/makeit_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_dual_1st", "version": 2, "name": "1st Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/makeit_dual_2nd.def.json b/resources/extruders/makeit_dual_2nd.def.json index f93d670c85..562cfcbc40 100644 --- a/resources/extruders/makeit_dual_2nd.def.json +++ b/resources/extruders/makeit_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_dual_2nd", "version": 2, "name": "2nd Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/makeit_l_dual_1st.def.json b/resources/extruders/makeit_l_dual_1st.def.json index 6a9e8e3fc1..8fbc2944b1 100644 --- a/resources/extruders/makeit_l_dual_1st.def.json +++ b/resources/extruders/makeit_l_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_l_dual_1st", "version": 2, "name": "1st Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/makeit_l_dual_2nd.def.json b/resources/extruders/makeit_l_dual_2nd.def.json index 72b86b22e4..e163e9565a 100644 --- a/resources/extruders/makeit_l_dual_2nd.def.json +++ b/resources/extruders/makeit_l_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_l_dual_2nd", "version": 2, "name": "2nd Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/maker_starter_extruder_0.def.json b/resources/extruders/maker_starter_extruder_0.def.json index ee94250248..76e2f74a4c 100644 --- a/resources/extruders/maker_starter_extruder_0.def.json +++ b/resources/extruders/maker_starter_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "maker_starter_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/makerbotreplicator_extruder_0.def.json b/resources/extruders/makerbotreplicator_extruder_0.def.json index 36a975ace1..595134d788 100644 --- a/resources/extruders/makerbotreplicator_extruder_0.def.json +++ b/resources/extruders/makerbotreplicator_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "makerbotreplicator_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/malyan_m180_extruder_0.def.json b/resources/extruders/malyan_m180_extruder_0.def.json index bdf5350b26..04bc70ce55 100644 --- a/resources/extruders/malyan_m180_extruder_0.def.json +++ b/resources/extruders/malyan_m180_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m180_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/malyan_m200_extruder_0.def.json b/resources/extruders/malyan_m200_extruder_0.def.json index 4a135aa72d..88d99fb426 100644 --- a/resources/extruders/malyan_m200_extruder_0.def.json +++ b/resources/extruders/malyan_m200_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m200_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json b/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json index 032a577022..4cb893336e 100644 --- a/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json +++ b/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "mankati_fullscale_xt_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/mendel90_extruder_0.def.json b/resources/extruders/mendel90_extruder_0.def.json index 3ee2fd2b10..2ea4d9a7de 100644 --- a/resources/extruders/mendel90_extruder_0.def.json +++ b/resources/extruders/mendel90_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "mendel90_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json b/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json index e4a899d7af..023bd6b27c 100644 --- a/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json +++ b/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v1_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json b/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json index b727cfce1f..79ba110701 100644 --- a/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json +++ b/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/nwa3d_a31_extruder_0.def.json b/resources/extruders/nwa3d_a31_extruder_0.def.json index 999fe37d28..de1938956a 100644 --- a/resources/extruders/nwa3d_a31_extruder_0.def.json +++ b/resources/extruders/nwa3d_a31_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "nwa3d_a31_extruder_0", "version": 2, "name": "Standard 0.4mm", "inherits": "fdmextruder", diff --git a/resources/extruders/nwa3d_a5_extruder_0.def.json b/resources/extruders/nwa3d_a5_extruder_0.def.json index 5c3cc6a127..9131480732 100644 --- a/resources/extruders/nwa3d_a5_extruder_0.def.json +++ b/resources/extruders/nwa3d_a5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "nwa3d_a5_extruder_0", "version": 2, "name": "Regular 0.4mm Nozzle", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_0.def.json b/resources/extruders/ord_extruder_0.def.json index 317ad70a3c..61317c4a17 100644 --- a/resources/extruders/ord_extruder_0.def.json +++ b/resources/extruders/ord_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_0", "version": 2, "name": "0", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_1.def.json b/resources/extruders/ord_extruder_1.def.json index 6e29ad2f2b..43bc11fa71 100644 --- a/resources/extruders/ord_extruder_1.def.json +++ b/resources/extruders/ord_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_1", "version": 2, "name": "1", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_2.def.json b/resources/extruders/ord_extruder_2.def.json index 849930c988..84bcbd5332 100644 --- a/resources/extruders/ord_extruder_2.def.json +++ b/resources/extruders/ord_extruder_2.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_2", "version": 2, "name": "2", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_3.def.json b/resources/extruders/ord_extruder_3.def.json index eb3676c14f..db81f82b78 100644 --- a/resources/extruders/ord_extruder_3.def.json +++ b/resources/extruders/ord_extruder_3.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_3", "version": 2, "name": "3", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_4.def.json b/resources/extruders/ord_extruder_4.def.json index 291e9e5501..2ca7609e06 100644 --- a/resources/extruders/ord_extruder_4.def.json +++ b/resources/extruders/ord_extruder_4.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_4", "version": 2, "name": "4", "inherits": "fdmextruder", diff --git a/resources/extruders/peopoly_moai_extruder_0.def.json b/resources/extruders/peopoly_moai_extruder_0.def.json index bbffd4ac4d..1acf5b499f 100644 --- a/resources/extruders/peopoly_moai_extruder_0.def.json +++ b/resources/extruders/peopoly_moai_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "peopoly_moai_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_play_extruder_0.def.json b/resources/extruders/printrbot_play_extruder_0.def.json index ef1284758b..682810c8d8 100644 --- a/resources/extruders/printrbot_play_extruder_0.def.json +++ b/resources/extruders/printrbot_play_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_play_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_play_heated_extruder_0.def.json b/resources/extruders/printrbot_play_heated_extruder_0.def.json index 0a3eeb3d06..72335e82d6 100644 --- a/resources/extruders/printrbot_play_heated_extruder_0.def.json +++ b/resources/extruders/printrbot_play_heated_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_play_heated_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_simple_extended_extruder_0.def.json b/resources/extruders/printrbot_simple_extended_extruder_0.def.json index 71c8863552..b50a142d2e 100644 --- a/resources/extruders/printrbot_simple_extended_extruder_0.def.json +++ b/resources/extruders/printrbot_simple_extended_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple_extended_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_simple_extruder_0.def.json b/resources/extruders/printrbot_simple_extruder_0.def.json index e97977e07e..4fa5d7fbf2 100644 --- a/resources/extruders/printrbot_simple_extruder_0.def.json +++ b/resources/extruders/printrbot_simple_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json b/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json index f002bb9cf5..a58195fdfb 100644 --- a/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json +++ b/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple_makers_kit_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/prusa_i3_extruder_0.def.json b/resources/extruders/prusa_i3_extruder_0.def.json index 11c52e062b..dbb01032b8 100644 --- a/resources/extruders/prusa_i3_extruder_0.def.json +++ b/resources/extruders/prusa_i3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/prusa_i3_mk2_extruder_0.def.json b/resources/extruders/prusa_i3_mk2_extruder_0.def.json index a56aae4300..e802687062 100644 --- a/resources/extruders/prusa_i3_mk2_extruder_0.def.json +++ b/resources/extruders/prusa_i3_mk2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3_mk2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/prusa_i3_mk3_extruder_0.def.json b/resources/extruders/prusa_i3_mk3_extruder_0.def.json new file mode 100644 index 0000000000..29156f0d70 --- /dev/null +++ b/resources/extruders/prusa_i3_mk3_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "prusa_i3_mk3", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} \ No newline at end of file diff --git a/resources/extruders/prusa_i3_xl_extruder_0.def.json b/resources/extruders/prusa_i3_xl_extruder_0.def.json index 5dc2ab3bc0..c4125b36ee 100644 --- a/resources/extruders/prusa_i3_xl_extruder_0.def.json +++ b/resources/extruders/prusa_i3_xl_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3_xl_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/punchtec_connect_xl_extruder_0.def.json b/resources/extruders/punchtec_connect_xl_extruder_0.def.json index 68c3d8c906..f286140167 100644 --- a/resources/extruders/punchtec_connect_xl_extruder_0.def.json +++ b/resources/extruders/punchtec_connect_xl_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "punchtec_connect_xl_extruder_0", "version": 2, "name": "0", "inherits": "fdmextruder", diff --git a/resources/extruders/punchtec_connect_xl_extruder_1.def.json b/resources/extruders/punchtec_connect_xl_extruder_1.def.json index a2e4b31714..47d28882cf 100644 --- a/resources/extruders/punchtec_connect_xl_extruder_1.def.json +++ b/resources/extruders/punchtec_connect_xl_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "punchtec_connect_xl_extruder_1", "version": 2, "name": "1", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_dual_extruder_0.def.json b/resources/extruders/raise3D_N2_dual_extruder_0.def.json index 48746969d3..9294a73933 100644 --- a/resources/extruders/raise3D_N2_dual_extruder_0.def.json +++ b/resources/extruders/raise3D_N2_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_dual_extruder_1.def.json b/resources/extruders/raise3D_N2_dual_extruder_1.def.json index 8ea6f95b16..e09cb6b9fc 100644 --- a/resources/extruders/raise3D_N2_dual_extruder_1.def.json +++ b/resources/extruders/raise3D_N2_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json b/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json index fc7531cf1b..d8821204f0 100644 --- a/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json +++ b/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_plus_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json b/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json index 83f949bb22..0a6ded63a3 100644 --- a/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json +++ b/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_plus_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_single_extruder_0.def.json b/resources/extruders/raise3D_N2_single_extruder_0.def.json index 08fedff99c..399d577110 100644 --- a/resources/extruders/raise3D_N2_single_extruder_0.def.json +++ b/resources/extruders/raise3D_N2_single_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_single_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/renkforce_rf100_extruder_0.def.json b/resources/extruders/renkforce_rf100_extruder_0.def.json index 6a7f883309..ff64e2f86a 100644 --- a/resources/extruders/renkforce_rf100_extruder_0.def.json +++ b/resources/extruders/renkforce_rf100_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "renkforce_rf100_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_3rdgen_extruder_0.def.json b/resources/extruders/rigid3d_3rdgen_extruder_0.def.json index e309086a72..edc87f695e 100644 --- a/resources/extruders/rigid3d_3rdgen_extruder_0.def.json +++ b/resources/extruders/rigid3d_3rdgen_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_3rdgen_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_extruder_0.def.json b/resources/extruders/rigid3d_extruder_0.def.json index e34987cd6e..eaac6b16a0 100644 --- a/resources/extruders/rigid3d_extruder_0.def.json +++ b/resources/extruders/rigid3d_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_hobby_extruder_0.def.json b/resources/extruders/rigid3d_hobby_extruder_0.def.json index 681aeecb43..68dd523af3 100644 --- a/resources/extruders/rigid3d_hobby_extruder_0.def.json +++ b/resources/extruders/rigid3d_hobby_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_hobby_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_mucit_extruder_0.def.json b/resources/extruders/rigid3d_mucit_extruder_0.def.json index af3f54e150..de72db7a33 100644 --- a/resources/extruders/rigid3d_mucit_extruder_0.def.json +++ b/resources/extruders/rigid3d_mucit_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_mucit_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_zero2_extruder_0.def.json b/resources/extruders/rigid3d_zero2_extruder_0.def.json index 30d1dbb3c4..051ce2384d 100644 --- a/resources/extruders/rigid3d_zero2_extruder_0.def.json +++ b/resources/extruders/rigid3d_zero2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_zero2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_zero_extruder_0.def.json b/resources/extruders/rigid3d_zero_extruder_0.def.json index 6c5ae10ddb..76a8fceaae 100644 --- a/resources/extruders/rigid3d_zero_extruder_0.def.json +++ b/resources/extruders/rigid3d_zero_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_zero_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigidbot_big_extruder_0.def.json b/resources/extruders/rigidbot_big_extruder_0.def.json index 2b07adaaaa..9ef72d5203 100644 --- a/resources/extruders/rigidbot_big_extruder_0.def.json +++ b/resources/extruders/rigidbot_big_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigidbot_big_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigidbot_extruder_0.def.json b/resources/extruders/rigidbot_extruder_0.def.json index 32ce3fc1c3..9155be0ff1 100644 --- a/resources/extruders/rigidbot_extruder_0.def.json +++ b/resources/extruders/rigidbot_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigidbot_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/robo_3d_r1_extruder_0.def.json b/resources/extruders/robo_3d_r1_extruder_0.def.json index 0872e91a11..60811842ac 100644 --- a/resources/extruders/robo_3d_r1_extruder_0.def.json +++ b/resources/extruders/robo_3d_r1_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "robo_3d_r1_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/seemecnc_artemis_extruder_0.def.json b/resources/extruders/seemecnc_artemis_extruder_0.def.json index a709a80cbf..a86e5eb2bd 100644 --- a/resources/extruders/seemecnc_artemis_extruder_0.def.json +++ b/resources/extruders/seemecnc_artemis_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "seemecnc_artemis_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/seemecnc_v32_extruder_0.def.json b/resources/extruders/seemecnc_v32_extruder_0.def.json index 5bd489e537..b223116be3 100644 --- a/resources/extruders/seemecnc_v32_extruder_0.def.json +++ b/resources/extruders/seemecnc_v32_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "seemecnc_v32_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/stereotech_start_extruder_0.def.json b/resources/extruders/stereotech_start_extruder_0.def.json index 8658944ebd..b0a1e91d1c 100644 --- a/resources/extruders/stereotech_start_extruder_0.def.json +++ b/resources/extruders/stereotech_start_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "stereotech_start_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/stereotech_ste320_1st.def.json b/resources/extruders/stereotech_ste320_1st.def.json index ffbf5bde2f..8110775d33 100644 --- a/resources/extruders/stereotech_ste320_1st.def.json +++ b/resources/extruders/stereotech_ste320_1st.def.json @@ -1,5 +1,4 @@ { - "id": "stereotech_ste320_1st", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/stereotech_ste320_2nd.def.json b/resources/extruders/stereotech_ste320_2nd.def.json index ae1b8f0f15..12a1479164 100644 --- a/resources/extruders/stereotech_ste320_2nd.def.json +++ b/resources/extruders/stereotech_ste320_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "stereotech_ste320_2nd", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/strateo3d_left_extruder.def.json b/resources/extruders/strateo3d_left_extruder.def.json index 1df8eb0ebb..096b265030 100644 --- a/resources/extruders/strateo3d_left_extruder.def.json +++ b/resources/extruders/strateo3d_left_extruder.def.json @@ -1,5 +1,4 @@ { - "id": "strateo3d_left_extruder", "version": 2, "name": "Left Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/strateo3d_right_extruder.def.json b/resources/extruders/strateo3d_right_extruder.def.json index ea59870329..24acdef8b5 100644 --- a/resources/extruders/strateo3d_right_extruder.def.json +++ b/resources/extruders/strateo3d_right_extruder.def.json @@ -1,5 +1,4 @@ { - "id": "strateo3d_right_extruder", "version": 2, "name": "Right Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json b/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json index 8436dc0a94..c63f740f11 100644 --- a/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json +++ b/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "structur3d_discov3ry1_complete_um2plus_extruder_0", "version": 2, "name": "Discov3ry Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/tam_extruder_0.def.json b/resources/extruders/tam_extruder_0.def.json index fc53efad3f..f487a6ff90 100644 --- a/resources/extruders/tam_extruder_0.def.json +++ b/resources/extruders/tam_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tam_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tevo_blackwidow_extruder_0.def.json b/resources/extruders/tevo_blackwidow_extruder_0.def.json index 125cf19c98..3450b36ac6 100644 --- a/resources/extruders/tevo_blackwidow_extruder_0.def.json +++ b/resources/extruders/tevo_blackwidow_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tevo_blackwidow_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tevo_tarantula_extruder_0.def.json b/resources/extruders/tevo_tarantula_extruder_0.def.json index bc43986814..a2ac48c06d 100644 --- a/resources/extruders/tevo_tarantula_extruder_0.def.json +++ b/resources/extruders/tevo_tarantula_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tevo_tarantula_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tevo_tornado_extruder_0.def.json b/resources/extruders/tevo_tornado_extruder_0.def.json index b47a757113..6c0c9f39b1 100644 --- a/resources/extruders/tevo_tornado_extruder_0.def.json +++ b/resources/extruders/tevo_tornado_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tevo_tornado_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON b/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON index 59e9311e50..282d9d2651 100644 --- a/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON +++ b/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON @@ -1,5 +1,4 @@ { - "id": "tizyx_evy_dual_extruder_0", "version": 2, "name": "Classic Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON b/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON index cf5dc76caa..69e4a60952 100644 --- a/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON +++ b/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON @@ -1,5 +1,4 @@ { - "id": "tizyx_evy_dual_extruder_1", "version": 2, "name": "Direct Drive", "inherits": "fdmextruder", diff --git a/resources/extruders/tizyx_evy_extruder_0.def.JSON b/resources/extruders/tizyx_evy_extruder_0.def.JSON index bd3c4c9792..4f93648491 100644 --- a/resources/extruders/tizyx_evy_extruder_0.def.JSON +++ b/resources/extruders/tizyx_evy_extruder_0.def.JSON @@ -1,5 +1,4 @@ { - "id": "tizyx_evy_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tizyx_k25_extruder_0.def.json b/resources/extruders/tizyx_k25_extruder_0.def.json index 409198d77c..626fedf434 100644 --- a/resources/extruders/tizyx_k25_extruder_0.def.json +++ b/resources/extruders/tizyx_k25_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tizyx_k25_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json b/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json index b04ca0dcbf..749a5ed77d 100644 --- a/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json +++ b/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ubuild-3d_mr_bot_280_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_extended_extruder_0.def.json b/resources/extruders/ultimaker2_extended_extruder_0.def.json index 6387ec72ed..cc7306a393 100644 --- a/resources/extruders/ultimaker2_extended_extruder_0.def.json +++ b/resources/extruders/ultimaker2_extended_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extended_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json b/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json index 39fc665ff2..337c120097 100644 --- a/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json +++ b/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extended_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_extruder_0.def.json b/resources/extruders/ultimaker2_extruder_0.def.json index 2daf57c73f..64ac8698f1 100644 --- a/resources/extruders/ultimaker2_extruder_0.def.json +++ b/resources/extruders/ultimaker2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_go_extruder_0.def.json b/resources/extruders/ultimaker2_go_extruder_0.def.json index 4c258e237e..5ddcfbd551 100644 --- a/resources/extruders/ultimaker2_go_extruder_0.def.json +++ b/resources/extruders/ultimaker2_go_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_go_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_plus_extruder_0.def.json b/resources/extruders/ultimaker2_plus_extruder_0.def.json index 13ab0c59ea..abf36c0b08 100644 --- a/resources/extruders/ultimaker2_plus_extruder_0.def.json +++ b/resources/extruders/ultimaker2_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extended_extruder_left.def.json b/resources/extruders/ultimaker3_extended_extruder_left.def.json index 2d81424bc6..fbc49a1f32 100644 --- a/resources/extruders/ultimaker3_extended_extruder_left.def.json +++ b/resources/extruders/ultimaker3_extended_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extended_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extended_extruder_right.def.json b/resources/extruders/ultimaker3_extended_extruder_right.def.json index 7cdd5876c1..fbe6bcc878 100644 --- a/resources/extruders/ultimaker3_extended_extruder_right.def.json +++ b/resources/extruders/ultimaker3_extended_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extended_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extruder_left.def.json b/resources/extruders/ultimaker3_extruder_left.def.json index 9f5ed34692..b18e2decfa 100644 --- a/resources/extruders/ultimaker3_extruder_left.def.json +++ b/resources/extruders/ultimaker3_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extruder_right.def.json b/resources/extruders/ultimaker3_extruder_right.def.json index 7298a552b7..4753fde489 100644 --- a/resources/extruders/ultimaker3_extruder_right.def.json +++ b/resources/extruders/ultimaker3_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_dual_1st.def.json b/resources/extruders/ultimaker_original_dual_1st.def.json index 3d837fc989..acc8168d94 100644 --- a/resources/extruders/ultimaker_original_dual_1st.def.json +++ b/resources/extruders/ultimaker_original_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_dual_1st", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_dual_2nd.def.json b/resources/extruders/ultimaker_original_dual_2nd.def.json index 80cc17c58d..7907571e66 100644 --- a/resources/extruders/ultimaker_original_dual_2nd.def.json +++ b/resources/extruders/ultimaker_original_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_dual_2nd", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_extruder_0.def.json b/resources/extruders/ultimaker_original_extruder_0.def.json index 4aab693212..30df96df58 100644 --- a/resources/extruders/ultimaker_original_extruder_0.def.json +++ b/resources/extruders/ultimaker_original_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_plus_extruder_0.def.json b/resources/extruders/ultimaker_original_plus_extruder_0.def.json index 91d0751861..fec40e93a9 100644 --- a/resources/extruders/ultimaker_original_plus_extruder_0.def.json +++ b/resources/extruders/ultimaker_original_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_s3_extruder_left.def.json b/resources/extruders/ultimaker_s3_extruder_left.def.json index 61d3149e0b..7af6f7d0dc 100644 --- a/resources/extruders/ultimaker_s3_extruder_left.def.json +++ b/resources/extruders/ultimaker_s3_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s3_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_s3_extruder_right.def.json b/resources/extruders/ultimaker_s3_extruder_right.def.json index efcb6ae06a..6771e1c0a8 100644 --- a/resources/extruders/ultimaker_s3_extruder_right.def.json +++ b/resources/extruders/ultimaker_s3_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s3_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_s5_extruder_left.def.json b/resources/extruders/ultimaker_s5_extruder_left.def.json index 275f60bb31..24de85e9cc 100644 --- a/resources/extruders/ultimaker_s5_extruder_left.def.json +++ b/resources/extruders/ultimaker_s5_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s5_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_s5_extruder_right.def.json b/resources/extruders/ultimaker_s5_extruder_right.def.json index 92e08f5cc5..1e0ac3eace 100644 --- a/resources/extruders/ultimaker_s5_extruder_right.def.json +++ b/resources/extruders/ultimaker_s5_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s5_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/uni_print_3d_extruder_0.def.json b/resources/extruders/uni_print_3d_extruder_0.def.json index d0711fd458..747fb9e020 100644 --- a/resources/extruders/uni_print_3d_extruder_0.def.json +++ b/resources/extruders/uni_print_3d_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "uni_print_3d_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/uniqbot_one_extruder_0.def.json b/resources/extruders/uniqbot_one_extruder_0.def.json index 65436ee789..0a8982559d 100644 --- a/resources/extruders/uniqbot_one_extruder_0.def.json +++ b/resources/extruders/uniqbot_one_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "uniqbot_one_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_delta_k8800_extruder_0.def.json b/resources/extruders/vertex_delta_k8800_extruder_0.def.json index 5e09046faf..05a010222f 100644 --- a/resources/extruders/vertex_delta_k8800_extruder_0.def.json +++ b/resources/extruders/vertex_delta_k8800_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_delta_k8800_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_k8400_dual_1st.def.json b/resources/extruders/vertex_k8400_dual_1st.def.json index 86fb2266ba..947cfbc7d8 100644 --- a/resources/extruders/vertex_k8400_dual_1st.def.json +++ b/resources/extruders/vertex_k8400_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400_dual_1st", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_k8400_dual_2nd.def.json b/resources/extruders/vertex_k8400_dual_2nd.def.json index 306b2dcb7a..e606e46337 100644 --- a/resources/extruders/vertex_k8400_dual_2nd.def.json +++ b/resources/extruders/vertex_k8400_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400_dual_2nd", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_k8400_extruder_0.def.json b/resources/extruders/vertex_k8400_extruder_0.def.json index c03453b519..e0304f57bd 100644 --- a/resources/extruders/vertex_k8400_extruder_0.def.json +++ b/resources/extruders/vertex_k8400_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_d4s_extruder_0.def.json b/resources/extruders/wanhao_d4s_extruder_0.def.json index 9a750e072c..bd6023faf4 100644 --- a/resources/extruders/wanhao_d4s_extruder_0.def.json +++ b/resources/extruders/wanhao_d4s_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d4s_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_d6_extruder_0.def.json b/resources/extruders/wanhao_d6_extruder_0.def.json index a8a3bf15d3..093546eabf 100644 --- a/resources/extruders/wanhao_d6_extruder_0.def.json +++ b/resources/extruders/wanhao_d6_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d6_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_d6_plus_extruder_0.def.json b/resources/extruders/wanhao_d6_plus_extruder_0.def.json index b2b1e6ab05..acc5b66072 100644 --- a/resources/extruders/wanhao_d6_plus_extruder_0.def.json +++ b/resources/extruders/wanhao_d6_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d6_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_d9_extruder_0.def.json b/resources/extruders/wanhao_d9_extruder_0.def.json index 76d501e5a2..40fcf422f5 100644 --- a/resources/extruders/wanhao_d9_extruder_0.def.json +++ b/resources/extruders/wanhao_d9_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d9_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_duplicator5S_extruder_0.def.json b/resources/extruders/wanhao_duplicator5S_extruder_0.def.json index 74f47158a3..7274d5117e 100644 --- a/resources/extruders/wanhao_duplicator5S_extruder_0.def.json +++ b/resources/extruders/wanhao_duplicator5S_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_duplicator5S_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json b/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json index 8c91de4685..3479c94e35 100644 --- a/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json +++ b/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_duplicator5Smini_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_i3_extruder_0.def.json b/resources/extruders/wanhao_i3_extruder_0.def.json index 7d881079c4..387a456ff2 100644 --- a/resources/extruders/wanhao_i3_extruder_0.def.json +++ b/resources/extruders/wanhao_i3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_i3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_i3mini_extruder_0.def.json b/resources/extruders/wanhao_i3mini_extruder_0.def.json index c5abbd175e..2d52f0d126 100644 --- a/resources/extruders/wanhao_i3mini_extruder_0.def.json +++ b/resources/extruders/wanhao_i3mini_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_i3mini_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_i3plus_extruder_0.def.json b/resources/extruders/wanhao_i3plus_extruder_0.def.json index 0dae64ce63..103e3b9335 100644 --- a/resources/extruders/wanhao_i3plus_extruder_0.def.json +++ b/resources/extruders/wanhao_i3plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_i3plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/z-bolt_extruder_0.def.json b/resources/extruders/z-bolt_extruder_0.def.json index 70e9f6177c..04c8d10cbb 100644 --- a/resources/extruders/z-bolt_extruder_0.def.json +++ b/resources/extruders/z-bolt_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "z-bolt_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/zone3d_printer_extruder_0.def.json b/resources/extruders/zone3d_printer_extruder_0.def.json index ca024dd5c4..fb8f40d3e2 100644 --- a/resources/extruders/zone3d_printer_extruder_0.def.json +++ b/resources/extruders/zone3d_printer_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "zone3d_printer_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/zyyx_agile_extruder_0.def.json b/resources/extruders/zyyx_agile_extruder_0.def.json index edda9b3097..c01ffb59f3 100644 --- a/resources/extruders/zyyx_agile_extruder_0.def.json +++ b/resources/extruders/zyyx_agile_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "zyyx_agile_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/meshes/Original_Prusa_i3_MK3S_MK3_platform.stl b/resources/meshes/Original_Prusa_i3_MK3S_MK3_platform.stl new file mode 100644 index 0000000000..3b38a7daa2 Binary files /dev/null and b/resources/meshes/Original_Prusa_i3_MK3S_MK3_platform.stl differ diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 626190063b..e3e5062049 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -94,6 +94,8 @@ UM.PreferencesPage zoomToMouseCheckbox.checked = boolCheck(UM.Preferences.getValue("view/zoom_to_mouse")) UM.Preferences.resetPreference("view/top_layer_count"); topLayerCountCheckbox.checked = boolCheck(UM.Preferences.getValue("view/top_layer_count")) + UM.Preferences.resetPreference("general/restore_window_geometry") + restoreWindowPositionCheckbox.checked = boolCheck(UM.Preferences.getValue("general/restore_window_geometry")) UM.Preferences.resetPreference("general/camera_perspective_mode") var defaultCameraMode = UM.Preferences.getValue("general/camera_perspective_mode") @@ -464,6 +466,21 @@ UM.PreferencesPage } } + UM.TooltipArea + { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip", "Should Cura open at the location it was closed?") + + CheckBox + { + id: restoreWindowPositionCheckbox + text: catalog.i18nc("@option:check", "Restore window position on start") + checked: boolCheck(UM.Preferences.getValue("general/restore_window_geometry")) + onCheckedChanged: UM.Preferences.setValue("general/restore_window_geometry", checked) + } + } + UM.TooltipArea { width: childrenRect.width diff --git a/resources/qml/Preferences/Materials/MaterialsBrandSection.qml b/resources/qml/Preferences/Materials/MaterialsBrandSection.qml index 487c87f07c..5dd68c426f 100644 --- a/resources/qml/Preferences/Materials/MaterialsBrandSection.qml +++ b/resources/qml/Preferences/Materials/MaterialsBrandSection.qml @@ -10,6 +10,8 @@ import QtQuick.Dialogs 1.2 import UM 1.2 as UM import Cura 1.0 as Cura +// An expandable list of materials. Includes both the header (this file) and the items (brandMaterialList) + Item { id: brand_section @@ -50,9 +52,8 @@ Item verticalAlignment: Text.AlignVCenter leftPadding: (UM.Theme.getSize("default_margin").width / 2) | 0 } - Button + Item { - text: "" implicitWidth: UM.Theme.getSize("favorites_button").width implicitHeight: UM.Theme.getSize("favorites_button").height UM.RecolorImage @@ -67,10 +68,6 @@ Item color: "black" source: brand_section.expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") } - style: ButtonStyle - { - background: Item { } - } } } MouseArea @@ -99,7 +96,7 @@ Item id: brandMaterialList anchors.top: brand_header.bottom width: parent.width - anchors.left: parent.left + anchors.left: parent ? parent.left : undefined height: brand_section.expanded ? childrenRect.height : 0 visible: brand_section.expanded @@ -109,7 +106,7 @@ Item delegate: Loader { id: loader - width: parent.width + width: parent ? parent.width : 0 property var element: model sourceComponent: hasMaterialTypes ? materialsTypeSection : materialSlot } diff --git a/resources/qml/Preferences/Materials/MaterialsSlot.qml b/resources/qml/Preferences/Materials/MaterialsSlot.qml index c6691460cf..81bb8759ff 100644 --- a/resources/qml/Preferences/Materials/MaterialsSlot.qml +++ b/resources/qml/Preferences/Materials/MaterialsSlot.qml @@ -10,6 +10,8 @@ import QtQuick.Dialogs 1.2 import UM 1.2 as UM import Cura 1.0 as Cura +// A single material row, typically used in a MaterialsBrandSection + Rectangle { id: materialSlot diff --git a/resources/qml/Preferences/Materials/MaterialsTypeSection.qml b/resources/qml/Preferences/Materials/MaterialsTypeSection.qml index 3c36e12651..07630a83b4 100644 --- a/resources/qml/Preferences/Materials/MaterialsTypeSection.qml +++ b/resources/qml/Preferences/Materials/MaterialsTypeSection.qml @@ -20,8 +20,8 @@ Item property var expanded: materialList.expandedTypes.indexOf(materialBrand + "_" + materialName) > -1 property var colorsModel: materialType != null ? materialType.colors: null height: childrenRect.height - width: parent.width - anchors.left: parent.left + width: parent ? parent.width :undefined + anchors.left: parent ? parent.left : undefined Rectangle { id: material_type_header_background @@ -55,7 +55,7 @@ Item leftPadding: UM.Theme.getSize("default_margin").width anchors { - left: parent.left + left: parent ? parent.left : undefined } Label { @@ -65,33 +65,25 @@ Item id: material_type_name verticalAlignment: Text.AlignVCenter } - Button + Item // this one causes lots of warnings { - text: "" implicitWidth: UM.Theme.getSize("favorites_button").width implicitHeight: UM.Theme.getSize("favorites_button").height UM.RecolorImage { anchors { - verticalCenter: parent.verticalCenter - horizontalCenter: parent.horizontalCenter + verticalCenter: parent ? parent.verticalCenter : undefined + horizontalCenter: parent ? parent.horizontalCenter : undefined } width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height color: "black" source: material_type_section.expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") } - style: ButtonStyle - { - background: Rectangle - { - anchors.fill: parent - color: "transparent" - } - } + } } - MouseArea + MouseArea // causes lots of warnings { anchors.fill: material_type_header onPressed: diff --git a/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml b/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml index c9686a1519..c5a725285c 100644 --- a/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml +++ b/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml @@ -70,12 +70,31 @@ Popup { id: headerLabel text: model.name + color: UM.Theme.getColor("text_inactive") renderType: Text.NativeRendering + width: parent.width height: visible ? contentHeight: 0 - enabled: false visible: qualitiesList.visibleChildren.length > 0 anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width + + MouseArea // tooltip hover area + { + anchors.fill: parent + hoverEnabled: true + enabled: model.description !== undefined + acceptedButtons: Qt.NoButton // react to hover only, don't steal clicks + + onEntered: + { + base.showTooltip( + headerLabel, + Qt.point(- UM.Theme.getSize("default_margin").width, 0), + model.description + ) + } + onExited: base.hideTooltip() + } } Column diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml index d1f7dd7de2..3c7caad470 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml @@ -55,7 +55,7 @@ Item } UM.SimpleButton { - id: customisedSettings + id: resetToDefaultQualityButton visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.MachineManager.hasCustomQuality height: visible ? UM.Theme.getSize("print_setup_icon").height : 0 @@ -163,6 +163,24 @@ Item isCheckedFunction: checkedFunction } + + MouseArea // tooltip hover area + { + anchors.fill: parent + hoverEnabled: true + enabled: model.description !== undefined + acceptedButtons: Qt.NoButton // react to hover only, don't steal clicks + + onEntered: + { + base.showTooltip( + intentCategoryLabel, + Qt.point(-(intentCategoryLabel.x - qualityRow.x) - UM.Theme.getSize("thick_margin").width, 0), + model.description + ) + } + onExited: base.hideTooltip() + } } } diff --git a/resources/quality/key3d/key3d_tyro_best.inst.cfg b/resources/quality/key3d/key3d_tyro_best.inst.cfg new file mode 100644 index 0000000000..0b9289b042 --- /dev/null +++ b/resources/quality/key3d/key3d_tyro_best.inst.cfg @@ -0,0 +1,128 @@ +[general] +version = 4 +name = Best Quality +definition = key3d_tyro + +[metadata] +setting_version = 10 +type = quality +quality_type = best +weight = 1 +global_quality = True + +[values] +layer_height = 0.08 +layer_height_0 = 0.24 +line_width = 0.4 +wall_line_width_0 = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 20 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 0 +material_bed_temperature = 0 +build_volume_temperature = 0 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 30 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.24 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.2 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/key3d/key3d_tyro_fast.inst.cfg b/resources/quality/key3d/key3d_tyro_fast.inst.cfg new file mode 100644 index 0000000000..7ab9776b4e --- /dev/null +++ b/resources/quality/key3d/key3d_tyro_fast.inst.cfg @@ -0,0 +1,127 @@ +[general] +version = 4 +name = Fast Quality +definition = key3d_tyro + +[metadata] +setting_version = 10 +type = quality +quality_type = fast +weight = -1 +global_quality = True + +[values] +layer_height = 0.24 +layer_height_0 = 0.24 +line_width = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 15 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 0 +material_bed_temperature = 0 +build_volume_temperature = 0 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 60 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.48 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =15 if support_enable else 0 if support_tree_enable else 15 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/key3d/key3d_tyro_normal.inst.cfg b/resources/quality/key3d/key3d_tyro_normal.inst.cfg new file mode 100644 index 0000000000..7ed3791edc --- /dev/null +++ b/resources/quality/key3d/key3d_tyro_normal.inst.cfg @@ -0,0 +1,127 @@ +[general] +version = 4 +name = Normal Quality +definition = key3d_tyro + +[metadata] +setting_version = 10 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.16 +layer_height_0 = 0.24 +line_width = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 20 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 0 +material_bed_temperature = 0 +build_volume_temperature = 0 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 50 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.32 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.21 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index ad0d2993d2..2b9ad362fc 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -372,7 +372,6 @@ coasting_enable coasting_volume coasting_min_volume coasting_speed -skin_alternate_rotation cross_infill_pocket_size spaghetti_infill_enabled spaghetti_infill_stepped diff --git a/tests/Machines/TestVariantNode.py b/tests/Machines/TestVariantNode.py index 4e58069be3..bc860058a1 100644 --- a/tests/Machines/TestVariantNode.py +++ b/tests/Machines/TestVariantNode.py @@ -16,7 +16,7 @@ instance_container_metadata_dict = {"fdmprinter": {"no_variant": [{"base_file": material_node_added_test_data = [({"type": "Not a material"}, ["material_1", "material_2"]), # Wrong type ({"type": "material", "base_file": "material_3"}, ["material_1", "material_2"]), # material_3 is on the "NOPE" list. ({"type": "material", "base_file": "material_4", "definition": "machine_3"}, ["material_1", "material_2"]), # Wrong machine - ({"type": "material", "base_file": "material_4", "definition": "machine_1"}, ["material_1", "material_2"]), # No variant + ({"type": "material", "base_file": "material_4", "definition": "machine_1"}, ["material_1", "material_2", "material_4"]), # No variant ({"type": "material", "base_file": "material_4", "definition": "machine_1", "variant_name": "Variant Three"}, ["material_1", "material_2"]), # Wrong variant ({"type": "material", "base_file": "material_4", "definition": "machine_1", "variant_name": "Variant One"}, ["material_1", "material_2", "material_4"]) ] diff --git a/tests/Settings/TestDefinitionContainer.py b/tests/Settings/TestDefinitionContainer.py index 73d4e89d20..6e502280cd 100644 --- a/tests/Settings/TestDefinitionContainer.py +++ b/tests/Settings/TestDefinitionContainer.py @@ -1,23 +1,22 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import json # To check files for unnecessarily overridden properties. +import os +import os.path import pytest #This module contains automated tests. +from typing import Any, Dict +import uuid import UM.Settings.ContainerRegistry #To create empty instance containers. import UM.Settings.ContainerStack #To set the container registry the container stacks use. from UM.Settings.DefinitionContainer import DefinitionContainer #To check against the class of DefinitionContainer. - - -import os -import os.path -import uuid - from UM.Resources import Resources Resources.addSearchPath(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "resources"))) -machine_filepaths = os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions")) +machine_filepaths = sorted(os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions"))) all_meshes = os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "meshes")) all_images = os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "images")) @@ -51,4 +50,90 @@ def assertIsDefinitionValid(definition_container, path, file_name): assert metadata[0]["platform"] in all_meshes if "platform_texture" in metadata[0]: - assert metadata[0]["platform_texture"] in all_images \ No newline at end of file + assert metadata[0]["platform_texture"] in all_images + +## Tests whether setting values are not being hidden by parent containers. +# +# When a definition container defines a "default_value" but inherits from a +# definition that defines a "value", the "default_value" is ineffective. This +# test fails on those things. +@pytest.mark.parametrize("file_name", machine_filepaths) +def test_validateOverridingDefaultValue(file_name: str): + definition_path = os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions", file_name) + with open(definition_path, encoding = "utf-8") as f: + doc = json.load(f) + + if "inherits" not in doc: + return # We only want to check for documents where the inheritance overrides the children. If there's no inheritance, this can't happen so it's fine. + if "overrides" not in doc: + return # No settings are being overridden. No need to check anything. + parent_settings = getInheritedSettings(doc["inherits"]) + for key, val in doc["overrides"].items(): + if "value" in parent_settings[key]: + assert "default_value" not in val, "Unnecessary default_value for {key} in {file_name}".format(key = key, file_name = file_name) # If there is a value in the parent settings, then the default_value is not effective. + +## Get all settings and their properties from a definition we're inheriting +# from. +# \param definition_id The definition we're inheriting from. +# \return A dictionary of settings by key. Each setting is a dictionary of +# properties. +def getInheritedSettings(definition_id: str) -> Dict[str, Any]: + definition_path = os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions", definition_id + ".def.json") + with open(definition_path, encoding = "utf-8") as f: + doc = json.load(f) + result = {} + + if "inherits" in doc: # Recursive inheritance. + result.update(getInheritedSettings(doc["inherits"])) + if "settings" in doc: + result.update(flattenSettings(doc["settings"])) + if "overrides" in doc: + result = merge_dicts(result, doc["overrides"]) + + return result + +## Put all settings in the main dictionary rather than in children dicts. +# \param settings Nested settings. The keys are the setting IDs. The values +# are dictionaries of properties per setting, including the "children" +# property. +# \return A dictionary of settings by key. Each setting is a dictionary of +# properties. +def flattenSettings(settings: Dict[str, Any]) -> Dict[str, Any]: + result = {} + for entry, contents in settings.items(): + if "children" in contents: + result.update(flattenSettings(contents["children"])) + del contents["children"] + result[entry] = contents + return result + +## Make one dictionary override the other. Nested dictionaries override each +# other in the same way. +# \param base A dictionary of settings that will get overridden by the other. +# \param overrides A dictionary of settings that will override the other. +# \return Combined setting data. +def merge_dicts(base: Dict[str, Any], overrides: Dict[str, Any]) -> Dict[str, Any]: + result = {} + result.update(base) + for key, val in overrides.items(): + if key not in result: + result[key] = val + continue + + if isinstance(result[key], dict) and isinstance(val, dict): + result[key] = merge_dicts(result[key], val) + else: + result[key] = val + return result + +## Verifies that definition contains don't have an ID field. +# +# ID fields are legacy. They should not be used any more. This is legacy that +# people don't seem to be able to get used to. +@pytest.mark.parametrize("file_name", machine_filepaths) +def test_noId(file_name): + definition_path = os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions", file_name) + with open(definition_path, encoding = "utf-8") as f: + doc = json.load(f) + + assert "id" not in doc, "Definitions should not have an ID field." \ No newline at end of file diff --git a/tests/TestMaterialManager.py b/tests/TestMaterialManager.py deleted file mode 100644 index d87ab3a63e..0000000000 --- a/tests/TestMaterialManager.py +++ /dev/null @@ -1,187 +0,0 @@ -from unittest.mock import MagicMock, patch -import pytest -from cura.Machines.MaterialManager import MaterialManager - - -mocked_registry = MagicMock() -material_1 = {"id": "test", "GUID":"TEST!", "base_file": "base_material", "definition": "fdmmachine", "approximate_diameter": "3", "brand": "generic", "material": "pla"} -material_2 = {"id": "base_material", "GUID": "TEST2!", "base_file": "test", "definition": "fdmmachine", "approximate_diameter": "3", "material": "pla"} -mocked_registry.findContainersMetadata = MagicMock(return_value = [material_1, material_2]) - - -mocked_definition = MagicMock() -mocked_definition.getId = MagicMock(return_value = "fdmmachine") -mocked_definition.getMetaDataEntry = MagicMock(return_value = []) - -# These tests are outdated -pytestmark = pytest.mark.skip - -def test_initialize(application): - # Just test if the simple loading works - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - # Double check that we actually got some material nodes - assert manager.getMaterialGroup("base_material").name == "base_material" - assert manager.getMaterialGroup("test").name == "test" - - -def test_getMaterialGroupListByGUID(application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - - assert manager.getMaterialGroupListByGUID("TEST!")[0].name == "test" - assert manager.getMaterialGroupListByGUID("TEST2!")[0].name == "base_material" - - -def test_getRootMaterialIDforDiameter(application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - - assert manager.getRootMaterialIDForDiameter("base_material", "3") == "base_material" - - -def test_getMaterialNodeByTypeMachineHasNoMaterials(application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - - mocked_stack = MagicMock() - assert manager.getMaterialNodeByType(mocked_stack, "0", "nozzle", "", "") is None - - -def test_getMaterialNodeByTypeMachineHasMaterialsButNoMaterialFound(application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - - mocked_stack = MagicMock() - mocked_stack.definition.getMetaDataEntry = MagicMock(return_value = True) # For the "has_materials" metadata - - assert manager.getMaterialNodeByType(mocked_stack, "0", "nozzle", "", "") is None - - -def test_getMaterialNodeByTypeMachineHasMaterialsAndMaterialExists(application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - mocked_result = MagicMock() - manager.getMaterialNode = MagicMock(return_value = mocked_result) - mocked_stack = MagicMock() - mocked_stack.definition.getMetaDataEntry = MagicMock(return_value = True) # For the "has_materials" metadata - - assert manager.getMaterialNodeByType(mocked_stack, "0", "nozzle", "", "TEST!") is mocked_result - - -def test_getAllMaterialGroups(application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - - material_groups = manager.getAllMaterialGroups() - - assert "base_material" in material_groups - assert "test" in material_groups - assert material_groups["base_material"].name == "base_material" - assert material_groups["test"].name == "test" - - -class TestAvailableMaterials: - def test_happy(self, application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - - available_materials = manager.getAvailableMaterials(mocked_definition, None, None, 3) - - assert "base_material" in available_materials - assert "test" in available_materials - - def test_wrongDiameter(self, application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - - available_materials = manager.getAvailableMaterials(mocked_definition, None, None, 200) - assert available_materials == {} # Nothing found. - - def test_excludedMaterials(self, application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - with patch.object(mocked_definition, "getMetaDataEntry", MagicMock(return_value = ["test"])): - available_materials = manager.getAvailableMaterials(mocked_definition, None, None, 3) - assert "base_material" in available_materials - assert "test" not in available_materials - - -class Test_getFallbackMaterialIdByMaterialType: - def test_happyFlow(self, application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - - assert manager.getFallbackMaterialIdByMaterialType("pla") == "test" - - def test_unknownMaterial(self, application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - assert manager.getFallbackMaterialIdByMaterialType("OMGZOMG") is None - - -def test_getMaterialNode(application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager._updateMaps() - - assert manager.getMaterialNode("fdmmachine", None, None, 3, "base_material").container_id == "test" - - -def test_getAvailableMaterialsForMachineExtruder(application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - - mocked_machine = MagicMock() - mocked_machine.getBuildplateName = MagicMock(return_value = "build_plate") - mocked_machine.definition = mocked_definition - mocked_extruder_stack = MagicMock() - mocked_extruder_stack.variant.getId = MagicMock(return_value = "test") - mocked_extruder_stack.getApproximateMaterialDiameter = MagicMock(return_value = 2.85) - - available_materials = manager.getAvailableMaterialsForMachineExtruder(mocked_machine, mocked_extruder_stack) - assert "base_material" in available_materials - assert "test" in available_materials - - -class TestFavorites: - def test_addFavorite(self, application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.materialsUpdated = MagicMock() - manager.addFavorite("blarg") - assert manager.getFavorites() == {"blarg"} - - application.getPreferences().setValue.assert_called_once_with("cura/favorite_materials", "blarg") - manager.materialsUpdated.emit.assert_called_once_with() - - def test_removeNotExistingFavorite(self, application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.materialsUpdated = MagicMock() - manager.removeFavorite("blarg") - manager.materialsUpdated.emit.assert_not_called() - - def test_removeExistingFavorite(self, application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.materialsUpdated = MagicMock() - manager.addFavorite("blarg") - - manager.removeFavorite("blarg") - assert manager.materialsUpdated.emit.call_count == 2 - application.getPreferences().setValue.assert_called_with("cura/favorite_materials", "") - assert manager.getFavorites() == set() \ No newline at end of file diff --git a/tests/TestQualityManager.py b/tests/TestQualityManager.py deleted file mode 100644 index fb96f4476b..0000000000 --- a/tests/TestQualityManager.py +++ /dev/null @@ -1,129 +0,0 @@ -from unittest.mock import MagicMock, patch - -import pytest - -from cura.Machines.QualityChangesGroup import QualityChangesGroup -from cura.Machines.QualityManager import QualityManager - -mocked_stack = MagicMock() -mocked_extruder = MagicMock() - -mocked_material = MagicMock() -mocked_material.getMetaDataEntry = MagicMock(return_value = "base_material") - -mocked_extruder.material = mocked_material -mocked_stack.extruders = {"0": mocked_extruder} - -# These tests are outdated -pytestmark = pytest.mark.skip - -@pytest.fixture() -def material_manager(): - result = MagicMock() - result.getRootMaterialIDWithoutDiameter = MagicMock(return_value = "base_material") - return result - -@pytest.fixture() -def container_registry(): - result = MagicMock() - mocked_metadata = [{"id": "test", "definition": "fdmprinter", "quality_type": "normal", "name": "test_name", "global_quality": True, "type": "quality"}, - {"id": "test_material", "definition": "fdmprinter", "quality_type": "normal", "name": "test_name_material", "material": "base_material", "type": "quality"}, - {"id": "quality_changes_id", "definition": "fdmprinter", "type": "quality_changes", "quality_type": "amazing!", "name": "herp"}] - result.findContainersMetadata = MagicMock(return_value = mocked_metadata) - - result.uniqueName = MagicMock(return_value = "uniqueName") - return result - - -@pytest.fixture() -def quality_mocked_application(material_manager, container_registry): - result = MagicMock() - result.getMaterialManager = MagicMock(return_value=material_manager) - result.getContainerRegistry = MagicMock(return_value=container_registry) - return result - - -def test_getQualityGroups(quality_mocked_application): - manager = QualityManager(quality_mocked_application) - manager.initialize() - - assert "normal" in manager.getQualityGroups(mocked_stack) - - -def test_getQualityChangesGroup(quality_mocked_application): - manager = QualityManager(quality_mocked_application) - manager.initialize() - - assert "herp" in [qcg.name for qcg in manager.getQualityChangesGroups(mocked_stack)] - - -@pytest.mark.skip("Doesn't work on remote") -def test_getDefaultQualityType(quality_mocked_application): - manager = QualityManager(quality_mocked_application) - manager.initialize() - mocked_stack = MagicMock() - mocked_stack.definition.getMetaDataEntry = MagicMock(return_value = "normal") - assert manager.getDefaultQualityType(mocked_stack).quality_type == "normal" - - -def test_createQualityChanges(quality_mocked_application): - manager = QualityManager(quality_mocked_application) - mocked_quality_changes = MagicMock() - manager._createQualityChanges = MagicMock(return_value = mocked_quality_changes) - manager.initialize() - container_manager = MagicMock() - - manager._container_registry.addContainer = MagicMock() # Side effect we want to check. - with patch("cura.Settings.ContainerManager.ContainerManager.getInstance", container_manager): - manager.createQualityChanges("derp") - assert manager._container_registry.addContainer.called_once_with(mocked_quality_changes) - - -def test_renameQualityChangesGroup(quality_mocked_application): - manager = QualityManager(quality_mocked_application) - manager.initialize() - - mocked_container = MagicMock() - - quality_changes_group = QualityChangesGroup("zomg", "beep") - quality_changes_group.getAllNodes = MagicMock(return_value = [mocked_container]) - - # We need to check for "uniqueName" instead of "NEWRANDOMNAMEYAY" because the mocked registry always returns - # "uniqueName" when attempting to generate an unique name. - assert manager.renameQualityChangesGroup(quality_changes_group, "NEWRANDOMNAMEYAY") == "uniqueName" - assert mocked_container.setName.called_once_with("uniqueName") - - -def test_duplicateQualityChangesQualityOnly(quality_mocked_application): - manager = QualityManager(quality_mocked_application) - manager.initialize() - mocked_quality = MagicMock() - quality_group = MagicMock() - quality_group.getAllNodes = MagicMock(return_value = mocked_quality) - mocked_quality_changes = MagicMock() - - # Isolate what we want to test (in this case, we're not interested if createQualityChanges does it's job!) - manager._createQualityChanges = MagicMock(return_value = mocked_quality_changes) - manager._container_registry.addContainer = MagicMock() # Side effect we want to check. - - manager.duplicateQualityChanges("zomg", {"quality_group": quality_group, "quality_changes_group": None}) - assert manager._container_registry.addContainer.called_once_with(mocked_quality_changes) - - -def test_duplicateQualityChanges(quality_mocked_application): - manager = QualityManager(quality_mocked_application) - manager.initialize() - mocked_quality = MagicMock() - quality_group = MagicMock() - quality_group.getAllNodes = MagicMock(return_value = mocked_quality) - quality_changes_group = MagicMock() - mocked_quality_changes = MagicMock() - quality_changes_group.getAllNodes = MagicMock(return_value = [mocked_quality_changes]) - mocked_quality_changes.duplicate = MagicMock(return_value = mocked_quality_changes) - - manager._container_registry.addContainer = MagicMock() # Side effect we want to check. - - manager.duplicateQualityChanges("zomg", {"intent_category": "default", - "quality_group": quality_group, - "quality_changes_group": quality_changes_group}) - assert manager._container_registry.addContainer.called_once_with(mocked_quality_changes)