mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-23 06:33:55 -06:00
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:
parent
8f7471a892
commit
49f2fb2cea
7 changed files with 13 additions and 9 deletions
|
@ -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.")
|
||||||
|
|
|
@ -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"):
|
||||||
|
|
|
@ -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"):
|
||||||
|
|
|
@ -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])
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue