From e92aaca7b6dbf9abfa80ef723940a7ecaf24e290 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 12 Apr 2017 23:03:58 +0200 Subject: [PATCH] Filter materials by the (approximate) material diameter of the printer If a machine defines material diameter of 2.85mm, there is no use to show the 1.75mm materials and vice-versa --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 2 ++ resources/qml/Menus/MaterialMenu.qml | 11 ++++++++++- resources/qml/Preferences/MaterialsPage.qml | 11 ++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 7dc565ce26..fcf6d99688 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -118,6 +118,7 @@ class XmlMaterialProfile(InstanceContainer): metadata.pop("variant", "") metadata.pop("type", "") metadata.pop("base_file", "") + metadata.pop("approximate_diameter", "") ## Begin Name Block builder.start("name") @@ -437,6 +438,7 @@ class XmlMaterialProfile(InstanceContainer): Logger.log("d", "Unsupported material setting %s", key) self._cached_values = global_setting_values + meta_data["approximate_diameter"] = round(diameter) meta_data["compatible"] = global_compatibility self.setMetaData(meta_data) self._dirty = False diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index ab38de97aa..cb1a4cf644 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.qml @@ -15,6 +15,15 @@ Menu property int extruderIndex: 0 property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + UM.SettingPropertyProvider + { + id: materialDiameterProvider + + containerStackId: Cura.MachineManager.activeMachineId + key: "material_diameter" + watchedProperties: [ "value" ] + } + MenuItem { id: automaticMaterial @@ -141,7 +150,7 @@ Menu function materialFilter() { - var result = { "type": "material" }; + var result = { "type": "material", "approximate_diameter": Math.round(materialDiameterProvider.properties.value) }; if(Cura.MachineManager.filterMaterialsByMachine) { result.definition = Cura.MachineManager.activeQualityDefinitionId; diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index 03bf9f5aa1..08cb6d4d13 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -18,7 +18,7 @@ UM.ManagementPage { filter: { - var result = { "type": "material" } + var result = { "type": "material", "approximate_diameter": Math.round(materialDiameterProvider.properties.value) } if(Cura.MachineManager.filterMaterialsByMachine) { result.definition = Cura.MachineManager.activeQualityDefinitionId; @@ -327,6 +327,15 @@ UM.ManagementPage id: messageDialog } + UM.SettingPropertyProvider + { + id: materialDiameterProvider + + containerStackId: Cura.MachineManager.activeMachineId + key: "material_diameter" + watchedProperties: [ "value" ] + } + UM.I18nCatalog { id: catalog; name: "cura"; } SystemPalette { id: palette } }