Fix filtering maerials after editing materials

NB: previously the "approximate_diameter" metadata was stored as a number. This caused some issues passing arguments from QML to Python. Now "approximate_diameter" is stored as a string.
This commit is contained in:
fieldOfView 2017-05-30 16:55:01 +02:00 committed by Ghostkeeper
parent 8f7471a892
commit 49f2fb2cea
No known key found for this signature in database
GPG key ID: C5F96EE2BC0F7E75
7 changed files with 13 additions and 9 deletions

View file

@ -746,7 +746,7 @@ class ContainerManager(QObject):
if not global_stack: if not global_stack:
return "" return ""
approximate_diameter = round(global_stack.getProperty("material_diameter", "value")) approximate_diameter = str(round(global_stack.getProperty("material_diameter", "value")))
containers = self._container_registry.findInstanceContainers(id = "generic_pla*", approximate_diameter = approximate_diameter) containers = self._container_registry.findInstanceContainers(id = "generic_pla*", approximate_diameter = approximate_diameter)
if not containers: if not containers:
Logger.log("d", "Unable to create a new material by cloning Generic PLA, because it cannot be found for the material diameter for this machine.") Logger.log("d", "Unable to create a new material by cloning Generic PLA, because it cannot be found for the material diameter for this machine.")

View file

@ -310,9 +310,9 @@ class ExtruderManager(QObject):
if preferred_material_id: if preferred_material_id:
global_stack = ContainerRegistry.getInstance().findContainerStacks(id = machine_id) global_stack = ContainerRegistry.getInstance().findContainerStacks(id = machine_id)
if global_stack: if global_stack:
approximate_material_diameter = round(global_stack[0].getProperty("material_diameter", "value")) approximate_material_diameter = str(round(global_stack[0].getProperty("material_diameter", "value")))
else: else:
approximate_material_diameter = round(machine_definition.getProperty("material_diameter", "value")) approximate_material_diameter = str(round(machine_definition.getProperty("material_diameter", "value")))
search_criteria = { "type": "material", "id": preferred_material_id, "approximate_diameter": approximate_material_diameter} search_criteria = { "type": "material", "id": preferred_material_id, "approximate_diameter": approximate_material_diameter}
if machine_definition.getMetaDataEntry("has_machine_materials"): if machine_definition.getMetaDataEntry("has_machine_materials"):

View file

@ -1125,7 +1125,7 @@ class MachineManager(QObject):
if not definition.getMetaDataEntry("has_materials"): if not definition.getMetaDataEntry("has_materials"):
return self._empty_material_container return self._empty_material_container
approximate_material_diameter = round(stack.getProperty("material_diameter", "value")) approximate_material_diameter = str(round(stack.getProperty("material_diameter", "value")))
search_criteria = { "type": "material", "approximate_diameter": approximate_material_diameter } search_criteria = { "type": "material", "approximate_diameter": approximate_material_diameter }
if definition.getMetaDataEntry("has_machine_materials"): if definition.getMetaDataEntry("has_machine_materials"):

View file

@ -473,7 +473,7 @@ class XmlMaterialProfile(InstanceContainer):
if tag_name in self.__material_properties_setting_map: if tag_name in self.__material_properties_setting_map:
common_setting_values[self.__material_properties_setting_map[tag_name]] = entry.text common_setting_values[self.__material_properties_setting_map[tag_name]] = entry.text
meta_data["approximate_diameter"] = round(float(property_values.get("diameter", 2.85))) # In mm meta_data["approximate_diameter"] = str(round(float(property_values.get("diameter", 2.85)))) # In mm
meta_data["properties"] = property_values meta_data["properties"] = property_values
self.setDefinition(ContainerRegistry.getInstance().findDefinitionContainers(id = "fdmprinter")[0]) self.setDefinition(ContainerRegistry.getInstance().findDefinitionContainers(id = "fdmprinter")[0])

View file

@ -150,7 +150,7 @@ Menu
function materialFilter() function materialFilter()
{ {
var result = { "type": "material", "approximate_diameter": Math.round(materialDiameterProvider.properties.value) }; var result = { "type": "material", "approximate_diameter": Math.round(materialDiameterProvider.properties.value).toString() };
if(Cura.MachineManager.filterMaterialsByMachine) if(Cura.MachineManager.filterMaterialsByMachine)
{ {
result.definition = Cura.MachineManager.activeQualityDefinitionId; result.definition = Cura.MachineManager.activeQualityDefinitionId;

View file

@ -168,8 +168,9 @@ TabView
{ {
// This does not use a SettingPropertyProvider, because we need to make the change to all containers // This does not use a SettingPropertyProvider, because we need to make the change to all containers
// which derive from the same base_file // which derive from the same base_file
Cura.ContainerManager.setContainerProperty(base.containerId, "material_diameter", "value", value) base.setMetaDataEntry("approximate_diameter", properties.approximate_diameter, Math.round(value).toString());
base.setMetaDataEntry("properties/diameter", properties.diameter, value) base.setMetaDataEntry("properties/diameter", properties.diameter, value);
Cura.ContainerManager.setContainerProperty(base.containerId, "material_diameter", "value", value);
} }
onValueChanged: updateCostPerMeter() onValueChanged: updateCostPerMeter()
} }

View file

@ -24,7 +24,7 @@ UM.ManagementPage
{ {
filter: filter:
{ {
var result = { "type": "material", "approximate_diameter": Math.round(materialDiameterProvider.properties.value) } var result = { "type": "material", "approximate_diameter": Math.round(materialDiameterProvider.properties.value).toString() }
if(Cura.MachineManager.filterMaterialsByMachine) if(Cura.MachineManager.filterMaterialsByMachine)
{ {
result.definition = Cura.MachineManager.activeQualityDefinitionId; result.definition = Cura.MachineManager.activeQualityDefinitionId;
@ -253,6 +253,7 @@ UM.ManagementPage
property real density: 0.0; property real density: 0.0;
property real diameter: 0.0; property real diameter: 0.0;
property string approximate_diameter: "0";
property real spool_cost: 0.0; property real spool_cost: 0.0;
property real spool_weight: 0.0; property real spool_weight: 0.0;
@ -397,11 +398,13 @@ UM.ManagementPage
{ {
materialProperties.density = currentItem.metadata.properties.density ? currentItem.metadata.properties.density : 0.0; materialProperties.density = currentItem.metadata.properties.density ? currentItem.metadata.properties.density : 0.0;
materialProperties.diameter = currentItem.metadata.properties.diameter ? currentItem.metadata.properties.diameter : 0.0; materialProperties.diameter = currentItem.metadata.properties.diameter ? currentItem.metadata.properties.diameter : 0.0;
materialProperties.approximate_diameter = currentItem.metadata.approximate_diameter ? currentItem.metadata.approximate_diameter : "0";
} }
else else
{ {
materialProperties.density = 0.0; materialProperties.density = 0.0;
materialProperties.diameter = 0.0; materialProperties.diameter = 0.0;
materialProperties.approximate_diameter = "0";
} }
} }