Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Ultimaker/Cura
Browse files Browse the repository at this point in the history
  • Loading branch information
Appesteijn committed Apr 14, 2017
2 parents 8ede111 + 16a3f10 commit 81ab6dd
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 7 deletions.
8 changes: 7 additions & 1 deletion cura/Settings/ExtruderManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,13 @@ def createExtruderTrain(self, extruder_definition: DefinitionContainer, machine_
material = materials[0]
preferred_material_id = machine_definition.getMetaDataEntry("preferred_material")
if preferred_material_id:
search_criteria = { "type": "material", "id": preferred_material_id}
global_stack = ContainerRegistry.getInstance().findContainerStacks(id = machine_id)
if global_stack:
approximate_material_diameter = round(global_stack[0].getProperty("material_diameter", "value"))
else:
approximate_material_diameter = round(machine_definition.getProperty("material_diameter", "value"))

search_criteria = { "type": "material", "id": preferred_material_id, "approximate_diameter": approximate_material_diameter}
if machine_definition.getMetaDataEntry("has_machine_materials"):
search_criteria["definition"] = machine_definition_id

Expand Down
9 changes: 5 additions & 4 deletions cura/Settings/MachineManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ def addMachine(self, name: str, definition_id: str) -> None:
container_registry.addContainer(new_global_stack)

variant_instance_container = self._updateVariantContainer(definition)
material_instance_container = self._updateMaterialContainer(definition, variant_instance_container)
material_instance_container = self._updateMaterialContainer(definition, new_global_stack, variant_instance_container)
quality_instance_container = self._updateQualityContainer(definition, variant_instance_container, material_instance_container)

current_settings_instance_container = InstanceContainer(name + "_current_settings")
Expand Down Expand Up @@ -760,7 +760,7 @@ def setActiveVariant(self, variant_id):
if old_material:
preferred_material_name = old_material.getName()

self.setActiveMaterial(self._updateMaterialContainer(self._global_container_stack.getBottom(), containers[0], preferred_material_name).id)
self.setActiveMaterial(self._updateMaterialContainer(self._global_container_stack.getBottom(), self._global_container_stack, containers[0], preferred_material_name).id)
else:
Logger.log("w", "While trying to set the active variant, no variant was found to replace.")

Expand Down Expand Up @@ -1110,11 +1110,12 @@ def _updateVariantContainer(self, definition):

return self._empty_variant_container

def _updateMaterialContainer(self, definition, variant_container = None, preferred_material_name = None):
def _updateMaterialContainer(self, stack, definition, variant_container = None, preferred_material_name = None):
if not definition.getMetaDataEntry("has_materials"):
return self._empty_material_container

search_criteria = { "type": "material" }
approximate_material_diameter = round(stack.getProperty("material_diameter", "value"))
search_criteria = { "type": "material", "approximate_diameter": approximate_material_diameter }

if definition.getMetaDataEntry("has_machine_materials"):
search_criteria["definition"] = self.getQualityDefinitionId(definition)
Expand Down
2 changes: 2 additions & 0 deletions plugins/XmlMaterialProfile/XmlMaterialProfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ def serialize(self):
metadata.pop("variant", "")
metadata.pop("type", "")
metadata.pop("base_file", "")
metadata.pop("approximate_diameter", "")

## Begin Name Block
builder.start("name")
Expand Down Expand Up @@ -437,6 +438,7 @@ def deserialize(self, serialized):
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
Expand Down
11 changes: 10 additions & 1 deletion resources/qml/Menus/MaterialMenu.qml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
11 changes: 10 additions & 1 deletion resources/qml/Preferences/MaterialsPage.qml
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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 }
}
Expand Down

0 comments on commit 81ab6dd

Please sign in to comment.