From dadcf45f45b9b777d1d18d2a878be9b66a68a6fa Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 6 Oct 2016 10:44:38 +0200 Subject: [PATCH 01/10] Added extra checks & logging to 3mf reader CURA-382 --- plugins/3MFReader/ThreeMFReader.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index d24845d8a1..52c45652c6 100644 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -77,6 +77,7 @@ class ThreeMFReader(MeshReader): mesh_data = mesh_builder.build().getTransformed(rotation) if not len(mesh_data.getVertices()): + Logger.log("d", "One of the objects does not have vertices. Skipping it.") continue # This object doesn't have data, so skip it. node.setMeshData(mesh_data) @@ -114,6 +115,7 @@ class ThreeMFReader(MeshReader): try: node.getBoundingBox() # Selftest - There might be more functions that should fail except: + Logger.log("w", "Bounding box test for object failed. Skipping this object") continue result.addChild(node) @@ -125,7 +127,10 @@ class ThreeMFReader(MeshReader): group_decorator = GroupDecorator() result.addDecorator(group_decorator) elif len(objects) == 1: - result = result.getChildren()[0] # Only one object found, return that. + if result.getChildren(): + result = result.getChildren()[0] # Only one object found, return that. + else: # we failed to load any data + return None except Exception as e: Logger.log("e", "exception occured in 3mf reader: %s", e) try: # Selftest - There might be more functions that should fail From 8644fb7113fc860cfefb271a2a30e5d3b3271aa3 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 6 Oct 2016 11:54:00 +0200 Subject: [PATCH 02/10] Never animate progress bars if they are invisible This is now the responsibility of the theme rather than the interface element, since the theme defines the animation itself. This makes it that the interface element doesn't need to worry about things like its style or animation. Contributes to issue CURA-2497. --- resources/qml/MonitorButton.qml | 4 ---- resources/themes/cura/styles.qml | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml index 8bd593dd11..607d0a24ca 100644 --- a/resources/qml/MonitorButton.qml +++ b/resources/qml/MonitorButton.qml @@ -161,10 +161,6 @@ Rectangle visible: showProgress; indeterminate: { - if(!showProgress) - { - return false; //Never be indeterminate when not visible, since that triggers a redraw of the screen. - } switch(Cura.MachineManager.printerOutputDevices[0].jobState) { case "pausing": diff --git a/resources/themes/cura/styles.qml b/resources/themes/cura/styles.qml index 8c419fb245..cc6bdfed77 100644 --- a/resources/themes/cura/styles.qml +++ b/resources/themes/cura/styles.qml @@ -237,7 +237,7 @@ QtObject { SequentialAnimation on x { id: xAnim property int animEndPoint: Theme.getSize("message").width - (Theme.getSize("default_margin").width * 2) - Theme.getSize("progressbar_control").width - running: control.indeterminate + running: control.indeterminate && control.visible loops: Animation.Infinite NumberAnimation { from: 0; to: xAnim.animEndPoint; duration: 2000;} NumberAnimation { from: xAnim.animEndPoint; to: 0; duration: 2000;} From edd06f860a546856eb27430211d85e78d6a2477d Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Thu, 6 Oct 2016 12:10:44 +0200 Subject: [PATCH 03/10] JSON fix: retractions speed warnings and raft margin warning based on likely possible testing values (CURA-905) --- resources/definitions/fdmprinter.def.json | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index a08b4948fe..9ab7a622b1 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1211,7 +1211,7 @@ "minimum_value": "0", "minimum_value_warning": "1", "maximum_value": "machine_max_feedrate_e", - "maximum_value_warning": "25", + "maximum_value_warning": "70", "enabled": "retraction_enable", "settable_per_mesh": false, "settable_per_extruder": true, @@ -1225,7 +1225,7 @@ "minimum_value": "0", "maximum_value": "machine_max_feedrate_e", "minimum_value_warning": "1", - "maximum_value_warning": "25", + "maximum_value_warning": "70", "enabled": "retraction_enable", "value": "retraction_speed", "settable_per_mesh": false, @@ -1240,7 +1240,7 @@ "minimum_value": "0", "maximum_value": "machine_max_feedrate_e", "minimum_value_warning": "1", - "maximum_value_warning": "25", + "maximum_value_warning": "70", "enabled": "retraction_enable", "value": "retraction_speed", "settable_per_mesh": false, @@ -1363,7 +1363,8 @@ "enabled": "retraction_enable", "default_value": 20, "minimum_value": "0.1", - "maximum_value_warning": "25", + "minimum_value_warning": "1", + "maximum_value_warning": "70", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -1378,7 +1379,8 @@ "default_value": 20, "value": "switch_extruder_retraction_speeds", "minimum_value": "0.1", - "maximum_value_warning": "25", + "minimum_value_warning": "1", + "maximum_value_warning": "70", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -1392,7 +1394,8 @@ "default_value": 20, "value": "switch_extruder_retraction_speeds", "minimum_value": "0.1", - "maximum_value_warning": "25", + "minimum_value_warning": "1", + "maximum_value_warning": "70", "settable_per_mesh": false, "settable_per_extruder": true } @@ -2865,7 +2868,7 @@ "type": "float", "default_value": 15, "minimum_value_warning": "raft_interface_line_width", - "maximum_value_warning": "10", + "maximum_value_warning": "20", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "limit_to_extruder": "adhesion_extruder_nr", "settable_per_mesh": false, From e63b57241755e48f5b0f6da30a2c971a0363b6d4 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Thu, 6 Oct 2016 12:13:47 +0200 Subject: [PATCH 04/10] JSON fix: fixed raft warnings flawed logic (CURA-905) For layer_0_z_overlap we are only sure to overextrude when the overlap is more than the airgap. Layer height warnings are now based on line widths for raft, because the line widths are way larger than the nozzle size. --- resources/definitions/fdmprinter.def.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 9ab7a622b1..cf9ff8822e 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2896,7 +2896,7 @@ "default_value": 0.22, "value": "raft_airgap / 2", "minimum_value": "0", - "maximum_value_warning": "layer_height", + "maximum_value_warning": "airgap", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, @@ -2973,7 +2973,7 @@ "value": "layer_height * 1.5", "minimum_value": "0.001", "minimum_value_warning": "0.04", - "maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'machine_nozzle_size')", + "maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'raft_interface_line_width')", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3021,7 +3021,7 @@ "value": "resolveOrValue('layer_height_0') * 1.2", "minimum_value": "0.001", "minimum_value_warning": "0.04", - "maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'machine_nozzle_size')", + "maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'raft_base_line_width')", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, From 7e8ce98f4852199fd45e3a6ae47f651842dff59a Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Thu, 6 Oct 2016 12:15:57 +0200 Subject: [PATCH 05/10] JSON fix: typo (CURA-905) --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index cf9ff8822e..1300ef6348 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2896,7 +2896,7 @@ "default_value": 0.22, "value": "raft_airgap / 2", "minimum_value": "0", - "maximum_value_warning": "airgap", + "maximum_value_warning": "raft_airgap", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, From fb24e552680d557be223b53f7461a5fe91dbe414 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 6 Oct 2016 13:49:43 +0200 Subject: [PATCH 06/10] _getBasicMaterial now correctly filters on variants as well CURA-2248 --- cura/QualityManager.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/cura/QualityManager.py b/cura/QualityManager.py index fc3b9b4f53..64b01aaa31 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -93,8 +93,8 @@ class QualityManager: # Fall back to using generic materials and qualities if nothing could be found. if not result and material_containers and len(material_containers) == 1: - basic_material = self._getBasicMaterial(material_containers[0]) - result = self._getFilteredContainersForStack(machine_definition, [basic_material], **criteria) + basic_materials = self._getBasicMaterials(material_containers[0]) + result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) return result[0] if result else None ## Find all suitable qualities for a combination of machine and material. @@ -106,8 +106,8 @@ class QualityManager: criteria = {"type": "quality" } result = self._getFilteredContainersForStack(machine_definition, [material_container], **criteria) if not result: - basic_material = self._getBasicMaterial(material_container) - result = self._getFilteredContainersForStack(machine_definition, [basic_material], **criteria) + basic_materials = self._getBasicMaterials(material_container) + result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) return result ## Find all quality changes for a machine. @@ -157,16 +157,24 @@ class QualityManager: # # This tries to find a generic or basic version of the given material. # \param material_container \type{InstanceContainer} the material - # \return \type{Option[InstanceContainer]} the basic material or None if one could not be found. - def _getBasicMaterial(self, material_container): + # \return \type{List[InstanceContainer]} the basic material or None if one could not be found. + def _getBasicMaterials(self, material_container): base_material = material_container.getMetaDataEntry("material") + if material_container.getDefinition().getMetaDataEntry("has_machine_quality"): + definition_id = material_container.getDefinition().getMetaDataEntry("quality_definition", material_container.getDefinition().getId()) + else: + definition_id = "fdmprinter" + if base_material: # There is a basic material specified - criteria = { "type": "material", "name": base_material, "definition": "fdmprinter" } + criteria = { "type": "material", "name": base_material, "definition": definition_id } containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**criteria) - return containers[0] if containers else None + containers = [basic_material for basic_material in containers if + basic_material.getMetaDataEntry("variant") == material_container.getMetaDataEntry( + "variant")] + return containers - return None + return [] def _getFilteredContainers(self, **kwargs): return self._getFilteredContainersForStack(None, None, **kwargs) From c056d44785ec9b493dea2a597a9e2c7c9fd7cce9 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Thu, 6 Oct 2016 14:07:01 +0200 Subject: [PATCH 07/10] Made quality profile weights consistent draft: -2 fast: -1 normal: 0 high: 1 CURA-2549 --- resources/quality/high.inst.cfg | 2 +- resources/quality/normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg | 2 +- 30 files changed, 30 insertions(+), 30 deletions(-) diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index ec3ab18fd6..9e3e9f1f67 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -6,7 +6,7 @@ definition = fdmprinter [metadata] type = quality quality_type = high -weight = -3 +weight = 1 [values] layer_height = 0.06 diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index cfd70de49c..e940bbda35 100644 --- a/resources/quality/normal.inst.cfg +++ b/resources/quality/normal.inst.cfg @@ -6,6 +6,6 @@ definition = fdmprinter [metadata] type = quality quality_type = normal -weight = -2 +weight = 0 [values] diff --git a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg index 18d74386cf..868f1dc016 100644 --- a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_pla_ultimaker2_plus_0.25_mm -weight = -2 +weight = 1 quality_type = high [values] diff --git a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg index ff542c7c19..c2b15d1074 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_pla_ultimaker2_plus_0.4_mm -weight = -3 +weight = 1 quality_type = high [values] diff --git a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg index 79d868f25f..9a84f5c04a 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_pla_ultimaker2_plus_0.4_mm -weight = -2 +weight = 0 quality_type = normal [values] diff --git a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg index 63beca8fbb..fd4c2c120a 100644 --- a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] material = generic_pla_ultimaker2_plus_0.6_mm type = quality -weight = -2 +weight = 0 quality_type = normal [values] diff --git a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg index f2b78846a8..cd4c591640 100644 --- a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] material = generic_pla_ultimaker2_plus_0.8_mm type = quality -weight = -2 +weight = -1 quality_type = fast [values] diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg index 8457d5cd2b..94ddd58081 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_abs_ultimaker2_plus_0.25_mm -weight = -2 +weight = 1 quality_type = high [values] diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg index f2235abd41..c6ea33da2d 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_abs_ultimaker2_plus_0.4_mm -weight = -3 +weight = 1 quality_type = high [values] diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg index 1b8c1035db..ba7886276b 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_abs_ultimaker2_plus_0.4_mm -weight = -2 +weight = 0 quality_type = normal [values] diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg index 4ef0f34484..3a0af33a6a 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_abs_ultimaker2_plus_0.6_mm -weight = -2 +weight = 0 quality_type = normal [values] diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg index ca2f736c01..e8885fc73a 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_abs_ultimaker2_plus_0.8_mm -weight = -2 +weight = -1 quality_type = fast [values] diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg index 0f2a612619..b86bb877f6 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_cpe_ultimaker2_plus_0.25_mm -weight = -2 +weight = -1 quality_type = high [values] diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg index abc5e562f7..bb6a1ee079 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_cpe_ultimaker2_plus_0.4_mm -weight = -3 +weight = 1 quality_type = high [values] diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg index 5531f245f0..54122164da 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_cpe_ultimaker2_plus_0.4_mm -weight = -2 +weight = 0 quality_type = normal [values] diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg index 3765f98709..00a6160f46 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_cpe_ultimaker2_plus_0.6_mm -weight = -2 +weight = 0 quality_type = normal [values] diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg index 179b554973..83714ca40a 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_cpe_ultimaker2_plus_0.8_mm -weight = -2 +weight = -1 quality_type = fast [values] diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg index 7e4ae3911d..ebb4c87f01 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_cpe_plus_ultimaker2_plus_0.4_mm -weight = 0 +weight = -2 quality_type = draft [values] diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg index 069f7cb9f3..be6e962949 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_cpe_plus_ultimaker2_plus_0.6_mm -weight = 0 +weight = -2 quality_type = draft [values] diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg index ccfe46dc2a..2cd6ef9dac 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_cpe_plus_ultimaker2_plus_0.8_mm -weight = 0 +weight = -2 quality_type = draft [values] diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg index 2cf00fdbf4..c1f39614a6 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_nylon_ultimaker2_plus_0.25_mm -weight = 0 +weight = 1 quality_type = high [values] diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg index b09113943b..88d8855a6a 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_nylon_ultimaker2_plus_0.4_mm -weight = 0 +weight = -1 quality_type = fast [values] diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg index cdecab8f91..72dbc51e0f 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_nylon_ultimaker2_plus_0.6_mm -weight = 0 +weight = -1 quality_type = fast [values] diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg index 89852991bf..f7975730c2 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_nylon_ultimaker2_plus_0.8_mm -weight = 0 +weight = -2 quality_type = draft [values] diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg index 5358afd2be..91e75c2450 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_pc_ultimaker2_plus_0.25_mm -weight = 0 +weight = 1 quality_type = high [values] diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg index c4af6dd366..e05cbb0dd0 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_pc_ultimaker2_plus_0.4_mm -weight = 0 +weight = -1 quality_type = fast [values] diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg index ef6d1a20b3..bfd239e3cc 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_pc_ultimaker2_plus_0.6_mm -weight = 0 +weight = -1 quality_type = fast [values] diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg index 1207b562ee..52e61a8145 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_pc_ultimaker2_plus_0.8_mm -weight = 0 +weight = -2 quality_type = draft [values] diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg index 5ca9c7f055..1da2a667e6 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_tpu_ultimaker2_plus_0.25_mm -weight = 0 +weight = 1 quality_type = high [values] diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg index 9ef7263e63..a2f3a57541 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] type = quality material = generic_tpu_ultimaker2_plus_0.6_mm -weight = 0 +weight = -1 quality_type = fast [values] From 081ca8ea8db61c52509c33588da10d4412fe2efd Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Thu, 6 Oct 2016 14:47:35 +0200 Subject: [PATCH 08/10] Merge current quality_changes values into newly created profiles Creating a profile with a custom profile as the active profile would ignore the settings of that custom profile. CURA-2565 --- cura/Settings/ContainerManager.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index a917718e61..7f2555af03 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -480,6 +480,7 @@ class ContainerManager(QObject): new_changes = self._createQualityChanges(quality_container, unique_name, UM.Application.getInstance().getGlobalContainerStack().getBottom(), extruder_id) + self._performMerge(new_changes, quality_changes_container, clear_settings = False) self._performMerge(new_changes, user_container) self._container_registry.addContainer(new_changes) @@ -694,7 +695,7 @@ class ContainerManager(QObject): def createContainerManager(engine, js_engine): return ContainerManager.getInstance() - def _performMerge(self, merge_into, merge): + def _performMerge(self, merge_into, merge, clear_settings = True): assert isinstance(merge, type(merge_into)) if merge == merge_into: @@ -703,7 +704,8 @@ class ContainerManager(QObject): for key in merge.getAllKeys(): merge_into.setProperty(key, "value", merge.getProperty(key, "value")) - merge.clear() + if clear_settings: + merge.clear() def _updateContainerNameFilters(self): self._container_name_filters = {} From aaaf1dfc58dae4748a236636219704c8e10130ef Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Thu, 6 Oct 2016 15:08:17 +0200 Subject: [PATCH 09/10] JSOn fix: cap extruder switch retraction speed to machine_max_feedrate_e (CURA-905) just like the normal retraction speeds. --- resources/definitions/fdmprinter.def.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 1300ef6348..678a286ddb 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1364,6 +1364,7 @@ "default_value": 20, "minimum_value": "0.1", "minimum_value_warning": "1", + "maximum_value": "machine_max_feedrate_e", "maximum_value_warning": "70", "settable_per_mesh": false, "settable_per_extruder": true, @@ -1380,6 +1381,7 @@ "value": "switch_extruder_retraction_speeds", "minimum_value": "0.1", "minimum_value_warning": "1", + "maximum_value": "machine_max_feedrate_e", "maximum_value_warning": "70", "settable_per_mesh": false, "settable_per_extruder": true @@ -1395,6 +1397,7 @@ "value": "switch_extruder_retraction_speeds", "minimum_value": "0.1", "minimum_value_warning": "1", + "maximum_value": "machine_max_feedrate_e", "maximum_value_warning": "70", "settable_per_mesh": false, "settable_per_extruder": true From 593687afeeea42e99fb91e290de082d6162e5844 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Thu, 6 Oct 2016 15:20:16 +0200 Subject: [PATCH 10/10] Fix display of custom profiles for printers that have no materials (UM2) CURA-2565 --- cura/Settings/QualitySettingsModel.py | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/cura/Settings/QualitySettingsModel.py b/cura/Settings/QualitySettingsModel.py index 09d6a3c821..638a53e4b8 100644 --- a/cura/Settings/QualitySettingsModel.py +++ b/cura/Settings/QualitySettingsModel.py @@ -27,8 +27,8 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel): self._extruder_id = None self._extruder_definition_id = None - self._quality = None - self._material = None + self._quality_id = None + self._material_id = None self.addRoleName(self.KeyRole, "key") self.addRoleName(self.LabelRole, "label") @@ -61,29 +61,29 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel): return self._extruder_definition_id def setQuality(self, quality): - if quality != self._quality: - self._quality = quality + if quality != self._quality_id: + self._quality_id = quality self._update() self.qualityChanged.emit() qualityChanged = pyqtSignal() @pyqtProperty(str, fset = setQuality, notify = qualityChanged) def quality(self): - return self._quality + return self._quality_id def setMaterial(self, material): - if material != self._material: - self._material = material + if material != self._material_id: + self._material_id = material self._update() self.materialChanged.emit() materialChanged = pyqtSignal() @pyqtProperty(str, fset = setMaterial, notify = materialChanged) def material(self): - return self._material + return self._material_id def _update(self): - if not self._quality: + if not self._quality_id: return items = [] @@ -91,9 +91,9 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel): settings = collections.OrderedDict() definition_container = UM.Application.getInstance().getGlobalContainerStack().getBottom() - containers = self._container_registry.findInstanceContainers(id = self._quality) + containers = self._container_registry.findInstanceContainers(id = self._quality_id) if not containers: - UM.Logger.log("w", "Could not find a quality container with id %s", self._quality) + UM.Logger.log("w", "Could not find a quality container with id %s", self._quality_id) return quality_container = None @@ -110,8 +110,8 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel): "definition": quality_changes_container.getDefinition().getId() } - if self._material: - criteria["material"] = self._material + if self._material_id and self._material_id != "empty_material": + criteria["material"] = self._material_id quality_container = self._container_registry.findInstanceContainers(**criteria) if not quality_container: @@ -124,8 +124,8 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel): criteria = {"type": "quality", "quality_type": quality_type, "definition": definition_id} - if self._material: - criteria["material"] = self._material + if self._material_id and self._material_id != "empty_material": + criteria["material"] = self._material_id criteria["extruder"] = self._extruder_id