From 4c6f9486be48872d30a60a5b565552143a23733f Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Sat, 8 Apr 2017 12:47:01 +0200 Subject: [PATCH 001/125] feat: cutting mesh (CURA-966) --- cura/CuraApplication.py | 1 + resources/definitions/fdmprinter.def.json | 11 +++++++++++ resources/qml/Settings/SettingView.qml | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index af23fcb4cf..840d8298cc 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -320,6 +320,7 @@ class CuraApplication(QtApplication): blackmagic print_sequence infill_mesh + cutting_mesh experimental """.replace("\n", ";").replace(" ", "")) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index e0532b3e5b..aa2f96a3e7 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4181,6 +4181,17 @@ "settable_per_meshgroup": false, "settable_globally": false }, + "cutting_mesh": + { + "label": "Cutting Mesh", + "description": "Limit the volume of this mesh to within other meshes. You can use this to make certain areas of one mesh print with different settings and with a whole different extruder.", + "type": "bool", + "default_value": false, + "settable_per_mesh": true, + "settable_per_extruder": false, + "settable_per_meshgroup": false, + "settable_globally": false + }, "mold_enabled": { "label": "Mold", diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 66f1c19a08..5040d8fad5 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -154,7 +154,7 @@ Item id: definitionsModel; containerId: Cura.MachineManager.activeDefinitionId visibilityHandler: UM.SettingPreferenceVisibilityHandler { } - exclude: ["machine_settings", "command_line_settings", "infill_mesh", "infill_mesh_order", "support_mesh", "anti_overhang_mesh"] // TODO: infill_mesh settigns are excluded hardcoded, but should be based on the fact that settable_globally, settable_per_meshgroup and settable_per_extruder are false. + exclude: ["machine_settings", "command_line_settings", "infill_mesh", "infill_mesh_order", "cutting_mesh", "support_mesh", "anti_overhang_mesh"] // TODO: infill_mesh settigns are excluded hardcoded, but should be based on the fact that settable_globally, settable_per_meshgroup and settable_per_extruder are false. expanded: CuraApplication.expandedCategories onExpandedChanged: { From 30ede0736a0ef12fcb6477a0767da45bf88c4b23 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Sat, 8 Apr 2017 12:49:32 +0200 Subject: [PATCH 002/125] JSON: move infill_mesh_order to right under infill_mesh (CURA-966) --- resources/definitions/fdmprinter.def.json | 28 +++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index aa2f96a3e7..d8ecdf5fab 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4181,6 +4181,20 @@ "settable_per_meshgroup": false, "settable_globally": false }, + "infill_mesh_order": + { + "label": "Infill Mesh Order", + "description": "Determines which infill mesh is inside the infill of another infill mesh. An infill mesh with a higher order will modify the infill of infill meshes with lower order and normal meshes.", + "default_value": 0, + "value": "1 if infill_mesh else 0", + "minimum_value_warning": "1", + "maximum_value_warning": "50", + "type": "int", + "settable_per_mesh": true, + "settable_per_extruder": false, + "settable_per_meshgroup": false, + "settable_globally": false + }, "cutting_mesh": { "label": "Cutting Mesh", @@ -4226,20 +4240,6 @@ "settable_per_mesh": true, "enabled": "mold_enabled" }, - "infill_mesh_order": - { - "label": "Infill Mesh Order", - "description": "Determines which infill mesh is inside the infill of another infill mesh. An infill mesh with a higher order will modify the infill of infill meshes with lower order and normal meshes.", - "default_value": 0, - "value": "1 if infill_mesh else 0", - "minimum_value_warning": "1", - "maximum_value_warning": "50", - "type": "int", - "settable_per_mesh": true, - "settable_per_extruder": false, - "settable_per_meshgroup": false, - "settable_globally": false - }, "support_mesh": { "label": "Support Mesh", From b590e7b86caa7602e0e4bf543444c92a864bfbfc Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 3 May 2017 17:05:56 +0200 Subject: [PATCH 003/125] [WIP] Add place for the extra gradual infill icon CURA-3732 --- resources/qml/SidebarSimple.qml | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 86185727b2..eaa303819f 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -30,6 +30,7 @@ Item id: infillCellLeft anchors.top: parent.top anchors.left: parent.left + anchors.topMargin: UM.Theme.getSize("default_margin").height width: base.width * .45 - UM.Theme.getSize("default_margin").width height: childrenRect.height @@ -47,7 +48,7 @@ Item } } - Flow + Row { id: infillCellRight @@ -85,7 +86,7 @@ Item { id: infillIconLining - width: (infillCellRight.width - 3 * UM.Theme.getSize("default_margin").width) / 4; + width: (infillCellRight.width - ((infillModel.count - 1) * UM.Theme.getSize("default_margin").width)) / (infillModel.count); height: width border.color: @@ -181,16 +182,18 @@ Item Component.onCompleted: { infillModel.append({ - name: catalog.i18nc("@label", "Hollow"), + name: catalog.i18nc("@label", "Empty"), percentage: 0, + steps: 0, percentageMin: -1, percentageMax: 0, - text: catalog.i18nc("@label", "No (0%) infill will leave your model hollow at the cost of low strength"), + text: catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength"), icon: "hollow" }) infillModel.append({ name: catalog.i18nc("@label", "Light"), percentage: 20, + steps: 0, percentageMin: 0, percentageMax: 30, text: catalog.i18nc("@label", "Light (20%) infill will give your model an average strength"), @@ -199,6 +202,7 @@ Item infillModel.append({ name: catalog.i18nc("@label", "Dense"), percentage: 50, + steps: 0, percentageMin: 30, percentageMax: 70, text: catalog.i18nc("@label", "Dense (50%) infill will give your model an above average strength"), @@ -207,11 +211,20 @@ Item infillModel.append({ name: catalog.i18nc("@label", "Solid"), percentage: 100, + steps: 0, percentageMin: 70, percentageMax: 100, text: catalog.i18nc("@label", "Solid (100%) infill will make your model completely solid"), icon: "solid" }) + infillModel.append({ + name: catalog.i18nc("@label", "Gradual"), + percentage: 90, + steps: 5, + infill_layer_height: 1.5, + text: catalog.i18nc("@label", "This will gradually fill your model towards the top"), + icon: "gradual" + }) } } } @@ -220,7 +233,7 @@ Item { id: helpersCell anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: parent.left anchors.right: parent.right height: childrenRect.height @@ -392,7 +405,7 @@ Item property alias _hovered: adhesionMouseArea.containsMouse anchors.top: supportExtruderCombobox.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: adhesionHelperLabel.right anchors.leftMargin: UM.Theme.getSize("default_margin").width @@ -467,7 +480,7 @@ Item { id: tipsCell anchors.top: helpersCell.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: parent.left width: parent.width height: childrenRect.height @@ -480,7 +493,7 @@ Item anchors.rightMargin: UM.Theme.getSize("default_margin").width wrapMode: Text.WordWrap //: Tips label - text: catalog.i18nc("@label", "Need help improving your prints? Read the Ultimaker Troubleshooting Guides").arg("https://ultimaker.com/en/troubleshooting"); + text: catalog.i18nc("@label", "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides").arg("https://ultimaker.com/en/troubleshooting"); font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); linkColor: UM.Theme.getColor("text_link") From 53b7e1a8ca9bdde6cc156b9e8b56bd643d07c5c6 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Thu, 4 May 2017 09:02:38 +0100 Subject: [PATCH 004/125] Add smooth_spiralized_contours setting to control smoothing of contours when spiralizing. Smoothing the contours minimises the visibility of the z-seam and for most models is probably a good idea. Where it is less good is when the model has a fine surface details which will get mangled by the smoothing. So we should let the user decide whether they want to smooth or not. The default is true as most of the time it's a good thing. # Conflicts: # resources/definitions/fdmprinter.def.json --- resources/definitions/fdmprinter.def.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 99cfede396..1a10e69008 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4565,7 +4565,17 @@ "type": "bool", "default_value": false, "settable_per_mesh": false, - "settable_per_extruder": false + "settable_per_extruder": false, + "children": + { + "smooth_spiralized_contours": + { + "label": "Smooth Spiralized Contours", + "description": "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details.", + "type": "bool", + "default_value": true + } + } } } }, From 68f5995b19d7f37bc884ca18e37cb95187eba18e Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 3 May 2017 17:05:56 +0200 Subject: [PATCH 005/125] [WIP] Add place for the extra gradual infill icon CURA-3732 --- resources/qml/SidebarSimple.qml | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 86185727b2..eaa303819f 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -30,6 +30,7 @@ Item id: infillCellLeft anchors.top: parent.top anchors.left: parent.left + anchors.topMargin: UM.Theme.getSize("default_margin").height width: base.width * .45 - UM.Theme.getSize("default_margin").width height: childrenRect.height @@ -47,7 +48,7 @@ Item } } - Flow + Row { id: infillCellRight @@ -85,7 +86,7 @@ Item { id: infillIconLining - width: (infillCellRight.width - 3 * UM.Theme.getSize("default_margin").width) / 4; + width: (infillCellRight.width - ((infillModel.count - 1) * UM.Theme.getSize("default_margin").width)) / (infillModel.count); height: width border.color: @@ -181,16 +182,18 @@ Item Component.onCompleted: { infillModel.append({ - name: catalog.i18nc("@label", "Hollow"), + name: catalog.i18nc("@label", "Empty"), percentage: 0, + steps: 0, percentageMin: -1, percentageMax: 0, - text: catalog.i18nc("@label", "No (0%) infill will leave your model hollow at the cost of low strength"), + text: catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength"), icon: "hollow" }) infillModel.append({ name: catalog.i18nc("@label", "Light"), percentage: 20, + steps: 0, percentageMin: 0, percentageMax: 30, text: catalog.i18nc("@label", "Light (20%) infill will give your model an average strength"), @@ -199,6 +202,7 @@ Item infillModel.append({ name: catalog.i18nc("@label", "Dense"), percentage: 50, + steps: 0, percentageMin: 30, percentageMax: 70, text: catalog.i18nc("@label", "Dense (50%) infill will give your model an above average strength"), @@ -207,11 +211,20 @@ Item infillModel.append({ name: catalog.i18nc("@label", "Solid"), percentage: 100, + steps: 0, percentageMin: 70, percentageMax: 100, text: catalog.i18nc("@label", "Solid (100%) infill will make your model completely solid"), icon: "solid" }) + infillModel.append({ + name: catalog.i18nc("@label", "Gradual"), + percentage: 90, + steps: 5, + infill_layer_height: 1.5, + text: catalog.i18nc("@label", "This will gradually fill your model towards the top"), + icon: "gradual" + }) } } } @@ -220,7 +233,7 @@ Item { id: helpersCell anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: parent.left anchors.right: parent.right height: childrenRect.height @@ -392,7 +405,7 @@ Item property alias _hovered: adhesionMouseArea.containsMouse anchors.top: supportExtruderCombobox.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: adhesionHelperLabel.right anchors.leftMargin: UM.Theme.getSize("default_margin").width @@ -467,7 +480,7 @@ Item { id: tipsCell anchors.top: helpersCell.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: parent.left width: parent.width height: childrenRect.height @@ -480,7 +493,7 @@ Item anchors.rightMargin: UM.Theme.getSize("default_margin").width wrapMode: Text.WordWrap //: Tips label - text: catalog.i18nc("@label", "Need help improving your prints? Read the Ultimaker Troubleshooting Guides").arg("https://ultimaker.com/en/troubleshooting"); + text: catalog.i18nc("@label", "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides").arg("https://ultimaker.com/en/troubleshooting"); font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); linkColor: UM.Theme.getColor("text_link") From f15aa667510bb6ffe472fa7fd1801d060555b142 Mon Sep 17 00:00:00 2001 From: 14bitVoid <14bitvoid@protonmail.com> Date: Fri, 5 May 2017 00:05:17 +0200 Subject: [PATCH 006/125] Receive time estimates per feature --- cura/PrintInformation.py | 14 +++++---- plugins/CuraEngineBackend/Cura.proto | 20 +++++++++--- .../CuraEngineBackend/CuraEngineBackend.py | 31 +++++++++++++++++-- 3 files changed, 52 insertions(+), 13 deletions(-) diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index ab63e4034d..cd1a194254 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -111,12 +111,14 @@ class PrintInformation(QObject): def materialCosts(self): return self._material_costs - def _onPrintDurationMessage(self, total_time, material_amounts): - if total_time != total_time: # Check for NaN. Engine can sometimes give us weird values. - Logger.log("w", "Received NaN for print duration message") - self._current_print_time.setDuration(0) - else: - self._current_print_time.setDuration(total_time) + def _onPrintDurationMessage(self, time_per_feature, material_amounts): + total_time = 0 + for feature, time in time_per_feature.items(): + if time != time: # Check for NaN. Engine can sometimes give us weird values. + Logger.log("w", "Received NaN for print duration message") + continue + total_time += time + self._current_print_time.setDuration(total_time) self.currentPrintTimeChanged.emit() diff --git a/plugins/CuraEngineBackend/Cura.proto b/plugins/CuraEngineBackend/Cura.proto index 4eab500f0a..c2e4e5bb5f 100644 --- a/plugins/CuraEngineBackend/Cura.proto +++ b/plugins/CuraEngineBackend/Cura.proto @@ -90,9 +90,21 @@ message GCodeLayer { } -message PrintTimeMaterialEstimates { // The print time for the whole print and material estimates for the extruder - float time = 1; // Total time estimate - repeated MaterialEstimates materialEstimates = 2; // materialEstimates data +message PrintTimeMaterialEstimates { // The print time for each feature and material estimates for the extruder + // Time estimate in each feature + float time_none = 1; + float time_inset_0 = 2; + float time_inset_x = 3; + float time_skin = 4; + float time_support = 5; + float time_skirt = 6; + float time_infill = 7; + float time_support_infill = 8; + float time_travel = 9; + float time_retract = 10; + float time_support_interface = 11; + + repeated MaterialEstimates materialEstimates = 12; // materialEstimates data } message MaterialEstimates { @@ -121,4 +133,4 @@ message GCodePrefix { } message SlicingFinished { -} \ No newline at end of file +} diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index f32993fd20..c13cb72864 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -187,7 +187,19 @@ class CuraEngineBackend(QObject, Backend): Logger.log("w", "Slice unnecessary, nothing has changed that needs reslicing.") return - self.printDurationMessage.emit(0, [0]) + self.printDurationMessage.emit({ + "none": 0, + "inset_0": 0, + "inset_x": 0, + "skin": 0, + "support": 0, + "skirt": 0, + "infill": 0, + "support_infill": 0, + "travel": 0, + "retract": 0, + "support_interface": 0 + }, [0]) self._stored_layer_data = [] self._stored_optimized_layer_data = [] @@ -475,13 +487,26 @@ class CuraEngineBackend(QObject, Backend): ## Called when a print time message is received from the engine. # - # \param message The protobuff message containing the print time and + # \param message The protobuf message containing the print time per feature and # material amount per extruder def _onPrintTimeMaterialEstimates(self, message): material_amounts = [] for index in range(message.repeatedMessageCount("materialEstimates")): material_amounts.append(message.getRepeatedMessage("materialEstimates", index).material_amount) - self.printDurationMessage.emit(message.time, material_amounts) + feature_times = { + "none": message.time_none, + "inset_0": message.time_inset_0, + "inset_x": message.time_inset_x, + "skin": message.time_skin, + "support": message.time_support, + "skirt": message.time_skirt, + "infill": message.time_infill, + "support_infill": message.time_support_infill, + "travel": message.time_travel, + "retract": message.time_retract, + "support_interface": message.time_support_interface + } + self.printDurationMessage.emit(feature_times, material_amounts) ## Creates a new socket connection. def _createSocket(self): From 69a95e37a5ec05ca63321abe8acf53283ea49350 Mon Sep 17 00:00:00 2001 From: 14bitVoid <14bitvoid@protonmail.com> Date: Fri, 5 May 2017 01:34:09 +0200 Subject: [PATCH 007/125] Show time estimates per feature in tooltip --- cura/PrintInformation.py | 19 ++++++++++++++++ resources/qml/JobSpecs.qml | 46 +++++++++++++++++++++++++++++++++----- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index cd1a194254..c6412e2f6f 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -52,6 +52,19 @@ class PrintInformation(QObject): super().__init__(parent) self._current_print_time = Duration(None, self) + self._print_times_per_feature = { + "none": Duration(None, self), + "inset_0": Duration(None, self), + "inset_x": Duration(None, self), + "skin": Duration(None, self), + "support": Duration(None, self), + "skirt": Duration(None, self), + "infill": Duration(None, self), + "support_infill": Duration(None, self), + "travel": Duration(None, self), + "retract": Duration(None, self), + "support_interface": Duration(None, self) + } self._material_lengths = [] self._material_weights = [] @@ -93,6 +106,10 @@ class PrintInformation(QObject): def currentPrintTime(self): return self._current_print_time + @pyqtProperty("QVariantMap", notify = currentPrintTimeChanged) + def printTimesPerFeature(self): + return self._print_times_per_feature + materialLengthsChanged = pyqtSignal() @pyqtProperty("QVariantList", notify = materialLengthsChanged) @@ -115,9 +132,11 @@ class PrintInformation(QObject): total_time = 0 for feature, time in time_per_feature.items(): if time != time: # Check for NaN. Engine can sometimes give us weird values. + self._print_times_per_feature[feature].setDuration(0) Logger.log("w", "Received NaN for print duration message") continue total_time += time + self._print_times_per_feature[feature].setDuration(time) self._current_print_time.setDuration(total_time) self.currentPrintTimeChanged.emit() diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 6013117728..c702cb1ac2 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -24,6 +24,7 @@ Item { UM.I18nCatalog { id: catalog; name:"cura"} property variant printDuration: PrintInformation.currentPrintTime + property variant printDurationPerFeature: PrintInformation.printTimesPerFeature property variant printMaterialLengths: PrintInformation.materialLengths property variant printMaterialWeights: PrintInformation.materialWeights property variant printMaterialCosts: PrintInformation.materialCosts @@ -159,7 +160,7 @@ Item { UM.RecolorImage { id: timeIcon - anchors.right: timeSpec.left + anchors.right: timeSpecPerFeatureTooltipArea.left anchors.rightMargin: UM.Theme.getSize("default_margin").width/2 anchors.verticalCenter: parent.verticalCenter width: UM.Theme.getSize("save_button_specs_icons").width @@ -169,15 +170,48 @@ Item { color: UM.Theme.getColor("text_subtext") source: UM.Theme.getIcon("print_time") } - Text + UM.TooltipArea { - id: timeSpec + id: timeSpecPerFeatureTooltipArea + text: { + var result = ""; + if(base.printDurationPerFeature["inset_0"] && base.printDurationPerFeature["inset_0"].totalSeconds > 0) + result += "Outer Walls: " + base.printDurationPerFeature["inset_0"].getDisplayString(UM.DurationFormat.Short) + if(base.printDurationPerFeature["inset_x"] && base.printDurationPerFeature["inset_x"].totalSeconds > 0) + result += "
Inner Walls: " + base.printDurationPerFeature["inset_x"].getDisplayString(UM.DurationFormat.Short) + if(base.printDurationPerFeature["skin"] && base.printDurationPerFeature["skin"].totalSeconds > 0) + result += "
Skin: " + base.printDurationPerFeature["skin"].getDisplayString(UM.DurationFormat.Short) + if(base.printDurationPerFeature["infill"] && base.printDurationPerFeature["infill"].totalSeconds > 0) + result += "
Infill: " + base.printDurationPerFeature["infill"].getDisplayString(UM.DurationFormat.Short) + if(base.printDurationPerFeature["support_infill"] && base.printDurationPerFeature["support_infill"].totalSeconds > 0) + result += "
Support: " + base.printDurationPerFeature["support_infill"].getDisplayString(UM.DurationFormat.Short) + if(base.printDurationPerFeature["support_interface"] && base.printDurationPerFeature["support_interface"].totalSeconds > 0) + result += "
Support Interface: " + base.printDurationPerFeature["support_interface"].getDisplayString(UM.DurationFormat.Short) + if(base.printDurationPerFeature["support"] && base.printDurationPerFeature["support"].totalSeconds > 0) + result += "
Helper Structures: " + base.printDurationPerFeature["support"].getDisplayString(UM.DurationFormat.Short) + if(base.printDurationPerFeature["travel"] && base.printDurationPerFeature["travel"].totalSeconds > 0) + result += "
Travel: " + base.printDurationPerFeature["travel"].getDisplayString(UM.DurationFormat.Short) + if(base.printDurationPerFeature["retract"] && base.printDurationPerFeature["retract"].totalSeconds > 0) + result += "
Retractions: " + base.printDurationPerFeature["retract"].getDisplayString(UM.DurationFormat.Short) + if(base.printDurationPerFeature["none"] && base.printDurationPerFeature["none"].totalSeconds > 0) + result += "
Other: " + base.printDurationPerFeature["none"].getDisplayString(UM.DurationFormat.Short) + return result; + } + width: childrenRect.width + height: childrenRect.height anchors.right: lengthIcon.left anchors.rightMargin: UM.Theme.getSize("default_margin").width anchors.verticalCenter: parent.verticalCenter - font: UM.Theme.getFont("small") - color: UM.Theme.getColor("text_subtext") - text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short) + + Text + { + id: timeSpec + anchors.left: parent.left + anchors.top: parent.top + font: UM.Theme.getFont("small") + color: UM.Theme.getColor("text_subtext") + text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short) + } } UM.RecolorImage { From 05f46c47f72d0a520e74ee779791989a25e25227 Mon Sep 17 00:00:00 2001 From: 14bitVoid <14bitvoid@protonmail.com> Date: Fri, 5 May 2017 02:31:16 +0200 Subject: [PATCH 008/125] Dynamically fill tooltip with time estimates --- resources/qml/JobSpecs.qml | 42 ++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index c702cb1ac2..849d9f43da 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -174,27 +174,29 @@ Item { { id: timeSpecPerFeatureTooltipArea text: { + var order = ["inset_0", "inset_x", "skin", "infill", "support_infill", "support_interface", "support", "travel", "retract", "none"]; + var visible_names = { + "inset_0": "Outer Wall", + "inset_x": "Inner Walls", + "skin": "Skin", + "infill": "Infill", + "support_infill": "Support", + "support_interface": "Support Interface", + "support": "Helper Structures", + "travel": "Travel", + "retract": "Retractions", + "none": "Other" + }; var result = ""; - if(base.printDurationPerFeature["inset_0"] && base.printDurationPerFeature["inset_0"].totalSeconds > 0) - result += "Outer Walls: " + base.printDurationPerFeature["inset_0"].getDisplayString(UM.DurationFormat.Short) - if(base.printDurationPerFeature["inset_x"] && base.printDurationPerFeature["inset_x"].totalSeconds > 0) - result += "
Inner Walls: " + base.printDurationPerFeature["inset_x"].getDisplayString(UM.DurationFormat.Short) - if(base.printDurationPerFeature["skin"] && base.printDurationPerFeature["skin"].totalSeconds > 0) - result += "
Skin: " + base.printDurationPerFeature["skin"].getDisplayString(UM.DurationFormat.Short) - if(base.printDurationPerFeature["infill"] && base.printDurationPerFeature["infill"].totalSeconds > 0) - result += "
Infill: " + base.printDurationPerFeature["infill"].getDisplayString(UM.DurationFormat.Short) - if(base.printDurationPerFeature["support_infill"] && base.printDurationPerFeature["support_infill"].totalSeconds > 0) - result += "
Support: " + base.printDurationPerFeature["support_infill"].getDisplayString(UM.DurationFormat.Short) - if(base.printDurationPerFeature["support_interface"] && base.printDurationPerFeature["support_interface"].totalSeconds > 0) - result += "
Support Interface: " + base.printDurationPerFeature["support_interface"].getDisplayString(UM.DurationFormat.Short) - if(base.printDurationPerFeature["support"] && base.printDurationPerFeature["support"].totalSeconds > 0) - result += "
Helper Structures: " + base.printDurationPerFeature["support"].getDisplayString(UM.DurationFormat.Short) - if(base.printDurationPerFeature["travel"] && base.printDurationPerFeature["travel"].totalSeconds > 0) - result += "
Travel: " + base.printDurationPerFeature["travel"].getDisplayString(UM.DurationFormat.Short) - if(base.printDurationPerFeature["retract"] && base.printDurationPerFeature["retract"].totalSeconds > 0) - result += "
Retractions: " + base.printDurationPerFeature["retract"].getDisplayString(UM.DurationFormat.Short) - if(base.printDurationPerFeature["none"] && base.printDurationPerFeature["none"].totalSeconds > 0) - result += "
Other: " + base.printDurationPerFeature["none"].getDisplayString(UM.DurationFormat.Short) + for(var feature in order) + { + feature = order[feature]; + if(base.printDurationPerFeature[feature] && base.printDurationPerFeature[feature].totalSeconds > 0) + { + result += "
" + visible_names[feature] + ": " + base.printDurationPerFeature[feature].getDisplayString(UM.DurationFormat.Short); + } + } + result = result.replace(/^\/, ""); // remove newline before first item return result; } width: childrenRect.width From e9d70a8a70290d7c5af0b60a430c39765f68f9c5 Mon Sep 17 00:00:00 2001 From: 14bitVoid <14bitvoid@protonmail.com> Date: Fri, 5 May 2017 02:36:22 +0200 Subject: [PATCH 009/125] Translate features for time estimates --- resources/qml/JobSpecs.qml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 849d9f43da..8e89dc6dbc 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -176,16 +176,16 @@ Item { text: { var order = ["inset_0", "inset_x", "skin", "infill", "support_infill", "support_interface", "support", "travel", "retract", "none"]; var visible_names = { - "inset_0": "Outer Wall", - "inset_x": "Inner Walls", - "skin": "Skin", - "infill": "Infill", - "support_infill": "Support", - "support_interface": "Support Interface", - "support": "Helper Structures", - "travel": "Travel", - "retract": "Retractions", - "none": "Other" + "inset_0": catalog.i18nc("@tooltip", "Outer Wall"), + "inset_x": catalog.i18nc("@tooltip", "Inner Walls"), + "skin": catalog.i18nc("@tooltip", "Skin"), + "infill": catalog.i18nc("@tooltip", "Infill"), + "support_infill": catalog.i18nc("@tooltip", "Support"), + "support_interface": catalog.i18nc("@tooltip", "Support Interface"), + "support": catalog.i18nc("@tooltip", "Helper Structures"), + "travel": catalog.i18nc("@tooltip", "Travel"), + "retract": catalog.i18nc("@tooltip", "Retractions"), + "none": catalog.i18nc("@tooltip", "Other") }; var result = ""; for(var feature in order) From df0a971326ce8589ce1fdd07f5ace03d68c4f875 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 5 May 2017 16:59:35 +0200 Subject: [PATCH 010/125] Improve tooltip wording for gradual infill button Contributes to issue CURA-3732. --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index eaa303819f..7dd7c9e25d 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -222,7 +222,7 @@ Item percentage: 90, steps: 5, infill_layer_height: 1.5, - text: catalog.i18nc("@label", "This will gradually fill your model towards the top"), + text: catalog.i18nc("@label", "This will gradually increase the amount of infill towards the top"), icon: "gradual" }) } From ad1b1e04555f9b563968ad866ace615a82c00a27 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 5 May 2017 17:13:32 +0200 Subject: [PATCH 011/125] Detect whether the current infill is gradual And highlight the correct infill button in that case. Contributes to issue CURA-3732. --- resources/qml/SidebarSimple.qml | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 7dd7c9e25d..683b5eb716 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -64,10 +64,11 @@ Item id: infillListView property int activeIndex: { - var density = parseInt(infillDensity.properties.value) + var density = parseInt(infillDensity.properties.value); + var steps = parseInt(infillSteps.properties.value); for(var i = 0; i < infillModel.count; ++i) { - if(density > infillModel.get(i).percentageMin && density <= infillModel.get(i).percentageMax ) + if(density > infillModel.get(i).percentageMin && density <= infillModel.get(i).percentageMax && steps > infillModel.get(i).stepsMin && steps <= infillModel.get(i).stepsMax) { return i; } @@ -187,6 +188,8 @@ Item steps: 0, percentageMin: -1, percentageMax: 0, + stepsMin: -1, + stepsMax: 0, text: catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength"), icon: "hollow" }) @@ -196,6 +199,8 @@ Item steps: 0, percentageMin: 0, percentageMax: 30, + stepsMin: -1, + stepsMax: 0, text: catalog.i18nc("@label", "Light (20%) infill will give your model an average strength"), icon: "sparse" }) @@ -205,6 +210,8 @@ Item steps: 0, percentageMin: 30, percentageMax: 70, + stepsMin: -1, + stepsMax: 0, text: catalog.i18nc("@label", "Dense (50%) infill will give your model an above average strength"), icon: "dense" }) @@ -213,7 +220,9 @@ Item percentage: 100, steps: 0, percentageMin: 70, - percentageMax: 100, + percentageMax: 9999999999, + stepsMin: -1, + stepsMax: 0, text: catalog.i18nc("@label", "Solid (100%) infill will make your model completely solid"), icon: "solid" }) @@ -221,6 +230,10 @@ Item name: catalog.i18nc("@label", "Gradual"), percentage: 90, steps: 5, + percentageMin: 0, + percentageMax: 9999999999, + stepsMin: 0, + stepsMax: 9999999999, infill_layer_height: 1.5, text: catalog.i18nc("@label", "This will gradually increase the amount of infill towards the top"), icon: "gradual" @@ -511,6 +524,16 @@ Item storeIndex: 0 } + UM.SettingPropertyProvider + { + id: infillSteps + + containerStackId: Cura.MachineManager.activeStackId + key: "gradual_infill_steps" + watchedProperties: [ "value" ] + storeIndex: 0 + } + UM.SettingPropertyProvider { id: platformAdhesionType From fc1a5e89c3621e98d6267e094d833d95b92c9861 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 5 May 2017 17:16:18 +0200 Subject: [PATCH 012/125] Change gradual infill upon clicking infill buttons It sets the gradual infill to the value stored in the listmodel. Contributes to issue CURA-3732. --- resources/qml/SidebarSimple.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 683b5eb716..8066e2665a 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -152,6 +152,7 @@ Item if (infillListView.activeIndex != index) { infillDensity.setPropertyValue("value", model.percentage) + infillSteps.setPropertyValue("value", model.steps) } } onEntered: From 6b74b0d49998d8fee7c00f2996b77c4ad4b46f55 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 5 May 2017 17:25:34 +0200 Subject: [PATCH 013/125] Set default gradual infill step height to 1.5mm All of the profiles currently in Cura that set the gradual infill steps also set the step height (to 3 to 5 layer heights). I'd have chosen 4 layer heights as default based on that, but our material experts say that 1.5mm is about right for most models. Contributes to issue CURA-3732. --- 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 99cfede396..ecebee13fc 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1346,7 +1346,7 @@ "description": "The height of infill of a given density before switching to half the density.", "unit": "mm", "type": "float", - "default_value": 5.0, + "default_value": 1.5, "minimum_value": "0.0001", "minimum_value_warning": "3 * resolveOrValue('layer_height')", "maximum_value_warning": "100", From 288781915381549e8e158293064ea3245196b175 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 9 May 2017 10:14:43 +0200 Subject: [PATCH 014/125] Only enable "prime_blob_enable" for UM3 CURA-3634 --- resources/definitions/fdmprinter.def.json | 3 ++- resources/definitions/ultimaker3.def.json | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 3b25f44c10..c66c98119e 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3594,7 +3594,8 @@ "resolve": "any(extruderValues('prime_blob_enable'))", "default_value": true, "settable_per_mesh": false, - "settable_per_extruder": true + "settable_per_extruder": true, + "enabled": false }, "extruder_prime_pos_x": { diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index e17316a80b..c4e70899f2 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -73,6 +73,8 @@ "prime_tower_position_y": { "default_value": 178 }, "prime_tower_wipe_enabled": { "default_value": false }, + "prime_blob_enable": { "enabled": true }, + "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, From 7632b9df79ef992af3f2c04293c29819db1fb74f Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 9 May 2017 10:27:50 +0200 Subject: [PATCH 015/125] Removed unused connection --- plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index c3c7249155..3e78670e02 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -141,14 +141,6 @@ Item { storeIndex: 0 removeUnusedValue: false } - - // If the extruder by which the object needs to be printed is changed, ensure that the - // display is also notified of the fact. - Connections - { - target: extruderSelector - onActivated: provider.forcePropertiesChanged() - } } } } From 36dedabd11a36bd40669fbcf3b0e1f820c47acf1 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 9 May 2017 11:47:55 +0200 Subject: [PATCH 016/125] Fix DPI issue with DiscardOrKeepProfileChangesDialog --- .../qml/DiscardOrKeepProfileChangesDialog.qml | 194 +++++++++--------- 1 file changed, 100 insertions(+), 94 deletions(-) diff --git a/resources/qml/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/DiscardOrKeepProfileChangesDialog.qml index 4233bb9e18..06bdb098a0 100644 --- a/resources/qml/DiscardOrKeepProfileChangesDialog.qml +++ b/resources/qml/DiscardOrKeepProfileChangesDialog.qml @@ -36,9 +36,14 @@ UM.Dialog } } - Column + Row { - anchors.fill: parent + id: infoTextRow + height: childrenRect.height + anchors.margins: UM.Theme.getSize("default_margin").width + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top spacing: UM.Theme.getSize("default_margin").width UM.I18nCatalog @@ -47,28 +52,25 @@ UM.Dialog name: "cura" } - Row + Label { - height: childrenRect.height + text: catalog.i18nc("@text:window", "You have customized some profile settings.\nWould you like to keep or discard those settings?") anchors.margins: UM.Theme.getSize("default_margin").width - anchors.left: parent.left - anchors.right: parent.right - spacing: UM.Theme.getSize("default_margin").width - - Label - { - text: catalog.i18nc("@text:window", "You have customized some profile settings.\nWould you like to keep or discard those settings?") - anchors.margins: UM.Theme.getSize("default_margin").width - font: UM.Theme.getFont("default") - wrapMode: Text.WordWrap - } + font: UM.Theme.getFont("default") + wrapMode: Text.WordWrap } + } + Item + { + anchors.margins: UM.Theme.getSize("default_margin").width + anchors.top: infoTextRow.bottom + anchors.bottom: optionRow.top + anchors.left: parent.left + anchors.right: parent.right TableView { - anchors.margins: UM.Theme.getSize("default_margin").width - anchors.left: parent.left - anchors.right: parent.right + anchors.fill: parent height: base.height - 150 * Screen.devicePixelRatio id: tableView Component @@ -132,92 +134,96 @@ UM.Dialog model: base.changesModel } + } - Item + Item + { + id: optionRow + anchors.bottom: buttonsRow.top + anchors.right: parent.right + anchors.left: parent.left + anchors.margins: UM.Theme.getSize("default_margin").width + height: childrenRect.height + + ComboBox { - anchors.right: parent.right - anchors.left: parent.left - anchors.margins: UM.Theme.getSize("default_margin").width - height:childrenRect.height + id: discardOrKeepProfileChangesDropDownButton + width: 300 - ComboBox + model: ListModel { - id: discardOrKeepProfileChangesDropDownButton - width: 300 + id: discardOrKeepProfileListModel - model: ListModel - { - id: discardOrKeepProfileListModel - - Component.onCompleted: { - append({ text: catalog.i18nc("@option:discardOrKeep", "Always ask me this"), code: "always_ask" }) - append({ text: catalog.i18nc("@option:discardOrKeep", "Discard and never ask again"), code: "always_discard" }) - append({ text: catalog.i18nc("@option:discardOrKeep", "Keep and never ask again"), code: "always_keep" }) - } - } - - onActivated: - { - var code = model.get(index).code; - UM.Preferences.setValue("cura/choice_on_profile_override", code); - - if (code == "always_keep") { - keepButton.enabled = true; - discardButton.enabled = false; - } - else if (code == "always_discard") { - keepButton.enabled = false; - discardButton.enabled = true; - } - else { - keepButton.enabled = true; - discardButton.enabled = true; - } - } - } - } - - Item - { - anchors.right: parent.right - anchors.left: parent.left - anchors.margins: UM.Theme.getSize("default_margin").width - height: childrenRect.height - - Button - { - id: discardButton - text: catalog.i18nc("@action:button", "Discard"); - anchors.right: parent.right - onClicked: - { - CuraApplication.discardOrKeepProfileChangesClosed("discard") - base.hide() - } - isDefault: true - } - - Button - { - id: keepButton - text: catalog.i18nc("@action:button", "Keep"); - anchors.right: discardButton.left - anchors.rightMargin: UM.Theme.getSize("default_margin").width - onClicked: - { - CuraApplication.discardOrKeepProfileChangesClosed("keep") - base.hide() + Component.onCompleted: { + append({ text: catalog.i18nc("@option:discardOrKeep", "Always ask me this"), code: "always_ask" }) + append({ text: catalog.i18nc("@option:discardOrKeep", "Discard and never ask again"), code: "always_discard" }) + append({ text: catalog.i18nc("@option:discardOrKeep", "Keep and never ask again"), code: "always_keep" }) } } - Button + onActivated: { - id: createNewProfileButton - text: catalog.i18nc("@action:button", "Create New Profile"); - anchors.left: parent.left - action: Cura.Actions.addProfile - onClicked: base.hide() + var code = model.get(index).code; + UM.Preferences.setValue("cura/choice_on_profile_override", code); + + if (code == "always_keep") { + keepButton.enabled = true; + discardButton.enabled = false; + } + else if (code == "always_discard") { + keepButton.enabled = false; + discardButton.enabled = true; + } + else { + keepButton.enabled = true; + discardButton.enabled = true; + } } } } + + Item + { + id: buttonsRow + anchors.bottom: parent.bottom + anchors.right: parent.right + anchors.left: parent.left + anchors.margins: UM.Theme.getSize("default_margin").width + height: childrenRect.height + + Button + { + id: discardButton + text: catalog.i18nc("@action:button", "Discard"); + anchors.right: parent.right + onClicked: + { + CuraApplication.discardOrKeepProfileChangesClosed("discard") + base.hide() + } + isDefault: true + } + + Button + { + id: keepButton + text: catalog.i18nc("@action:button", "Keep"); + anchors.right: discardButton.left + anchors.rightMargin: UM.Theme.getSize("default_margin").width + onClicked: + { + CuraApplication.discardOrKeepProfileChangesClosed("keep") + base.hide() + } + } + + Button + { + id: createNewProfileButton + text: catalog.i18nc("@action:button", "Create New Profile"); + anchors.left: parent.left + action: Cura.Actions.addProfile + onClicked: base.hide() + } + } } \ No newline at end of file From 19ee790cd7cdf10706aeb13bfb985fc12c39775c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 9 May 2017 12:05:01 +0200 Subject: [PATCH 017/125] Remove device pixel ratio from DiscardOrKeepProfileChangesDialog --- resources/qml/DiscardOrKeepProfileChangesDialog.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/qml/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/DiscardOrKeepProfileChangesDialog.qml index 06bdb098a0..1cdde17840 100644 --- a/resources/qml/DiscardOrKeepProfileChangesDialog.qml +++ b/resources/qml/DiscardOrKeepProfileChangesDialog.qml @@ -14,8 +14,8 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Discard or Keep changes") - width: 800 * Screen.devicePixelRatio - height: 400 * Screen.devicePixelRatio + width: 800 + height: 400 property var changesModel: Cura.UserChangesModel{ id: userChangesModel} onVisibilityChanged: { @@ -71,7 +71,7 @@ UM.Dialog TableView { anchors.fill: parent - height: base.height - 150 * Screen.devicePixelRatio + height: base.height - 150 id: tableView Component { From 209822d0fca6cad1364945c963355530ae757097 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 9 May 2017 12:59:16 +0200 Subject: [PATCH 018/125] Fix unit test. Related to CURA-3757 --- tests/Settings/TestGlobalStack.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) mode change 100644 => 100755 tests/Settings/TestGlobalStack.py diff --git a/tests/Settings/TestGlobalStack.py b/tests/Settings/TestGlobalStack.py old mode 100644 new mode 100755 index 539de4929e..1eb3c43746 --- a/tests/Settings/TestGlobalStack.py +++ b/tests/Settings/TestGlobalStack.py @@ -78,9 +78,10 @@ def test_addExtruder(global_stack): global_stack.addExtruder(second_extruder) assert len(global_stack.extruders) == 2 assert global_stack.extruders[1] == second_extruder - with unittest.mock.patch("cura.Settings.CuraContainerStack.DefinitionContainer", unittest.mock.MagicMock): - with pytest.raises(TooManyExtrudersError): #Should be limited to 2 extruders because of machine_extruder_count. - global_stack.addExtruder(unittest.mock.MagicMock()) + # Disabled for now for Custom FDM Printer + # with unittest.mock.patch("cura.Settings.CuraContainerStack.DefinitionContainer", unittest.mock.MagicMock): + # with pytest.raises(TooManyExtrudersError): #Should be limited to 2 extruders because of machine_extruder_count. + # global_stack.addExtruder(unittest.mock.MagicMock()) assert len(global_stack.extruders) == 2 #Didn't add the faulty extruder. #Tests setting user changes profiles to invalid containers. From 53141303d2367539ee38485fadc4858b2c971dbd Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 5 May 2017 14:01:08 +0200 Subject: [PATCH 019/125] WIP: Fix project loading CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 161 ++++++++++++++++---- 1 file changed, 131 insertions(+), 30 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index a0ce679464..6551648fae 100644 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -15,6 +15,8 @@ from .WorkspaceDialog import WorkspaceDialog import xml.etree.ElementTree as ET from cura.Settings.ExtruderManager import ExtruderManager +from cura.Settings.ExtruderStack import ExtruderStack +from cura.Settings.GlobalStack import GlobalStack import zipfile import io @@ -35,6 +37,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._material_container_suffix = None # We have to wait until all other plugins are loaded before we can set it self._instance_container_suffix = ContainerRegistry.getMimeTypeForContainer(InstanceContainer).preferredSuffix self._container_stack_suffix = ContainerRegistry.getMimeTypeForContainer(ContainerStack).preferredSuffix + self._extruder_stack_suffix = ContainerRegistry.getMimeTypeForContainer(ExtruderStack).preferredSuffix + self._global_stack_suffix = ContainerRegistry.getMimeTypeForContainer(GlobalStack).preferredSuffix self._resolve_strategies = {} @@ -47,6 +51,35 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._id_mapping[old_id] = self._container_registry.uniqueName(old_id) return self._id_mapping[old_id] + ## Separates the given file list into a list of GlobalStack files and a list of ExtruderStack files. + # + # In old versions, extruder stack files have the same suffix as container stack files ".stack.cfg". + # + def _determineGlobalAndExtruderStackFiles(self, project_file_name, file_list): + archive = zipfile.ZipFile(project_file_name, "r") + + global_stack_file_list = [name for name in file_list if name.endswith(self._global_stack_suffix)] + extruder_stack_file_list = [name for name in file_list if name.endswith(self._extruder_stack_suffix)] + + # separate container stack files and extruder stack files + files_to_determine = [name for name in file_list if name.endswith(self._container_stack_suffix)] + for file_name in files_to_determine: + container_id = self._stripFileToId(file_name) + stack = ContainerStack(container_id) + # Deserialize stack by converting read data from bytes to string + stack.deserialize(archive.open(file_name).read().decode("utf-8"), connect_signals=False) + + stack_type = stack.getMetaDataEntry("type") + if stack_type == "extruder_train": + extruder_stack_file_list.append(file_name) + elif stack_type == "machine": + global_stack_file_list.append(file_name) + else: + Logger.log("w", "Unknown container stack type '%s' from %s in %s", + stack_type, file_name, project_file_name) + + return global_stack_file_list, extruder_stack_file_list + def preRead(self, file_name, show_dialog=True, *args, **kwargs): self._3mf_mesh_reader = Application.getInstance().getMeshFileHandler().getReaderForFile(file_name) if self._3mf_mesh_reader and self._3mf_mesh_reader.preRead(file_name) == WorkspaceReader.PreReadResult.accepted: @@ -63,23 +96,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Check if there are any conflicts, so we can ask the user. archive = zipfile.ZipFile(file_name, "r") cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")] - container_stack_files = [name for name in cura_file_names if name.endswith(self._container_stack_suffix)] - self._resolve_strategies = {"machine": None, "quality_changes": None, "material": None} - machine_conflict = False - quality_changes_conflict = False - for container_stack_file in container_stack_files: - container_id = self._stripFileToId(container_stack_file) - serialized = archive.open(container_stack_file).read().decode("utf-8") - if machine_name == "": - machine_name = self._getMachineNameFromSerializedStack(serialized) - stacks = self._container_registry.findContainerStacks(id=container_id) - if stacks: - # Check if there are any changes at all in any of the container stacks. - id_list = self._getContainerIdListFromSerialized(serialized) - for index, container_id in enumerate(id_list): - if stacks[0].getContainer(index).getId() != container_id: - machine_conflict = True - Job.yieldThread() + + # A few lists of containers in this project files. + # When loading the global stack file, it may be associated with those containers, which may or may not be + # in Cura already, so we need to provide them as alternative search lists. + definition_container_list = [] + instance_container_list = [] + material_container_list = [] definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] for definition_container_file in definition_container_files: @@ -93,6 +116,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): else: definition_container = definitions[0] + definition_container_list.append(definition_container) + if definition_container.getMetaDataEntry("type") != "extruder": machine_type = definition_container.getName() variant_type_name = definition_container.getMetaDataEntry("variants_name", variant_type_name) @@ -131,6 +156,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Deserialize InstanceContainer by converting read data from bytes to string instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8")) + + instance_container_list.append(instance_container) + container_type = instance_container.getMetaDataEntry("type") if container_type == "quality_changes": quality_name = instance_container.getName() @@ -151,6 +179,27 @@ class ThreeMFWorkspaceReader(WorkspaceReader): num_user_settings += len(instance_container._instances) Job.yieldThread() + + # Determine ContainerStack files and ExtruderStack files + container_stack_files, extruder_stack_files = self._determineGlobalAndExtruderStackFiles( + file_name, cura_file_names) + self._resolve_strategies = {"machine": None, "quality_changes": None, "material": None} + machine_conflict = False + quality_changes_conflict = False + for container_stack_file in container_stack_files + extruder_stack_files: + container_id = self._stripFileToId(container_stack_file) + serialized = archive.open(container_stack_file).read().decode("utf-8") + if machine_name == "": + machine_name = self._getMachineNameFromSerializedStack(serialized) + stacks = self._container_registry.findContainerStacks(id=container_id) + if stacks: + # Check if there are any changes at all in any of the container stacks. + id_list = self._getContainerIdListFromSerialized(serialized) + for index, container_id in enumerate(id_list): + if stacks[0].getContainer(index).getId() != container_id: + machine_conflict = True + Job.yieldThread() + num_visible_settings = 0 try: temp_preferences = Preferences() @@ -336,10 +385,54 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Get the stack(s) saved in the workspace. Logger.log("d", "Workspace loading is checking stacks containers...") - container_stack_files = [name for name in cura_file_names if name.endswith(self._container_stack_suffix)] + container_stack_files, extruder_stack_files = self._determineGlobalAndExtruderStackFiles(file_name, + cura_file_names) + global_stack = None extruder_stacks = [] + extruder_stacks_added = [] container_stacks_added = [] + + # load extruder stack files + try: + for extruder_stack_file in extruder_stack_files: + container_id = self._stripFileToId(extruder_stack_file) + + container_stacks = self._container_registry.findContainerStacks(id=container_id) + if container_stacks: + # this container stack already exists, try to resolve + stack = container_stacks[0] + if self._resolve_strategies["machine"] == "override": + pass # do nothing + elif self._resolve_strategies["machine"] == "new": + # create a new extruder stack from this one + new_id = self.getNewId(container_id) + stack = ExtruderStack(new_id) + stack.deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) + + # Ensure a unique ID and name + stack._id = new_id + + self._container_registry.addContainer(stack) + extruder_stacks_added.append(stack) + else: + # container not found, create a new one + stack = ExtruderStack(container_id) + stack.deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) + self._container_registry.addContainer(stack) + extruder_stacks_added.append(stack) + + extruder_stacks.append(stack) + + except: + Logger.logException("w", "We failed to serialize the stack. Trying to clean up.") + # Something went really wrong. Try to remove any data that we added. + for container in extruder_stacks: + self._container_registry.removeContainer(container.getId()) + + return None + + # load global stack file try: for container_stack_file in container_stack_files: container_id = self._stripFileToId(container_stack_file) @@ -350,7 +443,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): stack = container_stacks[0] if self._resolve_strategies["machine"] == "override": # TODO: HACK - # There is a machine, check if it has authenticationd data. If so, keep that data. + # There is a machine, check if it has authentication data. If so, keep that data. network_authentication_id = container_stacks[0].getMetaDataEntry("network_authentication_id") network_authentication_key = container_stacks[0].getMetaDataEntry("network_authentication_key") container_stacks[0].deserialize(archive.open(container_stack_file).read().decode("utf-8")) @@ -360,7 +453,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): container_stacks[0].addMetaDataEntry("network_authentication_key", network_authentication_key) elif self._resolve_strategies["machine"] == "new": new_id = self.getNewId(container_id) - stack = ContainerStack(new_id) + stack = GlobalStack(new_id) stack.deserialize(archive.open(container_stack_file).read().decode("utf-8")) # Ensure a unique ID and name @@ -371,33 +464,33 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if stack.getMetaDataEntry("machine", None): stack.setMetaDataEntry("machine", self.getNewId(stack.getMetaDataEntry("machine"))) - if stack.getMetaDataEntry("type") != "extruder_train": - # Only machines need a new name, stacks may be non-unique - stack.setName(self._container_registry.uniqueName(stack.getName())) + # Only machines need a new name, stacks may be non-unique + stack.setName(self._container_registry.uniqueName(stack.getName())) container_stacks_added.append(stack) self._container_registry.addContainer(stack) else: Logger.log("w", "Resolve strategy of %s for machine is not supported", self._resolve_strategies["machine"]) else: - stack = ContainerStack(container_id) + # no existing container stack, so we create a new one + stack = GlobalStack(container_id) # Deserialize stack by converting read data from bytes to string stack.deserialize(archive.open(container_stack_file).read().decode("utf-8")) container_stacks_added.append(stack) self._container_registry.addContainer(stack) - if stack.getMetaDataEntry("type") == "extruder_train": - extruder_stacks.append(stack) - else: - global_stack = stack + global_stack = stack Job.yieldThread() except: Logger.logException("w", "We failed to serialize the stack. Trying to clean up.") # Something went really wrong. Try to remove any data that we added. for container in containers_to_add: - self._container_registry.getInstance().removeContainer(container.getId()) + self._container_registry.removeContainer(container.getId()) for container in container_stacks_added: - self._container_registry.getInstance().removeContainer(container.getId()) + self._container_registry.removeContainer(container.getId()) + + for container in extruder_stacks_added: + self._container_registry.removeContainer(container.getId()) return None @@ -466,6 +559,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Notify everything/one that is to notify about changes. global_stack.containersChanged.emit(global_stack.getTop()) + # if we are reusing an existing global stack, it can already have extruders associated, so we need to remove + # them first + if global_stack.extruders: + old_extruder_stacks = global_stack.extruders + for extruder_stack in old_extruder_stacks: + self._container_registry.removeContainer(extruder_stack) + global_stack._extruders = [] + for stack in extruder_stacks: stack.setNextStack(global_stack) stack.containersChanged.emit(stack.getTop()) From 61f7b6aa689cb925d6148ed967cb5762986e8f09 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 8 May 2017 10:42:52 +0200 Subject: [PATCH 020/125] Add spaces around binary operator According to our code style. Contributes to issue CURA-3756. --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 6551648fae..9ec711697e 100644 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -191,7 +191,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): serialized = archive.open(container_stack_file).read().decode("utf-8") if machine_name == "": machine_name = self._getMachineNameFromSerializedStack(serialized) - stacks = self._container_registry.findContainerStacks(id=container_id) + stacks = self._container_registry.findContainerStacks(id = container_id) if stacks: # Check if there are any changes at all in any of the container stacks. id_list = self._getContainerIdListFromSerialized(serialized) From 9c747733c498131f19b489b5c52f8cacc04155e5 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 8 May 2017 11:48:25 +0200 Subject: [PATCH 021/125] Project Reader: Use "." for profile type detection CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 9ec711697e..daa49e5f95 100644 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -33,12 +33,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog = WorkspaceDialog() self._3mf_mesh_reader = None self._container_registry = ContainerRegistry.getInstance() - self._definition_container_suffix = ContainerRegistry.getMimeTypeForContainer(DefinitionContainer).preferredSuffix + + # suffixes registered with the MineTypes don't start with a dot '.' + self._definition_container_suffix = "." + ContainerRegistry.getMimeTypeForContainer(DefinitionContainer).preferredSuffix self._material_container_suffix = None # We have to wait until all other plugins are loaded before we can set it - self._instance_container_suffix = ContainerRegistry.getMimeTypeForContainer(InstanceContainer).preferredSuffix - self._container_stack_suffix = ContainerRegistry.getMimeTypeForContainer(ContainerStack).preferredSuffix - self._extruder_stack_suffix = ContainerRegistry.getMimeTypeForContainer(ExtruderStack).preferredSuffix - self._global_stack_suffix = ContainerRegistry.getMimeTypeForContainer(GlobalStack).preferredSuffix + self._instance_container_suffix = "." + ContainerRegistry.getMimeTypeForContainer(InstanceContainer).preferredSuffix + self._container_stack_suffix = "." + ContainerRegistry.getMimeTypeForContainer(ContainerStack).preferredSuffix + self._extruder_stack_suffix = "." + ContainerRegistry.getMimeTypeForContainer(ExtruderStack).preferredSuffix + self._global_stack_suffix = "." + ContainerRegistry.getMimeTypeForContainer(GlobalStack).preferredSuffix self._resolve_strategies = {} From 3e6d4b92304f878f8ede375499b02e55fc0ad60b Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 8 May 2017 11:54:39 +0200 Subject: [PATCH 022/125] document why no signals connecting in project file pre-read CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index daa49e5f95..ebb6e8ef17 100644 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -69,6 +69,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): container_id = self._stripFileToId(file_name) stack = ContainerStack(container_id) # Deserialize stack by converting read data from bytes to string + # + # NOTE: We do not connect the signals here is because all deserialized stacks here are NOT registered + # in the ContainerRegistry. So, some stacks from the profile won't be found in the ContainerRegistry, + # and thus failing the signal connecting. + # stack.deserialize(archive.open(file_name).read().decode("utf-8"), connect_signals=False) stack_type = stack.getMetaDataEntry("type") From 711b493ebfa74edf33a2c238f0814893c3233e90 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 8 May 2017 16:22:14 +0200 Subject: [PATCH 023/125] Fix code style --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index ebb6e8ef17..5febac0f36 100644 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -187,7 +187,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Job.yieldThread() - # Determine ContainerStack files and ExtruderStack files + # Load ContainerStack files and ExtruderStack files container_stack_files, extruder_stack_files = self._determineGlobalAndExtruderStackFiles( file_name, cura_file_names) self._resolve_strategies = {"machine": None, "quality_changes": None, "material": None} @@ -296,7 +296,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] for definition_container_file in definition_container_files: container_id = self._stripFileToId(definition_container_file) - definitions = self._container_registry.findDefinitionContainers(id=container_id) + definitions = self._container_registry.findDefinitionContainers(id = container_id) if not definitions: definition_container = DefinitionContainer(container_id) definition_container.deserialize(archive.open(definition_container_file).read().decode("utf-8")) @@ -313,7 +313,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): material_container_files = [name for name in cura_file_names if name.endswith(self._material_container_suffix)] for material_container_file in material_container_files: container_id = self._stripFileToId(material_container_file) - materials = self._container_registry.findInstanceContainers(id=container_id) + materials = self._container_registry.findInstanceContainers(id = container_id) if not materials: material_container = xml_material_profile(container_id) material_container.deserialize(archive.open(material_container_file).read().decode("utf-8")) @@ -346,7 +346,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Job.yieldThread() if container_type == "user": # Check if quality changes already exists. - user_containers = self._container_registry.findInstanceContainers(id=container_id) + user_containers = self._container_registry.findInstanceContainers(id = container_id) if not user_containers: containers_to_add.append(instance_container) else: @@ -405,7 +405,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): for extruder_stack_file in extruder_stack_files: container_id = self._stripFileToId(extruder_stack_file) - container_stacks = self._container_registry.findContainerStacks(id=container_id) + container_stacks = self._container_registry.findContainerStacks(id = container_id) if container_stacks: # this container stack already exists, try to resolve stack = container_stacks[0] @@ -445,7 +445,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): container_id = self._stripFileToId(container_stack_file) # Check if a stack by this ID already exists; - container_stacks = self._container_registry.findContainerStacks(id=container_id) + container_stacks = self._container_registry.findContainerStacks(id = container_id) if container_stacks: stack = container_stacks[0] if self._resolve_strategies["machine"] == "override": From 0d76ce72b0e99c85429c5758ca52419ca8ac6e2b Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 9 May 2017 11:00:01 +0200 Subject: [PATCH 024/125] Add comments CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 10 ++++++++++ 1 file changed, 10 insertions(+) mode change 100644 => 100755 plugins/3MFReader/ThreeMFWorkspaceReader.py diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py old mode 100644 new mode 100755 index 5febac0f36..75efa4442e --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -87,6 +87,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return global_stack_file_list, extruder_stack_file_list + ## read some info so we can make decisions + # \param file_name + # \param show_dialog In case we use preRead() to check if a file is a valid project file, we don't want to show a dialog. def preRead(self, file_name, show_dialog=True, *args, **kwargs): self._3mf_mesh_reader = Application.getInstance().getMeshFileHandler().getReaderForFile(file_name) if self._3mf_mesh_reader and self._3mf_mesh_reader.preRead(file_name) == WorkspaceReader.PreReadResult.accepted: @@ -255,6 +258,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return WorkspaceReader.PreReadResult.accepted + ## Read the project file + # Add all the definitions / materials / quality changes that do not exist yet. Then it loads + # all the stacks into the container registry. In some cases it will reuse the container for the global stack. + # It handles old style project files containing .stack.cfg as well as new style project files + # containing global.cfg / extruder.cfg + # + # \param file_name def read(self, file_name): archive = zipfile.ZipFile(file_name, "r") From acde348c6d315e75a492d4a5e2e7f8b8a94cadc2 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 9 May 2017 13:01:39 +0200 Subject: [PATCH 025/125] Use ConfigParser hack to replace connect_signals=False hack CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 23 +++++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 75efa4442e..75e80272fd 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -18,6 +18,7 @@ from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.ExtruderStack import ExtruderStack from cura.Settings.GlobalStack import GlobalStack +from configparser import ConfigParser import zipfile import io import configparser @@ -67,16 +68,20 @@ class ThreeMFWorkspaceReader(WorkspaceReader): files_to_determine = [name for name in file_list if name.endswith(self._container_stack_suffix)] for file_name in files_to_determine: container_id = self._stripFileToId(file_name) - stack = ContainerStack(container_id) - # Deserialize stack by converting read data from bytes to string - # - # NOTE: We do not connect the signals here is because all deserialized stacks here are NOT registered - # in the ContainerRegistry. So, some stacks from the profile won't be found in the ContainerRegistry, - # and thus failing the signal connecting. - # - stack.deserialize(archive.open(file_name).read().decode("utf-8"), connect_signals=False) + # FIXME: HACK! + # We need to know the type of the stack file, but we can only know it if we deserialize it. + # The default ContainerStack.deserialize() will connect signals, which is not desired in this case. + # Since we know that the stack files are INI files, so we directly use the ConfigParser to parse them. + serialized = archive.open(file_name).read().decode("utf-8") + stack_config = ConfigParser() + stack_config.read_string(serialized) - stack_type = stack.getMetaDataEntry("type") + # sanity check + if not stack_config.has_option("metadata", "type"): + Logger.log("e", "%s in %s doesn't seem to be valid stack file", file_name, project_file_name) + continue + + stack_type = stack_config.get("metadata", "type") if stack_type == "extruder_train": extruder_stack_file_list.append(file_name) elif stack_type == "machine": From 57e6c031aa958b0ceb40591797f4d436f8895c0d Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 9 May 2017 13:18:34 +0200 Subject: [PATCH 026/125] UM2Go no longer shows olson block dialog CURA-3742 --- resources/definitions/ultimaker2_go.def.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/definitions/ultimaker2_go.def.json b/resources/definitions/ultimaker2_go.def.json index 5d4c898ade..e679f25f40 100644 --- a/resources/definitions/ultimaker2_go.def.json +++ b/resources/definitions/ultimaker2_go.def.json @@ -13,6 +13,7 @@ "platform": "ultimaker2go_platform.obj", "platform_texture": "Ultimaker2Gobackplate.png", "platform_offset": [0, 0, 0], + "first_start_actions": [""], "supported_actions":["UpgradeFirmware"] }, From 5706a540d96e8c2b9b9109a118cb11e9064993b8 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 9 May 2017 13:39:04 +0200 Subject: [PATCH 027/125] Only set global stack in addMachine() if there was none --- cura/Settings/MachineManager.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 2e44a60deb..79b4a855f6 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -343,7 +343,9 @@ class MachineManager(QObject): def addMachine(self, name: str, definition_id: str) -> None: new_stack = CuraStackBuilder.createMachine(name, definition_id) if new_stack: - Application.getInstance().setGlobalContainerStack(new_stack) + # only set the global container stack if there was none + if self._global_container_stack is None: + Application.getInstance().setGlobalContainerStack(new_stack) else: Logger.log("w", "Failed creating a new machine!") From 40c9e45532e8f6d9faad14e42a4357c48f92fd7e Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 9 May 2017 14:01:37 +0200 Subject: [PATCH 028/125] Send specific signals for container changes if we know the type CURA-3780 --- cura/Settings/MachineManager.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 2e44a60deb..0d7004ea12 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -318,9 +318,17 @@ class MachineManager(QObject): def _onInstanceContainersChanged(self, container): container_type = container.getMetaDataEntry("type") - self.activeVariantChanged.emit() - self.activeMaterialChanged.emit() - self.activeQualityChanged.emit() + if container_type == "quality": + self.activeQualityChanged.emit() + elif container_type == "variant": + self.activeVariantChanged.emit() + elif container_type == "material": + self.activeMaterialChanged.emit() + else: + # We don't know which one it is, send all the signals + self.activeQualityChanged.emit() + self.activeVariantChanged.emit() + self.activeMaterialChanged.emit() self._updateStacksHaveErrors() From dfbd4107a4c81e518eebf24687a8091a59451c12 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 9 May 2017 14:38:20 +0200 Subject: [PATCH 029/125] Revert "Enable Support settings that are applicable to support meshes. CURA-2747" This reverts commit a5033bae54c8061eece264f6e272c8924284b3aa. --- resources/definitions/fdmprinter.def.json | 50 +++++++++++------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 7e545fe0ea..0bdb3a21d7 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2989,7 +2989,7 @@ "description": "The extruder train to use for printing the support. This is used in multi-extrusion.", "type": "extruder", "default_value": "0", - "enabled": "machine_extruder_count > 1", + "enabled": "support_enable and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, "children": { @@ -3000,7 +3000,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "machine_extruder_count > 1", + "enabled": "support_enable and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3011,7 +3011,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "machine_extruder_count > 1", + "enabled": "support_enable and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3022,7 +3022,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "machine_extruder_count > 1", + "enabled": "support_enable and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, "children": @@ -3034,7 +3034,7 @@ "type": "extruder", "default_value": "0", "value": "support_interface_extruder_nr", - "enabled": "machine_extruder_count > 1", + "enabled": "support_enable and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3045,7 +3045,7 @@ "type": "extruder", "default_value": "0", "value": "support_interface_extruder_nr", - "enabled": "machine_extruder_count > 1", + "enabled": "support_enable and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false } @@ -3098,7 +3098,7 @@ "zigzag": "Zig Zag" }, "default_value": "zigzag", - "enabled": true, + "enabled": "support_enable", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3109,7 +3109,7 @@ "description": "Connect the ZigZags. This will increase the strength of the zig zag support structure.", "type": "bool", "default_value": true, - "enabled": "support_pattern == 'zigzag'", + "enabled": "support_enable and (support_pattern == 'zigzag')", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3123,7 +3123,7 @@ "minimum_value": "0", "maximum_value_warning": "100", "default_value": 15, - "enabled": true, + "enabled": "support_enable", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3138,7 +3138,7 @@ "minimum_value": "0", "minimum_value_warning": "support_line_width", "default_value": 2.66, - "enabled": true, + "enabled": "support_enable", "value": "(support_line_width * 100) / support_infill_rate * (2 if support_pattern == 'grid' else (3 if support_pattern == 'triangles' else 1))", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, @@ -3291,7 +3291,7 @@ "type": "bool", "default_value": false, "limit_to_extruder": "support_interface_extruder_nr", - "enabled": true, + "enabled": "support_enable", "settable_per_mesh": true, "children": { @@ -3303,7 +3303,7 @@ "default_value": false, "value": "support_interface_enable", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": true, + "enabled": "support_enable", "settable_per_mesh": true }, "support_bottom_enable": @@ -3314,7 +3314,7 @@ "default_value": false, "value": "support_interface_enable", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": true, + "enabled": "support_enable", "settable_per_mesh": true } } @@ -3330,7 +3330,7 @@ "minimum_value_warning": "0.2 + resolveOrValue('layer_height')", "maximum_value_warning": "10", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable')", + "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", "settable_per_mesh": true, "children": { @@ -3346,7 +3346,7 @@ "maximum_value_warning": "10", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_height')", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable')", + "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", "settable_per_mesh": true }, "support_bottom_height": @@ -3361,7 +3361,7 @@ "minimum_value_warning": "min(0.2 + resolveOrValue('layer_height'), extruderValue(support_bottom_extruder_nr, 'support_bottom_stair_step_height'))", "maximum_value_warning": "10", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable')", + "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", "settable_per_mesh": true } } @@ -3375,7 +3375,7 @@ "minimum_value": "0", "maximum_value_warning": "support_interface_height", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable')", + "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", "settable_per_mesh": true }, "support_interface_density": @@ -3388,7 +3388,7 @@ "minimum_value": "0", "maximum_value_warning": "100", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable')", + "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -3403,7 +3403,7 @@ "minimum_value": "0", "maximum_value": "100", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable')", + "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -3419,7 +3419,7 @@ "minimum_value_warning": "support_roof_line_width - 0.0001", "value": "0 if support_roof_density == 0 else (support_roof_line_width * 100) / support_roof_density * (2 if support_roof_pattern == 'grid' else (3 if support_roof_pattern == 'triangles' else 1))", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable')", + "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", "settable_per_mesh": false, "settable_per_extruder": true } @@ -3435,7 +3435,7 @@ "minimum_value": "0", "maximum_value": "100", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable')", + "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -3451,7 +3451,7 @@ "minimum_value_warning": "support_bottom_line_width - 0.0001", "value": "0 if support_bottom_density == 0 else (support_bottom_line_width * 100) / support_bottom_density * (2 if support_bottom_pattern == 'grid' else (3 if support_bottom_pattern == 'triangles' else 1))", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable')", + "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", "settable_per_mesh": false, "settable_per_extruder": true } @@ -3475,7 +3475,7 @@ }, "default_value": "concentric", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable')", + "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -3497,7 +3497,7 @@ "default_value": "concentric", "value": "support_interface_pattern", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable')", + "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -3518,7 +3518,7 @@ "default_value": "concentric", "value": "support_interface_pattern", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable')", + "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", "settable_per_mesh": false, "settable_per_extruder": true } From 19bc6bb7106d47178572461b9bd71f508fc95541 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 9 May 2017 14:38:57 +0200 Subject: [PATCH 030/125] All error checks now use the timer instead of re-checking multiple times. This significantly speeds up all setting / container changes for multi extrusion machines CURA-3780 --- cura/Settings/CuraContainerStack.py | 3 ++- cura/Settings/MachineManager.py | 17 +++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index 6f475a5ff9..b76062b7aa 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -5,7 +5,8 @@ import os.path from typing import Any, Optional -from PyQt5.QtCore import pyqtProperty, pyqtSlot, pyqtSignal +from PyQt5.QtCore import pyqtProperty, pyqtSignal +from UM.FlameProfiler import pyqtSlot from UM.Decorators import override from UM.Logger import Logger diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index a8bd30a3bc..7e7ad07ff0 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -45,6 +45,11 @@ class MachineManager(QObject): self._active_container_stack = None # type: ContainerStack self._global_container_stack = None # type: ContainerStack + self._error_check_timer = QTimer() + self._error_check_timer.setInterval(250) + self._error_check_timer.setSingleShot(True) + self._error_check_timer.timeout.connect(self._updateStacksHaveErrors) + Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) ## When the global container is changed, active material probably needs to be updated. self.globalContainerChanged.connect(self.activeMaterialChanged) @@ -94,10 +99,7 @@ class MachineManager(QObject): self._material_incompatible_message = Message(catalog.i18nc("@info:status", "The selected material is incompatible with the selected machine or configuration.")) - self._error_check_timer = QTimer() - self._error_check_timer.setInterval(250) - self._error_check_timer.setSingleShot(True) - self._error_check_timer.timeout.connect(self._updateStacksHaveErrors) + globalContainerChanged = pyqtSignal() # Emitted whenever the global stack is changed (ie: when changing between printers, changing a global profile, but not when changing a value) activeMaterialChanged = pyqtSignal() @@ -290,8 +292,7 @@ class MachineManager(QObject): quality = self._global_container_stack.quality quality.nameChanged.connect(self._onQualityNameChanged) - - self._updateStacksHaveErrors() + self._error_check_timer.start() ## Update self._stacks_valid according to _checkStacksForErrors and emit if change. def _updateStacksHaveErrors(self): @@ -308,7 +309,7 @@ class MachineManager(QObject): if not self._active_container_stack: self._active_container_stack = self._global_container_stack - self._updateStacksHaveErrors() + self._error_check_timer.start() if old_active_container_stack != self._active_container_stack: # Many methods and properties related to the active quality actually depend @@ -330,7 +331,7 @@ class MachineManager(QObject): self.activeVariantChanged.emit() self.activeMaterialChanged.emit() - self._updateStacksHaveErrors() + self._error_check_timer.start() def _onPropertyChanged(self, key, property_name): if property_name == "value": From b4b5061e0eb71d8f18796241c23c8c8edf869e0b Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 9 May 2017 14:44:26 +0200 Subject: [PATCH 031/125] Visibility for smooth spiralize. CURA-3771 --- resources/definitions/fdmprinter.def.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 82e53ba88b..448dc1c166 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4595,7 +4595,8 @@ "label": "Smooth Spiralized Contours", "description": "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details.", "type": "bool", - "default_value": true + "default_value": true, + "enabled": "magic_spiralize" } } } From a2d32a6fc7dfe7c8445ab94cc214fc9bca152ab8 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 9 May 2017 14:45:39 +0200 Subject: [PATCH 032/125] Added bigflame to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index bb6bd49add..527e5dc049 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ plugins/X3GWriter plugins/FlatProfileExporter plugins/ProfileFlattener plugins/cura-god-mode-plugin +plugins/cura-big-flame-graph #Build stuff CMakeCache.txt From bcebf4d24c3e78cc79331be548fa6844ff7f8a5e Mon Sep 17 00:00:00 2001 From: Mark Date: Tue, 9 May 2017 14:53:26 +0200 Subject: [PATCH 033/125] A gradual infill icon untill we have a better one --- resources/themes/cura/icons/gradual.svg | 102 ++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 resources/themes/cura/icons/gradual.svg diff --git a/resources/themes/cura/icons/gradual.svg b/resources/themes/cura/icons/gradual.svg new file mode 100644 index 0000000000..ed7f301e18 --- /dev/null +++ b/resources/themes/cura/icons/gradual.svg @@ -0,0 +1,102 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + From c60fefc927d1767ccf045d4462299aee4df49737 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 9 May 2017 14:57:40 +0200 Subject: [PATCH 034/125] Add non-existing instance containers when opening a project file CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 75e80272fd..560ae76dda 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -67,7 +67,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # separate container stack files and extruder stack files files_to_determine = [name for name in file_list if name.endswith(self._container_stack_suffix)] for file_name in files_to_determine: - container_id = self._stripFileToId(file_name) # FIXME: HACK! # We need to know the type of the stack file, but we can only know it if we deserialize it. # The default ContainerStack.deserialize() will connect signals, which is not desired in this case. @@ -398,7 +397,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): pass quality_changes_instance_containers.append(instance_container) else: - continue + existing_container = self._container_registry.findInstanceContainers(id = container_id) + if not existing_container: + containers_to_add.append(instance_container) # Add all the containers right before we try to add / serialize the stack for container in containers_to_add: From 316f2bbdb517a565f55ffe3b02b13e5aee21ac79 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 09:49:33 +0200 Subject: [PATCH 035/125] Fixed switching g-code flavors with machineAction --- plugins/MachineSettingsAction/MachineSettingsAction.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 486ab25918..bfade90f2b 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -251,7 +251,7 @@ class MachineSettingsAction(MachineAction): if definition.getProperty("machine_gcode_flavor", "value") == "UltiGCode" and not definition.getMetaDataEntry("has_materials", False): has_materials = self._global_container_stack.getProperty("machine_gcode_flavor", "value") != "UltiGCode" - material_container = self._global_container_stack.findContainer({"type": "material"}) + material_container = self._global_container_stack.material material_index = self._global_container_stack.getContainerIndex(material_container) if has_materials: @@ -272,7 +272,6 @@ class MachineSettingsAction(MachineAction): if "has_materials" in self._global_container_stack.getMetaData(): self._global_container_stack.removeMetaDataEntry("has_materials") - empty_material = self._container_registry.findInstanceContainers(id = "empty_material")[0] - self._global_container_stack.replaceContainer(material_index, empty_material) + self._global_container_stack.material = ContainerRegistry.getInstance().getEmptyInstanceContainer() Application.getInstance().globalContainerStackChanged.emit() From 3d429e44aeb5e00cb6d5ded36104de322bd9ec9c Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 09:59:19 +0200 Subject: [PATCH 036/125] Updating extruders now also works with timer CURA-3780 --- cura/Settings/ExtrudersModel.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/cura/Settings/ExtrudersModel.py b/cura/Settings/ExtrudersModel.py index 74680bb293..e742ba4bd8 100644 --- a/cura/Settings/ExtrudersModel.py +++ b/cura/Settings/ExtrudersModel.py @@ -1,7 +1,7 @@ # Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. -from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty, pyqtSlot +from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty, QTimer import UM.Qt.ListModel from UM.Application import Application @@ -58,6 +58,11 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): self.addRoleName(self.MaterialRole, "material") self.addRoleName(self.VariantRole, "variant") + self._update_extruder_timer = QTimer() + self._update_extruder_timer.setInterval(250) + self._update_extruder_timer.setSingleShot(True) + self._update_extruder_timer.timeout.connect(self.__updateExtruders) + self._add_global = False self._simple_names = False @@ -118,10 +123,13 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): modelChanged = pyqtSignal() + def _updateExtruders(self): + self._update_extruder_timer.start() + ## Update the list of extruders. # # This should be called whenever the list of extruders changes. - def _updateExtruders(self): + def __updateExtruders(self): changed = False if self.rowCount() != 0: From 9a387f9ee2beb705afe959df92d405fc81720ccf Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 10:33:40 +0200 Subject: [PATCH 037/125] ReplaceQuality changes only emits signals if there was a change CURA-3780 --- cura/Settings/MachineManager.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 7e7ad07ff0..2207ee65dd 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -810,13 +810,13 @@ class MachineManager(QObject): # Quality profile come in two flavours: type=quality and type=quality_changes # If we found a quality_changes profile then look up its parent quality profile. container_type = containers[0].getMetaDataEntry("type") - quality_name = containers[0].getName() - quality_type = containers[0].getMetaDataEntry("quality_type") # Get quality container and optionally the quality_changes container. if container_type == "quality": + quality_type = containers[0].getMetaDataEntry("quality_type") new_quality_settings_list = self.determineQualityAndQualityChangesForQualityType(quality_type) elif container_type == "quality_changes": + quality_name = containers[0].getName() new_quality_settings_list = self._determineQualityAndQualityChangesForQualityChanges(quality_name) else: Logger.log("e", "Tried to set quality to a container that is not of the right type") @@ -952,12 +952,16 @@ class MachineManager(QObject): # Disconnect the signal handling from the old container. container_type = container.getMetaDataEntry("type") if container_type == "quality": + if stack.quality == container: + return # Nothing to do stack.quality.nameChanged.disconnect(self._onQualityNameChanged) stack.setQuality(container) stack.qualityChanges.nameChanged.connect(self._onQualityNameChanged) elif container_type == "quality_changes" or container_type is None: # If the container is an empty container, we need to change the quality_changes. # Quality can never be set to empty. + if stack.qualityChanges == container: + return # Nothing to do stack.qualityChanges.nameChanged.disconnect(self._onQualityNameChanged) stack.setQualityChanges(container) stack.qualityChanges.nameChanged.connect(self._onQualityNameChanged) From 42fc703516b97cc4508a19f67b2e0154c091a3e8 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 10:45:07 +0200 Subject: [PATCH 038/125] Added a few profiling decorators to expensive methods --- cura/Settings/ExtrudersModel.py | 3 ++- cura/Settings/MachineManager.py | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cura/Settings/ExtrudersModel.py b/cura/Settings/ExtrudersModel.py index e742ba4bd8..54bf0df3b6 100644 --- a/cura/Settings/ExtrudersModel.py +++ b/cura/Settings/ExtrudersModel.py @@ -5,7 +5,7 @@ from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty, QTimer import UM.Qt.ListModel from UM.Application import Application - +import UM.FlameProfiler from cura.Settings.ExtruderManager import ExtruderManager ## Model that holds extruders. @@ -129,6 +129,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): ## Update the list of extruders. # # This should be called whenever the list of extruders changes. + @UM.FlameProfiler.profile def __updateExtruders(self): changed = False diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 2207ee65dd..80e37fc7c5 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -20,6 +20,7 @@ from UM.Settings.SettingDefinition import SettingDefinition from UM.Settings.SettingFunction import SettingFunction from UM.Settings.Validator import ValidatorState from UM.Signal import postponeSignals +import UM.FlameProfiler from cura.QualityManager import QualityManager from cura.PrinterOutputDevice import PrinterOutputDevice @@ -855,6 +856,7 @@ class MachineManager(QObject): # # \param quality_name \type{str} the name of the quality. # \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes". + @UM.FlameProfiler.profile def determineQualityAndQualityChangesForQualityType(self, quality_type): quality_manager = QualityManager.getInstance() result = [] From b688178a2ea59115647837c857aa0a70c2f9efdc Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 10 May 2017 10:56:19 +0200 Subject: [PATCH 039/125] Fix one part of project load - update existing. CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 96 +++++++++++---------- 1 file changed, 49 insertions(+), 47 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 560ae76dda..c0c3493f71 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -89,7 +89,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Logger.log("w", "Unknown container stack type '%s' from %s in %s", stack_type, file_name, project_file_name) - return global_stack_file_list, extruder_stack_file_list + if len(global_stack_file_list) != 1: + raise RuntimeError("More than one global stack file found: [%s]" % str(global_stack_file_list)) + + return global_stack_file_list[0], extruder_stack_file_list ## read some info so we can make decisions # \param file_name @@ -195,12 +198,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Job.yieldThread() # Load ContainerStack files and ExtruderStack files - container_stack_files, extruder_stack_files = self._determineGlobalAndExtruderStackFiles( + global_stack_file, extruder_stack_files = self._determineGlobalAndExtruderStackFiles( file_name, cura_file_names) self._resolve_strategies = {"machine": None, "quality_changes": None, "material": None} machine_conflict = False quality_changes_conflict = False - for container_stack_file in container_stack_files + extruder_stack_files: + for container_stack_file in [global_stack_file] + extruder_stack_files: container_id = self._stripFileToId(container_stack_file) serialized = archive.open(container_stack_file).read().decode("utf-8") if machine_name == "": @@ -408,7 +411,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Get the stack(s) saved in the workspace. Logger.log("d", "Workspace loading is checking stacks containers...") - container_stack_files, extruder_stack_files = self._determineGlobalAndExtruderStackFiles(file_name, + global_stack_file, extruder_stack_files = self._determineGlobalAndExtruderStackFiles(file_name, cura_file_names) global_stack = None @@ -457,52 +460,52 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # load global stack file try: - for container_stack_file in container_stack_files: - container_id = self._stripFileToId(container_stack_file) + container_id = self._stripFileToId(global_stack_file) - # Check if a stack by this ID already exists; - container_stacks = self._container_registry.findContainerStacks(id = container_id) - if container_stacks: - stack = container_stacks[0] - if self._resolve_strategies["machine"] == "override": - # TODO: HACK - # There is a machine, check if it has authentication data. If so, keep that data. - network_authentication_id = container_stacks[0].getMetaDataEntry("network_authentication_id") - network_authentication_key = container_stacks[0].getMetaDataEntry("network_authentication_key") - container_stacks[0].deserialize(archive.open(container_stack_file).read().decode("utf-8")) - if network_authentication_id: - container_stacks[0].addMetaDataEntry("network_authentication_id", network_authentication_id) - if network_authentication_key: - container_stacks[0].addMetaDataEntry("network_authentication_key", network_authentication_key) - elif self._resolve_strategies["machine"] == "new": - new_id = self.getNewId(container_id) - stack = GlobalStack(new_id) - stack.deserialize(archive.open(container_stack_file).read().decode("utf-8")) + # Check if a stack by this ID already exists; + container_stacks = self._container_registry.findContainerStacks(id = container_id) + if container_stacks: + stack = container_stacks[0] - # Ensure a unique ID and name - stack._id = new_id + if self._resolve_strategies["machine"] == "override": + # TODO: HACK + # There is a machine, check if it has authentication data. If so, keep that data. + network_authentication_id = container_stacks[0].getMetaDataEntry("network_authentication_id") + network_authentication_key = container_stacks[0].getMetaDataEntry("network_authentication_key") + container_stacks[0].deserialize(archive.open(global_stack_file).read().decode("utf-8")) + if network_authentication_id: + container_stacks[0].addMetaDataEntry("network_authentication_id", network_authentication_id) + if network_authentication_key: + container_stacks[0].addMetaDataEntry("network_authentication_key", network_authentication_key) + elif self._resolve_strategies["machine"] == "new": + new_id = self.getNewId(container_id) + stack = GlobalStack(new_id) + stack.deserialize(archive.open(global_stack_file).read().decode("utf-8")) - # Extruder stacks are "bound" to a machine. If we add the machine as a new one, the id of the - # bound machine also needs to change. - if stack.getMetaDataEntry("machine", None): - stack.setMetaDataEntry("machine", self.getNewId(stack.getMetaDataEntry("machine"))) + # Ensure a unique ID and name + stack._id = new_id - # Only machines need a new name, stacks may be non-unique - stack.setName(self._container_registry.uniqueName(stack.getName())) - container_stacks_added.append(stack) - self._container_registry.addContainer(stack) - else: - Logger.log("w", "Resolve strategy of %s for machine is not supported", self._resolve_strategies["machine"]) - else: - # no existing container stack, so we create a new one - stack = GlobalStack(container_id) - # Deserialize stack by converting read data from bytes to string - stack.deserialize(archive.open(container_stack_file).read().decode("utf-8")) + # Extruder stacks are "bound" to a machine. If we add the machine as a new one, the id of the + # bound machine also needs to change. + if stack.getMetaDataEntry("machine", None): + stack.setMetaDataEntry("machine", self.getNewId(stack.getMetaDataEntry("machine"))) + + # Only machines need a new name, stacks may be non-unique + stack.setName(self._container_registry.uniqueName(stack.getName())) container_stacks_added.append(stack) self._container_registry.addContainer(stack) + else: + Logger.log("w", "Resolve strategy of %s for machine is not supported", self._resolve_strategies["machine"]) + else: + # no existing container stack, so we create a new one + stack = GlobalStack(container_id) + # Deserialize stack by converting read data from bytes to string + stack.deserialize(archive.open(global_stack_file).read().decode("utf-8")) + container_stacks_added.append(stack) + self._container_registry.addContainer(stack) - global_stack = stack - Job.yieldThread() + global_stack = stack + Job.yieldThread() except: Logger.logException("w", "We failed to serialize the stack. Trying to clean up.") # Something went really wrong. Try to remove any data that we added. @@ -585,10 +588,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # if we are reusing an existing global stack, it can already have extruders associated, so we need to remove # them first if global_stack.extruders: - old_extruder_stacks = global_stack.extruders - for extruder_stack in old_extruder_stacks: - self._container_registry.removeContainer(extruder_stack) - global_stack._extruders = [] + for extruder_stack in global_stack.extruders: + if extruder_stack not in extruder_stacks_added: # skip new ones + self._container_registry.removeContainer(extruder_stack.getId()) for stack in extruder_stacks: stack.setNextStack(global_stack) From 6d72f512a56ae615004e6626757a517c101217af Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 10 May 2017 10:57:37 +0200 Subject: [PATCH 040/125] Set prime tower size by default to 20 This was found by the materials team to be a better value. All UM3 profiles have 20 now. I've left the third-party machines intact which override the prime tower size but those that didn't override the prime tower size have their prime tower size altered as well. --- resources/definitions/fdmprinter.def.json | 2 +- resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg | 1 - .../ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg | 1 - resources/variants/ultimaker3_aa0.8.inst.cfg | 1 - resources/variants/ultimaker3_extended_aa0.8.inst.cfg | 1 - 28 files changed, 1 insertion(+), 28 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 448dc1c166..86280252da 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4216,7 +4216,7 @@ "type": "float", "unit": "mm", "enabled": "resolveOrValue('prime_tower_enable')", - "default_value": 15, + "default_value": 20, "resolve": "max(extruderValues('prime_tower_size'))", "minimum_value": "0", "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)", diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index 00d93f3575..2bc589ff18 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -15,7 +15,6 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature + 10 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 -prime_tower_size = 16 skin_overlap = 20 speed_print = 60 speed_layer_0 = 20 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index 066a044ee0..ebdf013d49 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -17,7 +17,6 @@ material_print_temperature = =default_material_print_temperature + 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 -prime_tower_size = 16 speed_print = 60 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 60) diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 850af33c27..b4c198229f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -17,7 +17,6 @@ material_standby_temperature = 100 material_print_temperature = =default_material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 -prime_tower_size = 16 speed_print = 50 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index 3793bf8b5e..250e77bf7e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -15,7 +15,6 @@ machine_nozzle_heat_up_speed = 1.5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 -prime_tower_size = 16 speed_print = 55 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 55) diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index ee03b6dbcf..8f37595632 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -29,7 +29,6 @@ material_print_temperature_layer_0 = =material_print_temperature material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True -prime_tower_size = 17 prime_tower_wipe_enabled = True retraction_combing = off retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index b61a7ee9de..3ae04bba2f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -29,7 +29,6 @@ material_print_temperature_layer_0 = =material_print_temperature material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True -prime_tower_size = 17 prime_tower_wipe_enabled = True retraction_combing = off retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index 1507de5a6b..c32eb2cf54 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -31,7 +31,6 @@ material_print_temperature_layer_0 = =material_print_temperature material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True -prime_tower_size = 17 prime_tower_wipe_enabled = True retraction_combing = off retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index 88090b12cd..515d6e6424 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -30,7 +30,6 @@ material_print_temperature_layer_0 = =material_print_temperature material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True -prime_tower_size = 17 prime_tower_wipe_enabled = True retraction_combing = off retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg index 7a536ce033..1df6d2dc6c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg @@ -14,7 +14,6 @@ material_print_temperature = =default_material_print_temperature + 10 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 -prime_tower_size = 17 skin_overlap = 20 speed_print = 60 speed_layer_0 = 20 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg index 96467fe36c..6216c1140f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg @@ -15,7 +15,6 @@ material_print_temperature = =default_material_print_temperature + 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 -prime_tower_size = 17 speed_print = 60 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 60) diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg index 1fd6167e67..390d3466bb 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg @@ -17,7 +17,6 @@ material_print_temperature = =default_material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 -prime_tower_size = 17 speed_print = 50 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg index 5ad1ef6b43..f0f5228387 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -15,7 +15,6 @@ machine_nozzle_heat_up_speed = 1.5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 -prime_tower_size = 17 speed_print = 55 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 55) diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index 94b40e427c..a601ec9531 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -36,7 +36,6 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 prime_tower_enable = True -prime_tower_size = 16 prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_count_max = 80 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index 5d848d67dc..8fbaea6da9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -35,7 +35,6 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 prime_tower_enable = True -prime_tower_size = 16 prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_count_max = 80 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index 451aa19f60..4e0baac3d4 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -36,7 +36,6 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 prime_tower_enable = True -prime_tower_size = 16 prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_count_max = 80 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index cc50189e8c..8ee6cbd2d0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -33,7 +33,6 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 prime_tower_enable = True -prime_tower_size = 16 prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_count_max = 80 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index 1787b266e2..14ec88fe6b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg @@ -38,7 +38,6 @@ material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True -prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 12 retraction_extra_prime_amount = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index f53d3fd285..4d14349ab0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg @@ -38,7 +38,6 @@ material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True -prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_amount = 7 retraction_count_max = 12 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index 0b475eda92..98d6b42cb7 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -36,7 +36,6 @@ material_print_temperature_layer_0 = =default_material_print_temperature material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True -prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 12 retraction_extra_prime_amount = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg index 30d9dccb19..c425cd3e56 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -19,7 +19,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_standby_temperature = 100 ooze_shield_angle = 40 -prime_tower_size = 15 raft_acceleration = =acceleration_layer_0 raft_airgap = =round(layer_height_0 * 0.85, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg index b2348c7a30..071606b8b8 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -20,7 +20,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_standby_temperature = 100 ooze_shield_angle = 40 -prime_tower_size = 15 raft_acceleration = =acceleration_layer_0 raft_airgap = =round(layer_height_0 * 0.85, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg index 42b09bd272..fe023b9e32 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -20,7 +20,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_standby_temperature = 100 ooze_shield_angle = 40 -prime_tower_size = 15 raft_acceleration = =acceleration_layer_0 raft_airgap = =round(layer_height_0 * 0.85, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg index b9222d6350..75ebfb6a45 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg @@ -25,7 +25,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 -prime_tower_size = 15 support_angle = 70 support_line_width = =line_width * 0.75 support_pattern = ='triangles' diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg index e9f081ef4a..8b46d9d22a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -26,7 +26,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 15 material_standby_temperature = 100 -prime_tower_size = 15 raft_margin = 10 support_angle = 70 support_line_width = =line_width * 0.75 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg index af18a87a20..a8fc688b56 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -26,7 +26,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 -prime_tower_size = 15 support_angle = 70 support_line_width = =line_width * 0.75 support_pattern = ='triangles' diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index e7e1654c6e..925346c66d 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -37,7 +37,6 @@ material_initial_print_temperature = =material_print_temperature - 5 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = False -prime_tower_size = 16 prime_tower_wipe_enabled = True retract_at_layer_change = True retraction_amount = 6.5 diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index b89ce4406b..9dec070e20 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -37,7 +37,6 @@ material_initial_print_temperature = =material_print_temperature - 5 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = False -prime_tower_size = 16 prime_tower_wipe_enabled = True retract_at_layer_change = True retraction_amount = 6.5 From 801c282c973df8e79ab1b4294da52376712538d9 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 10:59:21 +0200 Subject: [PATCH 041/125] Only update ExtrudersModel when material changes CURA-3780 --- cura/Settings/ExtrudersModel.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cura/Settings/ExtrudersModel.py b/cura/Settings/ExtrudersModel.py index 54bf0df3b6..e24d4d559a 100644 --- a/cura/Settings/ExtrudersModel.py +++ b/cura/Settings/ExtrudersModel.py @@ -116,10 +116,10 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): active_extruder_stack.containersChanged.connect(self._onExtruderStackContainersChanged) self._active_extruder_stack = active_extruder_stack - def _onExtruderStackContainersChanged(self, container): - # The ExtrudersModel needs to be updated when the material-name or -color changes, because the user identifies extruders by material-name - self._updateExtruders() + if container.getMetaDataEntry("type") == "material": + # The ExtrudersModel needs to be updated when the material-name or -color changes, because the user identifies extruders by material-name + self._updateExtruders() modelChanged = pyqtSignal() @@ -141,7 +141,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: if self._add_global: - material = global_container_stack.findContainer({ "type": "material" }) + material = global_container_stack.material color = material.getMetaDataEntry("color_code", default = self.defaultColors[0]) if material else self.defaultColors[0] item = { "id": global_container_stack.getId(), @@ -156,9 +156,6 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): machine_extruder_count = global_container_stack.getProperty("machine_extruder_count", "value") manager = ExtruderManager.getInstance() for extruder in manager.getMachineExtruders(global_container_stack.getId()): - extruder_name = extruder.getName() - material = extruder.findContainer({ "type": "material" }) - variant = extruder.findContainer({"type": "variant"}) position = extruder.getMetaDataEntry("position", default = "0") # Get the position try: position = int(position) @@ -166,6 +163,9 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): position = -1 if position >= machine_extruder_count: continue + extruder_name = extruder.getName() + material = extruder.material + variant = extruder.variant default_color = self.defaultColors[position] if position >= 0 and position < len(self.defaultColors) else self.defaultColors[0] color = material.getMetaDataEntry("color_code", default = default_color) if material else default_color From 8c9c20c8cb8eddfdd4be6556a4a60296b3543ab2 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 10 May 2017 11:20:02 +0200 Subject: [PATCH 042/125] Disable prime tower for UM3 ABS It was already disabled for ABS 0.8mm. --- resources/definitions/ultimaker3.def.json | 2 +- resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg | 1 + resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg | 1 + 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index c4e70899f2..d1f8b19e36 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -113,7 +113,7 @@ "material_bed_temperature_layer_0": { "maximum_value": "115" }, "material_standby_temperature": { "value": "100" }, "multiple_mesh_overlap": { "value": "0" }, - "prime_tower_enable": { "value": "True" }, + "prime_tower_enable": { "default_value": true }, "raft_airgap": { "value": "0" }, "raft_base_thickness": { "value": "0.3" }, "raft_interface_line_spacing": { "value": "0.5" }, diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index 2bc589ff18..f0f07f7973 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -15,6 +15,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature + 10 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 +prime_tower_enable = False skin_overlap = 20 speed_print = 60 speed_layer_0 = 20 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index ebdf013d49..0b062b0cc0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -17,6 +17,7 @@ material_print_temperature = =default_material_print_temperature + 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 +prime_tower_enable = False speed_print = 60 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 60) diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index b4c198229f..26ca695cf8 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -17,6 +17,7 @@ material_standby_temperature = 100 material_print_temperature = =default_material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 +prime_tower_enable = False speed_print = 50 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index 250e77bf7e..c3f3fb83b9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -15,6 +15,7 @@ machine_nozzle_heat_up_speed = 1.5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 +prime_tower_enable = False speed_print = 55 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 55) From 2375c832bee7479b63e19a6a1a866bb5faf607db Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 11:50:17 +0200 Subject: [PATCH 043/125] Revert "ReplaceQuality changes only emits signals if there was a change" This reverts commit 9a387f9ee2beb705afe959df92d405fc81720ccf. --- cura/Settings/MachineManager.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 80e37fc7c5..ba8ef39e54 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -811,13 +811,13 @@ class MachineManager(QObject): # Quality profile come in two flavours: type=quality and type=quality_changes # If we found a quality_changes profile then look up its parent quality profile. container_type = containers[0].getMetaDataEntry("type") + quality_name = containers[0].getName() + quality_type = containers[0].getMetaDataEntry("quality_type") # Get quality container and optionally the quality_changes container. if container_type == "quality": - quality_type = containers[0].getMetaDataEntry("quality_type") new_quality_settings_list = self.determineQualityAndQualityChangesForQualityType(quality_type) elif container_type == "quality_changes": - quality_name = containers[0].getName() new_quality_settings_list = self._determineQualityAndQualityChangesForQualityChanges(quality_name) else: Logger.log("e", "Tried to set quality to a container that is not of the right type") @@ -954,16 +954,12 @@ class MachineManager(QObject): # Disconnect the signal handling from the old container. container_type = container.getMetaDataEntry("type") if container_type == "quality": - if stack.quality == container: - return # Nothing to do stack.quality.nameChanged.disconnect(self._onQualityNameChanged) stack.setQuality(container) stack.qualityChanges.nameChanged.connect(self._onQualityNameChanged) elif container_type == "quality_changes" or container_type is None: # If the container is an empty container, we need to change the quality_changes. # Quality can never be set to empty. - if stack.qualityChanges == container: - return # Nothing to do stack.qualityChanges.nameChanged.disconnect(self._onQualityNameChanged) stack.setQualityChanges(container) stack.qualityChanges.nameChanged.connect(self._onQualityNameChanged) From 2e3059600edf1195c71dde28176408988ffc87f7 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 10 May 2017 11:55:24 +0200 Subject: [PATCH 044/125] Convert ASCII STL files to binary STL For some people (perhaps platform-dependent) reading ASCII STL files is giving problems. It has smaller file size too, and nobody is going to read these STL files with a text editor anyway. --- resources/meshes/FT-5_build_plate.stl | Bin 2106376 -> 352884 bytes .../meshes/kossel_pro_build_platform.stl | Bin 561386 -> 163084 bytes .../makeR_prusa_tairona_i3_platform.stl | Bin 430587 -> 134284 bytes resources/meshes/mendel90_platform.stl | Bin 589730 -> 170484 bytes .../meshes/printrbot_simple_metal_upgrade.stl | Bin 566320 -> 98084 bytes resources/meshes/prusai3_xl_platform.stl | Bin 912977 -> 153884 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/meshes/FT-5_build_plate.stl b/resources/meshes/FT-5_build_plate.stl index 2891632d5fd0ae82dfa8d4b97098f956de53f081..009eebbfb5fbd0cc7c38be0e805a61aa0e9e3ccb 100644 GIT binary patch literal 352884 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चYVt94g>xfE$c;&bWHTCh*?*APT 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 MDj_WY-wgTx0GW*h&j0`b literal 2106376 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

3rkj*X5?ovTw55`+QpKHgLfyQ*7r$}W++;&J$W zMAV1EjLlGC@c@qLB|3Sy(o`V)W6hT~vSIv`d#BR}!P*6=rts zZgKD-P<+**s=gL?gzizhsQ$o>v@7wL;_Y&)K?1&IN3@Yuifq!FDR@axPHIbCWu5p2Q@qD|+t(q)4DdAuUXcSO#p zag09+5GKCplN0HolIU_0`B0hJWFH?>h?#Kprz2{6H=z z4MV}<%UX?7;^WTcH110^egKCs6Rp$Sa!^Hb(@neuN-r&3dNB77{5$*ID*0NE3Hwmm z4?8LjEbP|)(WRk9^Nt;lto&ehEkg!YNw}{d;()OJ*tNG7gvg(3DYe*e!H!hP3aJ{I zx(4!1=D=#PyFo-Dnue3 z7Ax*GeXgPurY(oMv`B|!hI@zZ3dh6;wnGX(%od_kRa0?;4(a=e znhHPQMXQ&n`I%GNf(E7J=)s|jiCi$gNgdX9Ox918{ebJ&k%|@wf!@ZMwz+S*>{uW~ z0ZcDN4WFriv&-rZ9DVvQFRcp==+yK7_`UGDu_>5n3v<+R!#aRFBI^r)n;N=ofNtP% zSQVoxHv&y0Gt-P1wyWxfwE$F zx!Gm)2Cmt?seG2Z1Tcdm^;nz(aCoP&8}TibKk=tmH9m%y;N6isr1AqfJ^%`XYLOf8 zN&1a+8TXfmmVzryCHQ!iB!Km;nnism?1vlFO2|Z8oKl%`woB5kWmm@hm8nrl$|^Z+3a46y`Z^)So31P)Ga^p@f!U#@NkY>XKZxg%OS z+~E_`Hb=Rk5_@xkjg+=k-@w{<7?gpdP@@q{wPXSshSosGM_)CYM&BvvyA@Ha`aV#@ z&7}d3Bsp#`j4hkzOS3-h=hSQ1t^|2zB|)l>tsT)fLXE8x*6>Jcfd=iEwXC*rL(Qsgj2SKE6z3aqM%y66_OjA_&XcgsTh=n8>W7+H;RkLr zuQ7|KcmUY;Ft6KeL*L!tAJH3414PS0wA9_5E?~-}tad=whsyW~+R|$?mB%qiLr=7v zTSio=&=cXR6PPw>W^Ba#$b*`B6|O?gF6%>OKji3JC5glkml`mYM*=zMlpi)%kI9)u zb;oUkf2-Hyzzu9@`K9L+0!U!P=)}68!uDhP9K1evzSDK;HKs+3#g!&wW9b8n9w&G- z81m0GBwg{9`n(GV)O{H2f|nM4q1)Zo-&hGGQef7JG9i*F%KTi^4k;YqreKQ6O2+sp zCT!Vo85@Nyyg7Dcvi*0;looz4ZbuXjaDx*lv^V8I`XPQ1-V3)Q3P-p>7&ncSu6P8P z7`$I@Z)|U@`YTp5{0z3QP?@I-`orGd_Ay-!=o_I1^ACAk z+QC{4MC&W9Gsg1qL4eJ!aDrTog;Vn!KfWkIKpkF zs>jy|&C~*SDAyX*EHR8gJSBekHkWQ2&Yu-``a+?Bx9S_ACR(J=dyPn**}%}+G#j|@ zb^FoAX4dx;HMkmS^klSI_doj?`TUN<>FgeNR%i^*Wwf={i+7Wdl%pfh}C1CK1 zP8oR}V5a6HzD_(iwl};PW>$40%(NGeMW75|F{jI0AkgN((75LIU*}J@Gpo80W)ls% ze2k1pa;1UVrtR~blwo6Tk_kXO-b_OGCtI3T z-2gNEGF)3_)@WXUvrLvYY08EPaLRiOcf1#92lS0l3*XMI>qDpociMYBo)At4zQVWk zjZmAkw~erXDN`5jo=H?$29V{Zt-Is-x-Y|wfr-}~{j zs~cga`(KVME#afMRNmQ1BkyI?HbP95bv#<4Co;IIAHQ`l&@*jh)Hg;g_`dHx+B=7x zpk~!KKy6^AoBkJ8DG&kNzfMYdye{O3C{(F$G7SgDpPCmUCvDd^K#i?2n()?C3*V@A zDd-CogEpOj^y@;1E(8jxk1aG76(UKI6480L< zM-+bG)-eGb(h4a4)LI!*oUB1nVKldL_mbwdBceVOW&qM|D34{`vp?kN?GQKW4T1cSPd=IJ)|2p=ayqM#rnZQh6dY7^#dvqY+zpGbO4^o(9NA z?Xm_c`ytmrXG9L11r!i}+>xWWOtTS>4|_gpA^G(BR-N#N1`0Y)0Aj8if|-x93tOHZ zz-1a2E-^W$Z}o`Af#I?vOZ4J1{R=BT@BLM!9~|I_z$hz=Ej4j|=L-s>Zn&8hj$nhJ z=kcL_;MO$_oU#Mlm9!l3@xB*sc8wpvb@1Gc4Y5JPd<)aJA1TkCIRxg1_zxzUD&GpY zLmEfG4S~gNEvNE-!y67Od?SkkIJ?FXaCn1UZ7fgJ3cKxT0JyidIJ?FXaN!rPF)Ix2 zjjuQi&a7|%8*`7`Vwf&VO`GMz+}`*_?G7j$!A7^_C^An?$$w-o-`IfzHnYMJY+7nO zLbS-_G7m(>v6hbm2X1zaBjCc<d0XF{VVQsk=;pZlifX%FM1Y6%z zuV)gHhTW$91&bE(6+KBT5vQB0$!-Do!S5*5VWYkgXv|qLgP<8cwr~nFD0^7ZLAwZf zx9kV{qcJn88$mX%%vepB8iY`+ArfdHH8Yz^l?MLU%vFb7N5 zHqhWVdRSWS1^v;enH7#;)9fCc#N=~v(m;(u1$4z4mWMYGZzN-DKl&xG>KlQ!ig9ve zgF2%LOsBOi6u#3kshx`vEdD1&?UIo`r--V%nH3ITqZJspjH`|8E{z5oYOGF}$iK0) zgRScC1)5pi2r_tLNfgl|NUsK$8ivNZ35$hD@1W1h3|jqUL!XsaipY;!O|UID+EX9K_I9wD6%JradZ5%+39$gz z91CF8+>moTu6RO8`z_qGjPAoh%@pr`2>Wf7@KHk~T|?=EO^cAS#;y&!H?pMJqsy}W@6_Ev?1|!F9v$jedU%RCK zsL@a~O$-k~A3l(>Bz_-Auh8*969|Lg&<1AeFV{Q@F0dWYHvoURF_}hWAWA#Na5rPC zHKsozYoM|haC$oVt0x>)y`?yJcXo8DeiWOeuK-Ofryse>?LnwDRjJT)hIV77yQgiK zBTf0mMp&ZnA3fxt8l zDa%ETEzZMi)%x+LxWP`VkLWP}69bFa6`+#QEHv(-JpApGpVj77g)ausEC3}s_Mrkt6Ig|<-DeHomvL1iF z&8_gr%urBF$h7HRWo90bS+$LDCkSY@$%V5${AhT*4 zKt@o&|KBsT~qAOe?%wj4sajkz;;`{40fe|_JvqqmQ) z4m#9GKaw99=3lkmWFE>ofxhq)(Kx5UciP-Wc*|P$E1;YCz&XsOKeqlKi=#gTPNs$E5wv$uqgXL3{H!QhAY_Eh8{8}ZJ4e#_j5$lhr;@} zJy2t<2A$p%16YQ}n3;%lJAB%eZf{M{R$^v8m~o0x-3RWRK_~p<8PbCZub9}?iTB5e zhVpmA%&Kn$8vM)}WrxCp#se@@giiZ3JD0kJwT177nNi&cGKPH~cD7+gp!9eGzI1m^ zel*>_O{=~UXf$jL%wEum#{Tm6w=<)<5oAlyLn`X@ihD@0wIk9-YP$!966)cq8M zL%#QM^0Fb{e}ma{8`-Hn(}BSvcbXc%yv3t4cAq(iz)|;kt!4T)KBBnuueI1hY}!V% z#%A27i4>WFPHiZxcdWgEdL_JmjgZ-tjf{*!KD`F)qn#PH(sXvM>@g9+m}Y1%`!cPPM(X;2#$YV-W6aCaEZW>Htxj$eo=)TM8=+>_H#h}) zeA2Yg=#xH!0KEGJPbuph7fmnr{43%6p0w#AQ?pANs0-hw)kuOc(rQqX>KmSuTi~0)OLUwxX0V1cs$R}%- z2MX7!)()yBLmxA^{~QHLw{ec{rws)+#|BS0=e*2y{{Yrx$uVj z@^L=-Q{`8-%j%CD9QAVJ*l|PDPIxMg^p(*DTF#lErKk* zq~5R9E^DB&8*<^LOH#7d=Yen4DyctendK#wdLv|ylEpHmqP_yRWP3@S&M&Z8C4B{I zx!omY;qKWlYJSg3nXIos&c1`=$0BD}Ir;%YN2H_Aq|5Ry~wAYa(?h*2t?L_S5% zkZL;hq{MCd$QTA1!=i6pM-ZJtR~Fe_wvNnN-z8Zn!7%(RvLc!c>DSuFTNh<7y%cr= zpLQ&~UQw;lkIpU##s;DCWReQPI!%u!uw4`0Xk?&J1O0bB zMN==-tolaKZ_{pn97n!T_`hdH+U{RypX15B<_m4KhLPMeUL{oJWCXWmSv}+!Y|CmJ z?%yxJiif^BguNgQV*)fjs=-Cc9ym92D&yDvIAy%7KCYT_2)Ix_7$8RCzh8%ldXp)t ziJ>&u=G*lBT(?6`j;OrU^#LAsblqK$ZYm|trZa6{B|sP%cA=}GlIPP6Go!kZu`=Db zz{?M-iFjb{*2)&bhoNP>+lvg%ENZ0i;DQ>XLEIGF{LG+HX~ER^e?RXDZ8@l--iN9A zpr%d%x>wHNh@|iq_|yVY-Uj-g`Hr#lT>rB5vqe) ztxJ8eHXqoc?Amt}4!~#aXaf%goy~Y^tC)kUE%Z6zc0}Uj-YM`(iZfsbc zR6yWmAX!xPhiVq}6}W}B?FVdCz6)LSgndU+f7I9w$<@CljFkAk8(Wo5uU%4q)QAhX zFc?K8*8w4}Q0s5((x5l6>!}Se{oGk*$p+b!Vzq1PzEAa;X5B@(f+9=Wnw*dJ+@|*G*Z_K zG-gSekB20S`*5>0i0$}dVZK~i#)sYvHFDWDeFNU7H*j9QVIt8XJtY^7cJmyt z>{8DsJGhAvXzFA>K1;-K$@A%inN{5gGa>>g(}_O`I`8gYokc!^DWjy3x-OXEiS-b2 zu1wof8r>?Rw6Ni!^)PPT>o9pw`+``?Dylzfp^H2W_s=u*)2i`qi9lUYGbpd`9om*Fwi5uYvjshS}&v2JB$T%{yn5)U< z4hh|j?*zgZK<1*a1MZqbrelqq8U;N4c)H18OPTSA))D`sjtdPVb3x3gZt!7twogfjbO??H{5!b+^v8@idYBsBh>v@snpfb!5A36GbV?G4L8Q*^ zJaTd@yP@WiDS}>=P&11fDQvcr=#)jB%ry8C1CSKO=YWfZ=8g`Y4~lxrSdq2)z-CrB zfDKohffnXk2+qX~4s7hcgnEp&(}{T(C>ZK_4?JKypl}3RlINh!h)h~T2v2Gfnv_~# z%j76ZMU50T+eviFJ|=5vC1>q+2UQzeW#DbA#Q7jD*d-WBC5_be0F9n23dHo8E*djq zs+RhDe6!_B#}_3#98f!;Z-jjklF=6z`fSx)Y<*PD+rs5iQ3Hj&U?cKs7%-qRNT|UQ z7fOq@exhbk-C-M|ytiJ_(mVF-IMgob3qaF2Gk;M6CGxzZR;Q;+zpzzQci156BkO9VJFl^ z;`fmuKNk8zv#{N3Wm&rO?=`ci{-}kn$G6&Z&PJ_+7oFikXzBSlpnl(SGz2mH*ey2+ z8Qw2F@&Gm3Q?0Rgbc#6-a6W843VVQ`2DB|*{d5ws-)o{~MSoo_@4*34BRlbdt^G`; zLodzMMs||1(RRh=Nr$s`V8k%WNG|Wv_Q*=2XYM`*)N}@v^MMl0*y-nC!SU;#H$L58aS>Xt_1Zhp6#r8VP;l1 zfGvs2xYEF{7nuq;7ywYv9R%apE2{p665o#m# zvR*rp=Z?SIP^+`k!wEIBz7cBC8+;E7BB!I05rf~55VFEqt3Sn_gy&6|r%QO5;J#TG zQb?`(74wjG+uU|M z4n1>y^;p~iSziHM__E&V6PH?_R&J-@^Z1^y{?PTjtTZ+Am}+yCrfNmJfX75Ap=uzW z&sRRu=^v{XatCyde*kVXc_A)w)6Q<+MEbL3LgT8a3s72tqF3Q0vbS;a3Pyb-K zqs+p-1UqhC7N3jcA2K6B2a`pev8x|+W}SDxK;S9e`D3fim@Hd|Bg58Wtb+ENR-m40 z9NZh~-G+2o6U9lgXb$bpW@XA<3!UjMg#nLwppoS*u-7qgkj;PZ55d4jh874L z_(UnylMto_4vKPp!$Yh7q?}WC!OBA-Fb{+j>7F&U1J*XKaeF)iFNk7RduylMSTHo#0b2+!Gp}}@VMAOuNrGJOZpPj=$M5fj~#v5EK#$y zk<&Md`V!nG;?uy|s=eEmn^Dr2pf=zPDQ%9;ZQe(%?HaRb*(7}pYGDRR zg=oTg1_Rlj&@j!$2HbiIssLve_668w`cFv9Xm(db81U!hgRBdN!%2l45%wk6Y21T| zVT6XAXr3$*tx(!%xAl9$kW`K9>xJC3O}JQ84)LcpuH+j}19Re9g{$usBv-aM4eSK1 zWdPODEo-UIzwOAEVfTl&z*QaJ9-_vCOhGF zP5R9THoL;1xp4|x5b4KkRK(xr>nXhPD1ao{cT)DbUe+Iun^of&xUQ!g6WV8@E!J~v z2FIR`PlL;?JiTIBhue3mMF&QWW8k>`*+H=4eb7xTsv3facAB89p`@>erq|9j z90E5$9`(54Hrf?RW7_))ql1>id|h2TJ$8uOPrvnw#VT99i1-wCI%tK0CPY?}mGVVs zqMlj7$?`fq7#WMZ#{YE#&a85b96hVN0Tgs0IR4|tErA<117o zQc!(hf`T_A_p)9C-2qucl`&qkxy0u%A3}5r*#ukXw`Fy_5e%!~*=@6gb4B5U8+LY` zW9+p2BnrHk>Yw3ECYiI)`>@s%Ke$0>RyjnDc!AaFlxkR^%L3^w$E36-Oa_GhysxZP zujZX_g6@dUF?P{Itrjo7*gE5VH|WeN$H+0Q%ECVy&B+RDB2Mn`n;V^3&*c+NKhE)XU{M}DnwndL11pg{S04<=$$lrnwh)E+`M43Djb8)*dSzjA1@TtK)?oL zq8^)06#1F{xE~IiRpAgeMx*F2AcMXPH2P{$C$KT=u&i6(K24fwZS_aPW>+|dO*xiN zYm+~uwRVp;;my8LqBWboF=*nC?ifnJVbn~?``emT;TSe~+~GVAw4tHbT+=&h6*X4a z2e#;bynmu~J_u<*Q`+AW!j>r_Lm$WWPECrb4l><2Zki;zvRAZEcXypM_JKbQZkt_j zThDju1l$3YW5Z2K+MFB|@hj@@%9P(rWert!LoTUl4`f0p+c0a%ZpMwGYL}MzNT^)! zv6^Ll0dko#K5YgIebgkO7{j1GnB+pPLhgX9FF{V^Ni=lf?6QrL#u4O$BnY1lZaZ;H zR|K3@)R*A4Z;czG*0}7J`fJi5kbwq0F6!bd74-$UB}oPbwbz+V7xc7>Gc%KUzV1Wy zz|F33j6SaT%*Hl$+yT^m7g@F6sae)gWgp;35Cq1*HF#C~G8~Zg6~IljtTM$#GZ!0= zNceJXRO*bVyVfY{D}aNCO`ULTrKF5?|5PjWe@O&cWqk#3+Wx`5MUqpH$882z7Vw_# z{c<-MMSTTq)-27Bh0UsP4F3LguXeV9rk~&q`_33ftgsJkNncodgTH#E76=6pBcW;4 z`Gd3i0&_FV>JJ=5Nt)AQwvw5UVe3h18Fg0^@C={9nkxie1>6By{eh!NH7!=unfZ0Y z&8l&TKFi^zrh#C3gji(wXmqHv^6Z40UE>{YkOHuFlo~S>BWfOGr)SC33r?Syh;#1VTNn11y9Ah&o2iDnFgPr)GX47|v89ZH(`O&fkfydS#%?@fhY9L;x zlZzlCS7*3pqM^Ith8Tt2DQz;8^o-Az{H-~<)?sMH&2f&E3vX05hr}xsj#F-EC8^~3 z%*|!8&lL~6Mcv@Ki3@+?&{Dk6&kTQ6`kkV2I-6G}>nngu=a;H|PjkaorNX`fx_#Wo zy%82tGk(ZbB?kMC9OGuxI6fqu`l>e6qI8^$<&_E>EA4`uIbc3LxTmppKW|Z*hMw=}NUgQ5B5jIqsKCXQ+uhd+^V>0EUYF#-m z=nm){Ll=3LTl9e0g+YGiZN19s%(BKRCxy^bYl)9ZN^R9LjX=m2J`vyfm7P?Mk4feX zE57N>vc@W#jU_%NsZvsa3moB!Xn_!HKYCpHD?6ziAG5DhR!cKo?X~jX*clT>Sm4?J5x>RZg~{*KQEDY#Ev#yo6hl1u#qKq zi%8?RLhp9RN8Hbhl|#5sw?svDXBReB+6%jo4SV}$Yu*0Fh3AD`#P{+orNiHVTuXxi z4}*A=p)Zu-Rl1ti4Z8z6htQER2z(TAW9qFKaB|@CRtXzAh>E^hyRf0sPS{aBpJ^lE zkx+F`zNN4e1KK!=T#oX8HH{_R5n*3|UCSrCun3Ok1DXuA=Uwz8b#A+K!|sUE@o$g> z7T8_j-&NDG33OIbLxuf-gEeDV;Z=rkgb%dxFV-&XYrwPLzNg1zv|O3rwO4?ro`a6* z%buuWX+^WIx1v(t_=vEt01tkpc4hwxoM=$Gh?h#lbi@--qb&=Jw|zY^nHP2kbdG-l z+_-Kf8-}kUmaon3D$NDZCSevfRN4(Yh|!=!?^ssL=$D`?O#_~O-?cZhtgk^XxP2?n zd@BE>kw`Wz5Jql8YFsHy`>`?$S~AkVNvdq$%1Kn0W&v*Pb(veO{igM&hCb)(-Ds=kin~v3Sj89bby?P;MRe1+oP-5FE zV?6%a2!x*kpe%XJAa~X0+E``Xscf{B@DzrG_AfmM>bnUXR(zzSq+`zon8vxQCyDmM+ z&LQW_{czl@8ppU1C9u-5>99A&`*ph{c41?souCtu=AUPEGdb-unAq_M7e5=#QK}Jd5T($R{A8=NcW8kPFX%momBFQSo`gxVP6$-*EZvnNB`&I zW>h#fw=_k?7Kk8r_{wN6fXyoEPGOsw><+>2?V)gmmY+&Dw#K&e&ntsrrmAw8N!qpS z7k1J(K4zbuT5jybWR)$+O?DUZ)K+9~W?5sENd?(#B|c_gY=o&`V4_EWc#Bfp$PjX~ zXm+@vN?nu9IYDRFImV7@`Gs2zjOeY##Nd1zwpONw{w0Ew_cJ=H#yi}0DbYnVr7C}6 zdd$8yHPyQI>DyvicPblAB|c@J)|+oD8#P*HUJ0makf_S!?83%Md)ORd46z?;;A!RW zwC-?%>LR%2Dr)*7hTf(6%YWq%IJ?U6DZ8{D!jNA2lLUqjyqZfcN!}KV8Y^tIl=zf= zZmRr8JlzGR>2{ZNEf+Rc+6TIQcB=Twy#P70tgirWpJS=l3l_g-oB=DA)gQR#Mv-QP zX?{>9bHI_Cq1on}Am(q$(!ncH(Iw{s+yRwi{I!8ZFDdK2<`svRao{@Re5limqJ|2) z;nq#_Kt5?=s&Exi4%7!_S-lJHIJ2y;L5_aHu!p4D-psb4Ym@{qE#8c`bTD@nUn>D{ zoWe@go^L~^db)lIPFGTK6-N#}xE;}WXK>UerbeuI^mmoJS1GYx*FFhppk%tBP%NzuaY{8>)R6%(A`!w}!Buafhjc3->-;Q?Dyxmen0MMv%4!5!OIZ7^K`lTBJ_j zx3P=*0@N0GOBh08FiAa9f~_plJv%7^YF1HSfZ7z4@Ou%2S6jk&!_BVp4u2BA@v~5A zQsjf^rz3&Wu^Dw>r#(wiNxBjkYO~S65Y<<)O`x)lp-2CEowe5RQZ#lVfKGZq7-KKi3H^v9{ z3{a)Nafq8;j z7NtDz9QrHWTto?UySMqx4VOF$KDcp;S>phHmPf&2u5QYSrvSQN42~5^J9<_fNZzxdrXJkvqQ(lFEhRh#e=RIx>4w`?v8svYSzl`Xjh!@(k74IFTi+TO32=Zb zzTjBXWRo;j*K8-@F)+V|en{1h$N^bHl@EMj;V}(8AVga2$fPcr5UshW_GNHF?tscM za`Av%wGl%yNLegttghKmf@3s&LU6$Bt~P*f@hQ1oHu#JyHPeZShHCtf{rIT`HM_bo zX1gIuM5Af((+Rq8_i^Q2>q!&i|}BrAwdoy+{(`Pd0;U}&!Vz= zDhiIU88wb^W2FTJ`jKu;!YW`>>*k-2beu(xTt|}20~;5*M{+2v9=EVI6`MOz-hM4jaOoDZn#-B zj&Y+>`glws^M#^|F`m9z7E<}u#HN1MX45yutmR8&>*CNh%}ibw)Vh(J65%{1$J0>F z<>qE6R-C#2-9HX{nD=9`UtmNh4e0yty7e)D5gT^s# z_7SBE-cq};vC>Y^v1T#+Q0sgYH06;jHYTe<4-3-6r^^UPuFAWuI}BjcIrR6j28;V! zJ@f4DAmp7PUSvW8o_PMlTo-fZoOCZb5ktu?__IyUQD>juKsh6V1hy^GaL@3r_NPF* z!f!}TMx!#@U?o>-_}6&V=1Q}yJF{~#-*EX77QZdjriiLlG>plR8_7JaKO8!<%Hc0S zT$*eQ?(s`V=hJ8dDPh0lBGn%a-4UHb>|lGk*wX&}1^bH3B(pBFBBNQ+ zCH=M`OTW?)r-C`ea862VF88K+`PI${yAq#6>?#pTB@vAJ60*iZrziIlCi%&zBdIEr zHK~#N=bRKJ#)eK?ftOO8^ZKN)!|o_gnCWx;6C@<(NHdYEqeMN^^5y50wS!LW^A5WG z1%aJf))*@(%rp zX5(_a%8?&jSVSk1?Z`@y3rp>DUmZEM&pYVY)xHFoxna=3%%Jl*gzhjzkWa3D`Gwf( zdoA!efbP%`56d3ZBckC;HF1R0;N^C@0+(ap4taWd4WW3f82RNPThXBIC2@kwdShd! z;|ZDkXbD$|=N@GEZKi51QO9UBv}cZ5a?Fq`@HvF8hiY)#1ulok(VvVA5LqR%nO!RbtA5Xi z0$W3u?T}OIGhO|JkO>Iwj~oKWGD?qwRirN>>{sCsm6;o#_uwL91E&u&DEaTrcoim9 zH^%9YZO*3*mmzX$pLft5bkHC-K+;5#>K#K8smIq-@=TV{X?@;7x6`+pZ;(*08Z~gc zc)18$LZ|gPfR6c$y%^U_R~W&@>vgChR2G>6A8!aN=t_K!q1!85%_OdAvYQ~5XBGXg_dR&~jFZaD_U5oxry zVovRI4BcL`>F==9seO*2+p9MH9nM#^&mnX)qsJmsFMp}yhNE>k2JR@{^x`iGkW>4- zgYK&+CYfD_flljl44r<+>gs%xA$EGFci?@AnJ`P>R1U|WF@HmWkSVf>F*4s%>H3tS zjmz;Wh@?%zPy)3aiFJ^3OCV8_j5YE(UWQp5wB(Qt1v1nM=$v&*Sz?Er*5w^=PzbG4 zukB4ZL!WJa0Yti{Y8>d&tVqYbz2{S?Tzw${I=!)R zxEMhU>M0bKIJm%A>^h1IBMj_WJfm%~wYv?isWnH9%i!h2tw*0T}w3cwI zdrm2o^_ahbvdK#>*a|hZ!!c?|XG*C7tQt5e9Dk)o!G=m*EEL!px(vaTHdf+gxNx9yNp^saPV`pg0@nrSf}7b8?AptOXaC4H z9>=SYp_DTLCRoHS(bdB~nUSV4I53yL%$xgYm$m~=?Q)FV{w9KfPH!SyzL1ubD-x8l z+%D0`;;k>_Jp4tz61rUOT{lCQS*G5qDOLA?IPY#5q#Re)8=3S)sbwWv8k3~iPnqN5 z&0yuR4gR4fcr||fj19lu2>nPmpwV*gXT1DeHA7DAavX9{XHc5q|E7sIJ(25Hj+^3# z*4Ef%E9Bz#8o%oA0H-wdQ*ev>OkfEXcK=yAq?o&$9O=LB`?>N>{S@4GZ6+;JN@ymx zJ%XYW(hBsk`pGD%ZT%GFYSKoq*)q-B40K-RAM#H)9gL7uyBz-jajOX-M>-Qys+sC` zLmJaj#3?P^xvLG7a2aw1v|P$N0lHiSDVBJnkE@~FAWb*)uD%v-1rEo!#XU(x8VTuXQ=bf7jZSe-FR>{&r}?%C|Lk*$O$N(}b$KB0;{WJJ9*lkB|dVf=)^(J?lVK z|HLtDoyy;MjkqDq@3X$XDJ_lNHGwR+@YV!cccV9I&AvIQ&5(tj>APr#X%P@y20uH< zc6lmEdW6Es!^<$kQM~$_y}4?+mqdH(pg80ygYt z>6g_L>L;q5Xwo^SGi`&qyU|b6Vk+IyU}|O_|ZBn zL-93S=f1Mc3LO8;ZXGtlu8Wpoqq}3x#n2hKZ1oEqkOR7w+0O8nqY#{FA~8JDAY~;V$daif^3(!AE3L@S&0}edmXZ>G&ab2nt3C-_Mv3-<@WMH9#(CtHE5s(RxLdr6-NOV53e^}n%vZ;T7yOo zzM~l%%^u0DFQEB+Rgpqfn`#bPxT`@m;PwR%XlheUL91`HWmS}HmiPKtFV6y>?3RZ6SwDQkWia5vmOQypsY(NK8^I$;(1Qd7WhC(|Kf1NWxcKTz)>A#40k}F zhT0<;Nv~ZD#GBq!d)Nl1=b2j;l`PsomU+RMDUM-AYrGX|K`)siW?t2%+QUW$ciY_< z&J^HaTW(OggTkk!ch`;NGegz|#@a(i*9-yHR}LJX6t&*PCh%+gE8rHOXOERIKRm4~wJV zCkb(vWrQMA*GRJgjd`k;w?apXfnHQ@ZeEL{3|r|@9g#-KqijjVbvk`pwup&~ z=}ol;E!-!V&T?B7t^4uTh#nl7XH?Ee2)>aR4pW~k zegFh?n5tr9gTjdP8qNrK)FbK@3usa3r1BwFo$PG| zrUnj=QY+L2O0bHksK)0y;kMM6c{EUn;XhsrwgQJE*r?@+$S~3>%+gOp8_fR<;v#d& zlO8EVN3f|)jT~0TNwmt?%si~fEu#+uSC(vUM45=zh!9cza;Rzj4M3ZtoehmmVr}F= zfQym|A$XvY6e&+RM+;019GY^lAgt_qJ#^&?ZW`kOR!x3yeqNu*}9wPxRmo~5a z8r1qqOCxvHQ4+0!3UgD9bInI7@*G}wH6zTF-foDII|y%UvZXn_tQAEe+wC=`; zg=seUpZGze8qP>L<{&xrl-KB?+|=w$&8#)`T~9KW;uJ(p{38-2LS{m;5svxse$HZp zP0DAxiWTg&A`C`qyzV%!-89on5rNJ`1CMvLJ|*}g)H^)ni4Jdk6OHKHTj z31ilRn%2}PPE1gPrxvC>h&~B15L&Ko6(BI@j?8}t56!qjQt!nOYOJQM@qsGTMT3~A6uz+uaTX+GHV(1OA5)KE- zFhX?P%Ki71fIE~6AMiN9pRyi(F%z9Su&qu)+${SD1CbqhURbc{ZE(~5QDST4a+qbL zCagtnS3zSLI+dg)WKm>B*UHIMnrtEZUpYcf?{cure50zzz@xN`ar=22shqXROfj#@U(Gr87VP!bC}eJ32ITuK5{Hy{A92}jaAeRZ`iX65k=mKm%Whe zE~lwn4n-vaVUKALt^prc-y&NhmyLjni-2ryPM`L6!0l>@54arR&%Orv2mBhmONF;$ zxndG=+A2d6LNZ6BbTj^i|c^d`OoXOI3wJ4wZv?P1MrX4A-8#QzEl(3N?eYR zs~OE9<4Yx$%kQ^*5>tQF$vPN#Nd|jKC{fPR+ZwsNFMH+(OSDXQ#)vGI+meQh2sPO;u-)fZumD zu>nWTAwKRQNtLQrqf$kIU}EBOAZ;;E6rVrtUJOt%Jjs)j8H4)n*R=wN+SQGJoN59o zUlI1E1@7Z3Z4lo=cxV(!Kqq&&#aIicQ?gl_-$0IdHnASzK3Lo8>D#FalAtDNig=Tg zxIqVA-dtCySbQoN_a)uQ9XU*R1wA_?H)xhiUO1;%~`c6CE{3A1dp z!;Q|@?SVu1l@W2elLmS!qytfo z2Sg;HvK&au4bZ4M+2cr1>ut3LPI^$7Evz6P=s94UZ}&OCgQozgg&w&zC%BcEY7bl2 zj7a)%@0jS!7Y^Pf4NOY7h5v=uzn6;~jd5B_?LlKQSL!w7K}6V^wrI(YNE_xvo~{uw zb~mx6H}w-><2c~{Mpv}l$-lwIx5-?+wCOX-<>l&od@9L}DN^*k_Y1GEz1P!io@lrx zZC1f2!1&8DY9%u05HJuojLP5Ll-6aAM{>3)7hgea{7s};vK?MQdq+JS*=4dTk|(ce zQu<&dX!t_uTB3y&BG7xk;MK4dn7TP^6S2G$0IfxMeoA|t%)gmQ?sQsk7hru;Mm$AGdfXNhW92V zMcKpX6C_hE+ZyS1G%_06qvy&?^Pm-MdVd4-N1CA_&F11FAx8yzfsL6;Qsy*b!ol@Q zv8MMnf{Z47?kl7xVLfU=NFuGJ9hx34K3I|bdo9rP{zkB|>vMKOy46yR`QRiF7HygP zp!

)@z}rb~gZRxWW7^w0MLUpXan31vR9fJS+IuJb4-Wu-ViK+>Jn!q93V_ihfHN z-ab&H-nY!p2p6cAYljtTdVgcsgsGBwtcKAxiq;EFun?zqq6eR9EBS$~gY6La{aecjWe{wrr{4+uF9}>Qc;PH8gy}{)~Qlw^Lkml0C8tHw*MR10>bf@SGobqmrg<+8d(^4bg_2 zI%Jn#a&C60={??}mbWQ9WzxpR%xO&*2r@AH^NgN-u?5fx{bWoXMdkIh0aw%}&bN(e9=;b#vGRwN}U^_z)3w zl4%df1|`^}gNE@1l(iVra`cg!pr&^?#2#6l?I1m(ZlEF97)Bdi;f@akgIFu@Hv~-vI$FBH>93z!l9Pbu_WEIhn%?0MHt+&1 zWahcJb?qpyxxMb1z@~RNgpH>FO_-Fdq#c|Zv(pD@$u-Hs-Dr()R~xzJI(?27C2BT@ zZL&tZ@=#Ymn~th-2Mr@xr?;9BP8u7il=9@_*5>5OW`>*I;ShbuXhyUPM240e9lbM) z(lC7>g;QbCcN~SN^_Oo;Q%(M1Ug!FMe3=hzfz*@g)eYiSk?XppfPO4 z^+OmyX4L)@8l;n6!}zE6)eD=X0S{sy2$O_{>yCZKt&SXrS~;P46??XNv`P@0Tr zEn?{ETcOWkebffE5`P2G;;)=uIAZN}cQshSqh0(Fe*@6a3Z!_@!Qa4?JY6yZ+6y0` z3=ilX4q$`S4#8o_WNN4vxHAiEE(=yxUuc2D0c^8y0WvuX6%?He=&$)KSXqIlb~l79 z{K^NaEU#U#+Rbr1=I{#J@dtD|Hgq&p)0%u-CEMKR{I}K3_vtnc@GA`?bcOTO2nVZ>vUiLGFPyAA1MjQXY|Ah> z#t1gkJY-zC$uCrNEYp*$fVYFpHEAA35yZaWk3nTia+QnVy3)^d>-M9Vr&l?L3$`eF zZMYv384yJ?Zc{N7LOxxFDv20m-cN(89+0IvpVv?RpqrnpqNYlCbd{tjmw{#DrVZpd ztLS2jKw5}Bkwt+3gXm&(ff`1QP?kt&p>a-c`RTR=dudB)jNU^wx<%etv?PSFOIjvq zrmgRG>1;s(IV*uYkIeG-kXcPKe#;&P^It0z1R~lpQVCB+#kR_H%Q7ap%2{k#fOV;t z>6qBS$}}du%o$qJ0tV|T`d8>$EKH3A60tBtO2(TXmM!w<5^di-6SLS#lfP!@rU7^7 z`-qgrIaz7al&hf1F);mOhG1pT!zR6aaE-Jf=TPlJ2qK1LqY{{*f~ zYm%#6gV(i=rXynuuUu==>zpGtiUbTAD+qgRa z{Qm2Yp;+Fc(1{`wLjN_d3k1retjyhR&h3ZDH3f3#@Q*%EG5ON~ywY`xUm>+dM)+}4 zm(J#j%?>F#VW(%48@Q42*r*tohn9Uj+vIFWaPtU=lRMKEYUbTNb}XOXliXFze_9d7!MU-U)As$n#Z)c;&{ z%%y!xTlL)QAWk8T$VPU)%VefvPT|VRp*S%xInxCEyQoisr^wa7V8fo(U}g-3h$3ZA@fn8n znKvToiPLS11OmlLT9#q1BR+-Zy17*i|6MeLq@J0PLO^e#VG4%$q%##oFrj9bWr9Cg zCHdW~F(v9z8Kxu`xeTkTygc2ivH(x7at0RntqD0ASPYr3CMuvxlcWQ@Y2>@82|=Gm z!t}gNg2$_Yh)lr~cnht(MV<~A;D0GGU58-L~kG z$e`y>nz*5r*=v!Gi-(s<8gn6D8C@kgp4z~ku}a#QbHGe`yo!{Nx6mjl8HTH5NgXQ# z%m}Y6t@5Oa4?CKUjBuGOW75l<2UwJTr=Lbn$1s^n-~VYd4w+L6MI3Tm8R|iu`k4-l$6-&e za|RgEbm+_BN_K1j`)+#Pr~$g92XF%{(-_tEWd)bM*YROL({T|llVwbLnT+rvy;aly z0R0Nuc1RD);Ye0h^oMy!QW7LDaoUx`drd3)xp|uR{!GTjql-KpE$wqHa?}L!^F@+~ zXGGTF+V%LYi;y6v#W?FiR>+LuQfY?efMb_=YJyWHLejtH29*px@kniDaD)7qC~Z^q z7RI8Psm~S;M6QHMFSj-FEJ-eM4OG`TX##h8ku#`vSuK?Qn7G-ezZji9tNoPR3AdQw zYI!a{n+%C)jhyRga+T}Qy2{OTR77ZajS<-g+3R^Xk;#& zU^@$}tTCSCj~O{>^VG~(C27hvP}w}FO#shYL>pFz3zp)3MdA}COE^DUG@GG!5Y=Wz zc*d%tlN4GJ+No)DJv+lBeX7pm1@W1;j54&0;4*U52KAg(bm7I}7wu8B#ViM6xRo`{ zc~x;HNy0>}3=lEgx?GV^1(&vb?pab;Z0^ci2Z6!hI*YXQ6E4)!G+~IgIISQoLx3`F z$@3x^7ttaarX&|R+qdk%y2{OTP()y5n37)Q46Q_DanpJh=+kKK*H7p&to5|gK zS%xky$U~MnkhFz?pIPmX$)Jc9$+0E5%2i+)bmv})c=~rc1B>s_q8o|9!I}EL>{~MI zA&ORVC^G)RH4e=Vm;>(9if>_&*=U#yi-%WvGGO|yywFo4*t3>N!k!UeQ3{KZSUCdY zs|B(oXSaD_LYUAofnJe+BmW|M*9>U{Z1!-vk>Ae$s3YAB<%NRYzcyjXJ{H6c>_UkV{z5VlF@BNSe`SX`wfBNzF MU;q8b&p-U*|F8OMi~s-t diff --git a/resources/meshes/kossel_pro_build_platform.stl b/resources/meshes/kossel_pro_build_platform.stl index 8188f0408f50e3a8b58efc5fc7f09d13b1704c8a..31dcea7dc8d3e98b75e4450e35690d309fc00008 100644 GIT binary patch literal 163084 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 IP1(KrKe0?$cmMzZ literal 561386 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

3@4jOa#%DynG97{T8C;`@R|6ML73F( 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 diff --git a/resources/meshes/makeR_prusa_tairona_i3_platform.stl b/resources/meshes/makeR_prusa_tairona_i3_platform.stl index 2e4b650637fce4d112f163cae874ad7db960fbda..d6e2b92a8e2c9b92dfa3e847dd99e179453a88e9 100644 GIT binary patch literal 134284 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 J+u#4~{{eLAe{cW* diff --git a/resources/meshes/mendel90_platform.stl b/resources/meshes/mendel90_platform.stl index 706c90539d578ca4e44a0aa71810279f6b7c5e14..e9cccea41ab056421a0524ade5a0ace192ba4001 100644 GIT binary patch literal 170484 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 oS6V*aRJlT28seOsOeHq)$ literal 589730 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 diff --git a/resources/meshes/printrbot_simple_metal_upgrade.stl b/resources/meshes/printrbot_simple_metal_upgrade.stl index 3ff934c4782004d1cb1ef8edddb32e2e5546b965..4df4ee62170efb026df29188a3825435c1e36aca 100644 GIT binary patch literal 98084 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

e`tie^|pSx?Y0h&kITNeo%HkYSb=^@ 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 diff --git a/resources/meshes/prusai3_xl_platform.stl b/resources/meshes/prusai3_xl_platform.stl index c4b8dd1c99f0e896a2420d867d24a82f493bbfff..ad66835c065d04bef0e99e6b76a1dd13e0d785e4 100644 GIT binary patch literal 153884 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 K|F5tA@qYneBS+-` From 6f355d900648f561181ac669811bf47eb24d9974 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 10 May 2017 12:01:59 +0200 Subject: [PATCH 045/125] Make 3DMaker Starter visible again For some reason it was made invisible in 4e3e466a11e8c063cf64cc4426c19fa4a36276e3. It just works fine. --- resources/definitions/maker_starter.def.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/definitions/maker_starter.def.json b/resources/definitions/maker_starter.def.json index 74cdc694ee..305a35d0ca 100644 --- a/resources/definitions/maker_starter.def.json +++ b/resources/definitions/maker_starter.def.json @@ -4,6 +4,7 @@ "name": "3DMaker Starter", "inherits": "fdmprinter", "metadata": { + "visible": true, "author": "tvlgiao", "manufacturer": "3DMaker", "category": "Other", From 577fc0f08210c6f68ab4dd17400e2167051f080e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 10 May 2017 12:52:48 +0200 Subject: [PATCH 046/125] Fix WorkspaceDialog to include resolve for definition_changes CURA-3756 --- plugins/3MFReader/WorkspaceDialog.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 1bae9575f2..9d6c70cf8b 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -1,7 +1,7 @@ # Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. -from PyQt5.QtCore import Qt, QUrl, pyqtSignal, QObject, pyqtProperty, QCoreApplication +from PyQt5.QtCore import QUrl, pyqtSignal, QObject, pyqtProperty, QCoreApplication from UM.FlameProfiler import pyqtSlot from PyQt5.QtQml import QQmlComponent, QQmlContext from UM.PluginRegistry import PluginRegistry @@ -29,11 +29,13 @@ class WorkspaceDialog(QObject): self._default_strategy = "override" self._result = {"machine": self._default_strategy, "quality_changes": self._default_strategy, + "definition_changes": self._default_strategy, "material": self._default_strategy} self._visible = False self.showDialogSignal.connect(self.__show) self._has_quality_changes_conflict = False + self._has_definition_changes_conflict = False self._has_machine_conflict = False self._has_material_conflict = False self._num_visible_settings = 0 @@ -51,6 +53,7 @@ class WorkspaceDialog(QObject): machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() + definitionChangesConflictChanged = pyqtSignal() materialConflictChanged = pyqtSignal() numVisibleSettingsChanged = pyqtSignal() activeModeChanged = pyqtSignal() @@ -185,6 +188,10 @@ class WorkspaceDialog(QObject): def qualityChangesConflict(self): return self._has_quality_changes_conflict + @pyqtProperty(bool, notify=definitionChangesConflictChanged) + def definitionChangesConflict(self): + return self._has_definition_changes_conflict + @pyqtProperty(bool, notify=materialConflictChanged) def materialConflict(self): return self._has_material_conflict @@ -214,11 +221,18 @@ class WorkspaceDialog(QObject): self._has_quality_changes_conflict = quality_changes_conflict self.qualityChangesConflictChanged.emit() + def setDefinitionChangesConflict(self, definition_changes_conflict): + if self._has_definition_changes_conflict != definition_changes_conflict: + self._has_definition_changes_conflict = definition_changes_conflict + self.definitionChangesConflictChanged.emit() + def getResult(self): if "machine" in self._result and not self._has_machine_conflict: self._result["machine"] = None if "quality_changes" in self._result and not self._has_quality_changes_conflict: self._result["quality_changes"] = None + if "definition_changes" in self._result and not self._has_definition_changes_conflict: + self._result["definition_changes"] = None if "material" in self._result and not self._has_material_conflict: self._result["material"] = None return self._result @@ -240,6 +254,7 @@ class WorkspaceDialog(QObject): # Reset the result self._result = {"machine": self._default_strategy, "quality_changes": self._default_strategy, + "definition_changes": self._default_strategy, "material": self._default_strategy} self._visible = True self.showDialogSignal.emit() From 77864f4237ea51713a3ca71ab8cc2ae1fee8b23d Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 10 May 2017 13:06:58 +0200 Subject: [PATCH 047/125] WIP: Fix definition_changes handling in 3mf reader CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 68 ++++++++++----------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index c0c3493f71..5dccf9e981 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -352,7 +352,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Get quality_changes and user profiles saved in the workspace instance_container_files = [name for name in cura_file_names if name.endswith(self._instance_container_suffix)] user_instance_containers = [] - quality_changes_instance_containers = [] + quality_and_definition_changes_instance_containers = [] for instance_container_file in instance_container_files: container_id = self._stripFileToId(instance_container_file) instance_container = InstanceContainer(container_id) @@ -387,18 +387,18 @@ class ThreeMFWorkspaceReader(WorkspaceReader): instance_container.setMetaDataEntry("machine", self.getNewId(machine_id)) containers_to_add.append(instance_container) user_instance_containers.append(instance_container) - elif container_type == "quality_changes": + elif container_type in ("quality_changes", "definition_changes"): # Check if quality changes already exists. - quality_changes = self._container_registry.findInstanceContainers(id = container_id) - if not quality_changes: + changes_containers = self._container_registry.findInstanceContainers(id = container_id) + if not changes_containers: containers_to_add.append(instance_container) else: - if self._resolve_strategies["quality_changes"] == "override": - quality_changes[0].deserialize(archive.open(instance_container_file).read().decode("utf-8")) - elif self._resolve_strategies["quality_changes"] is None: + if self._resolve_strategies[container_type] == "override": + changes_containers[0].deserialize(archive.open(instance_container_file).read().decode("utf-8")) + elif self._resolve_strategies[container_type] is None: # The ID already exists, but nothing in the values changed, so do nothing. pass - quality_changes_instance_containers.append(instance_container) + quality_and_definition_changes_instance_containers.append(instance_container) else: existing_container = self._container_registry.findInstanceContainers(id = container_id) if not existing_container: @@ -411,10 +411,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Get the stack(s) saved in the workspace. Logger.log("d", "Workspace loading is checking stacks containers...") - global_stack_file, extruder_stack_files = self._determineGlobalAndExtruderStackFiles(file_name, - cura_file_names) + global_stack_file, extruder_stack_files = self._determineGlobalAndExtruderStackFiles(file_name, cura_file_names) global_stack = None + old_extruder_stacks = Application.getInstance().getGlobalContainerStack().extruders extruder_stacks = [] extruder_stacks_added = [] container_stacks_added = [] @@ -535,29 +535,30 @@ class ThreeMFWorkspaceReader(WorkspaceReader): global_stack.replaceContainer(0, container) continue - if self._resolve_strategies["quality_changes"] == "new": - # Quality changes needs to get a new ID, added to registry and to the right stacks - for container in quality_changes_instance_containers: - old_id = container.getId() - container.setName(self._container_registry.uniqueName(container.getName())) - # We're not really supposed to change the ID in normal cases, but this is an exception. - container._id = self.getNewId(container.getId()) + for container_type in ("quality_changes", "definition_changes"): + if self._resolve_strategies[container_type] == "new": + # Quality changes needs to get a new ID, added to registry and to the right stacks + for container in quality_and_definition_changes_instance_containers: + old_id = container.getId() + container.setName(self._container_registry.uniqueName(container.getName())) + # We're not really supposed to change the ID in normal cases, but this is an exception. + container._id = self.getNewId(container.getId()) - # The container was not added yet, as it didn't have an unique ID. It does now, so add it. - self._container_registry.addContainer(container) + # The container was not added yet, as it didn't have an unique ID. It does now, so add it. + self._container_registry.addContainer(container) - # Replace the quality changes container - old_container = global_stack.findContainer({"type": "quality_changes"}) - if old_container.getId() == old_id: - quality_changes_index = global_stack.getContainerIndex(old_container) - global_stack.replaceContainer(quality_changes_index, container) - continue - - for stack in extruder_stacks: - old_container = stack.findContainer({"type": "quality_changes"}) + # Replace the quality/definition changes container + old_container = global_stack.findContainer({"type": container_type}) if old_container.getId() == old_id: - quality_changes_index = stack.getContainerIndex(old_container) - stack.replaceContainer(quality_changes_index, container) + changes_index = global_stack.getContainerIndex(old_container) + global_stack.replaceContainer(changes_index, container) + continue + + for stack in extruder_stacks: + old_container = stack.findContainer({"type": container_type}) + if old_container.getId() == old_id: + changes_index = stack.getContainerIndex(old_container) + stack.replaceContainer(changes_index, container) if self._resolve_strategies["material"] == "new": for material in material_containers: @@ -587,10 +588,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # if we are reusing an existing global stack, it can already have extruders associated, so we need to remove # them first - if global_stack.extruders: - for extruder_stack in global_stack.extruders: - if extruder_stack not in extruder_stacks_added: # skip new ones - self._container_registry.removeContainer(extruder_stack.getId()) + for extruder_stack in old_extruder_stacks: + if extruder_stack not in extruder_stacks: # skip new ones + self._container_registry.removeContainer(extruder_stack.getId()) for stack in extruder_stacks: stack.setNextStack(global_stack) From e313794b1269a7c2e7ea6ea16c8362c0d0b7041b Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 13:16:49 +0200 Subject: [PATCH 048/125] Fixed posponing of certain events CURA-3780 --- cura/Settings/CuraContainerStack.py | 12 ++++++------ cura/Settings/MachineManager.py | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index b76062b7aa..6cffa6030b 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -66,8 +66,8 @@ class CuraContainerStack(ContainerStack): ## Set the quality changes container. # # \param new_quality_changes The new quality changes container. It is expected to have a "type" metadata entry with the value "quality_changes". - def setQualityChanges(self, new_quality_changes: InstanceContainer) -> None: - self.replaceContainer(_ContainerIndexes.QualityChanges, new_quality_changes) + def setQualityChanges(self, new_quality_changes: InstanceContainer, postpone_emit = False) -> None: + self.replaceContainer(_ContainerIndexes.QualityChanges, new_quality_changes, postpone_emit = postpone_emit) ## Set the quality changes container by an ID. # @@ -93,8 +93,8 @@ class CuraContainerStack(ContainerStack): ## Set the quality container. # # \param new_quality The new quality container. It is expected to have a "type" metadata entry with the value "quality". - def setQuality(self, new_quality: InstanceContainer) -> None: - self.replaceContainer(_ContainerIndexes.Quality, new_quality) + def setQuality(self, new_quality: InstanceContainer, postpone_emit = False) -> None: + self.replaceContainer(_ContainerIndexes.Quality, new_quality, postpone_emit = postpone_emit) ## Set the quality container by an ID. # @@ -131,8 +131,8 @@ class CuraContainerStack(ContainerStack): ## Set the material container. # # \param new_quality_changes The new material container. It is expected to have a "type" metadata entry with the value "quality_changes". - def setMaterial(self, new_material: InstanceContainer) -> None: - self.replaceContainer(_ContainerIndexes.Material, new_material) + def setMaterial(self, new_material: InstanceContainer, postpone_emit = False) -> None: + self.replaceContainer(_ContainerIndexes.Material, new_material, postpone_emit = postpone_emit) ## Set the material container by an ID. # diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index ba8ef39e54..f9bdd0805a 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -835,8 +835,8 @@ class MachineManager(QObject): name_changed_connect_stacks.append(stack_quality) name_changed_connect_stacks.append(stack_quality_changes) - self._replaceQualityOrQualityChangesInStack(stack, stack_quality) - self._replaceQualityOrQualityChangesInStack(stack, stack_quality_changes) + self._replaceQualityOrQualityChangesInStack(stack, stack_quality, postpone_emit=True) + self._replaceQualityOrQualityChangesInStack(stack, stack_quality_changes, postpone_emit=True) # Send emits that are postponed in replaceContainer. # Here the stacks are finished replacing and every value can be resolved based on the current state. @@ -955,13 +955,13 @@ class MachineManager(QObject): container_type = container.getMetaDataEntry("type") if container_type == "quality": stack.quality.nameChanged.disconnect(self._onQualityNameChanged) - stack.setQuality(container) + stack.setQuality(container, postpone_emit = postpone_emit) stack.qualityChanges.nameChanged.connect(self._onQualityNameChanged) elif container_type == "quality_changes" or container_type is None: # If the container is an empty container, we need to change the quality_changes. # Quality can never be set to empty. stack.qualityChanges.nameChanged.disconnect(self._onQualityNameChanged) - stack.setQualityChanges(container) + stack.setQualityChanges(container, postpone_emit = postpone_emit) stack.qualityChanges.nameChanged.connect(self._onQualityNameChanged) self._onQualityNameChanged() From bfb76540d01ec754211a7f8afbe9d98cb90de5aa Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 13:22:34 +0200 Subject: [PATCH 049/125] InstanceContainerchanged is now also on a timer. This greatly reduces the signal storm resulting from changing quality / material in multi extrusion machines. CURA-3780 --- cura/Settings/MachineManager.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index f9bdd0805a..fcdc5a2b46 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -51,6 +51,11 @@ class MachineManager(QObject): self._error_check_timer.setSingleShot(True) self._error_check_timer.timeout.connect(self._updateStacksHaveErrors) + self._instance_container_timer = QTimer() + self._instance_container_timer.setInterval(250) + self._instance_container_timer.setSingleShot(True) + self._instance_container_timer.timeout.connect(self.__onInstanceContainersChanged) + Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) ## When the global container is changed, active material probably needs to be updated. self.globalContainerChanged.connect(self.activeMaterialChanged) @@ -317,23 +322,15 @@ class MachineManager(QObject): # on _active_container_stack. If it changes, then the properties change. self.activeQualityChanged.emit() - def _onInstanceContainersChanged(self, container): - container_type = container.getMetaDataEntry("type") - - if container_type == "quality": - self.activeQualityChanged.emit() - elif container_type == "variant": - self.activeVariantChanged.emit() - elif container_type == "material": - self.activeMaterialChanged.emit() - else: - # We don't know which one it is, send all the signals - self.activeQualityChanged.emit() - self.activeVariantChanged.emit() - self.activeMaterialChanged.emit() - + def __onInstanceContainersChanged(self): + self.activeQualityChanged.emit() + self.activeVariantChanged.emit() + self.activeMaterialChanged.emit() self._error_check_timer.start() + def _onInstanceContainersChanged(self, container): + self._instance_container_timer.start() + def _onPropertyChanged(self, key, property_name): if property_name == "value": # Notify UI items, such as the "changed" star in profile pull down menu. From 9bb6aadc660b4c0cf5cbe919124ef37517f819ed Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 10 May 2017 13:59:02 +0200 Subject: [PATCH 050/125] Remove non-existing nozzle offset settings They seem to be auto-generated or some sort. --- resources/definitions/alya3dp.def.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/resources/definitions/alya3dp.def.json b/resources/definitions/alya3dp.def.json index a0e9f03fbb..1ea16773d6 100644 --- a/resources/definitions/alya3dp.def.json +++ b/resources/definitions/alya3dp.def.json @@ -42,12 +42,6 @@ "machine_nozzle_gantry_distance": { "default_value": 55 }, - "machine_nozzle_offset_x_1": { - "default_value": 18 - }, - "machine_nozzle_offset_y_1": { - "default_value": 0 - }, "machine_gcode_flavor": { "default_value": "RepRap" }, From 69eb9812596d44176801a1d1c2f4bd9cf4d5d4c4 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 10 May 2017 14:02:38 +0200 Subject: [PATCH 051/125] Remove nozzle offsets from printer definition This setting is only defined in fdmextruder, so it can't be used here. --- resources/definitions/innovo_inventor.def.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/resources/definitions/innovo_inventor.def.json b/resources/definitions/innovo_inventor.def.json index 40a2849979..4b169c5e31 100644 --- a/resources/definitions/innovo_inventor.def.json +++ b/resources/definitions/innovo_inventor.def.json @@ -44,12 +44,6 @@ "gantry_height": { "default_value": 82.3 }, - "machine_nozzle_offset_x": { - "default_value": 0 - }, - "machine_nozzle_offset_y": { - "default_value": 15 - }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, From d18e96972e40c41b6fd89fd7e9ca60a5ad67f8ff Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 10 May 2017 15:28:19 +0200 Subject: [PATCH 052/125] Rename TPU Normal Print to TPU Draft Print The profile name is 'Draft' so this makes it easier to find. This also makes it consistent with the rest of the profile file names. It's good to do this before we need to make a version upgrade for it. --- ...U_Normal_Print.inst.cfg => um3_aa0.8_TPU_Draft_Print.inst.cfg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename resources/quality/ultimaker3/{um3_aa0.8_TPU_Normal_Print.inst.cfg => um3_aa0.8_TPU_Draft_Print.inst.cfg} (100%) diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Normal_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg similarity index 100% rename from resources/quality/ultimaker3/um3_aa0.8_TPU_Normal_Print.inst.cfg rename to resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg From d9f0e1fd4bf6a5a5639651f106ae31456334c106 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 10 May 2017 15:37:22 +0200 Subject: [PATCH 053/125] WIP project loading - at least it mostly works again. CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 100 +++++++++++++------- 1 file changed, 65 insertions(+), 35 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 5dccf9e981..4aa1f17ba1 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -305,6 +305,23 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # We do this so that if something goes wrong, it's easier to clean up. containers_to_add = [] + global_stack_file, extruder_stack_files = self._determineGlobalAndExtruderStackFiles(file_name, cura_file_names) + + global_stack = None + extruder_stacks = [] + extruder_stacks_added = [] + container_stacks_added = [] + + global_stack_id_original = self._stripFileToId(global_stack_file) + global_stack_id_new = global_stack_id_original + global_stack_need_rename = False + if self._resolve_strategies["machine"] == "new": + # We need a new id if the id already exists + if self._container_registry.findContainerStacks(id = global_stack_id_original): + global_stack_id_new = self.getNewId(global_stack_id_original) + global_stack_need_rename = True + + # TODO: For the moment we use pretty naive existence checking. If the ID is the same, we assume in quite a few # TODO: cases that the container loaded is the same (most notable in materials & definitions). # TODO: It might be possible that we need to add smarter checking in the future. @@ -403,6 +420,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): existing_container = self._container_registry.findInstanceContainers(id = container_id) if not existing_container: containers_to_add.append(instance_container) + if global_stack_need_rename: + if instance_container.getMetaDataEntry("machine"): + instance_container.setMetaDataEntry("machine", global_stack_id_new) # Add all the containers right before we try to add / serialize the stack for container in containers_to_add: @@ -411,17 +431,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Get the stack(s) saved in the workspace. Logger.log("d", "Workspace loading is checking stacks containers...") - global_stack_file, extruder_stack_files = self._determineGlobalAndExtruderStackFiles(file_name, cura_file_names) - - global_stack = None - old_extruder_stacks = Application.getInstance().getGlobalContainerStack().extruders - extruder_stacks = [] - extruder_stacks_added = [] - container_stacks_added = [] # load extruder stack files try: - for extruder_stack_file in extruder_stack_files: + for index, extruder_stack_file in enumerate(extruder_stack_files): container_id = self._stripFileToId(extruder_stack_file) container_stacks = self._container_registry.findContainerStacks(id = container_id) @@ -442,12 +455,36 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._container_registry.addContainer(stack) extruder_stacks_added.append(stack) else: - # container not found, create a new one - stack = ExtruderStack(container_id) - stack.deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) - self._container_registry.addContainer(stack) - extruder_stacks_added.append(stack) + if self._resolve_strategies["machine"] == "override": + global_stacks = self._container_registry.findContainerStacks(id = global_stack_id_original) + # deserialize new extruder stack over the current ones + if global_stacks: + old_extruder_stack_id = global_stacks[0].extruders[index].getId() + # HACK delete file + self._container_registry._deleteFiles(global_stacks[0].extruders[index]) + global_stacks[0].extruders[index].deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) + # HACK + global_stacks[0]._extruders = global_stacks[0]._extruders[:2] + # HACK update cache + del self._container_registry._id_container_cache[old_extruder_stack_id] + new_extruder_stack_id = global_stacks[0].extruders[index].getId() + self._container_registry._id_container_cache[new_extruder_stack_id] = global_stacks[0].extruders[index] + stack = global_stacks[0].extruders[index] + else: + Logger.log("w", "Could not find global stack, while I expected it: %s" % global_stack_id_original) + elif self._resolve_strategies["machine"] == "new": + # container not found, create a new one + stack = ExtruderStack(container_id) + stack.deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) + self._container_registry.addContainer(stack) + extruder_stacks_added.append(stack) + else: + Logger.log("w", "Unknown resolve strategy: %s" % str(self._resolve_strategies["machine"])) + + if global_stack_need_rename: + if stack.getMetaDataEntry("machine"): + stack.setMetaDataEntry("machine", global_stack_id_new) extruder_stacks.append(stack) except: @@ -460,10 +497,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # load global stack file try: - container_id = self._stripFileToId(global_stack_file) - # Check if a stack by this ID already exists; - container_stacks = self._container_registry.findContainerStacks(id = container_id) + container_stacks = self._container_registry.findContainerStacks(id = global_stack_id_original) if container_stacks: stack = container_stacks[0] @@ -478,17 +513,16 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if network_authentication_key: container_stacks[0].addMetaDataEntry("network_authentication_key", network_authentication_key) elif self._resolve_strategies["machine"] == "new": - new_id = self.getNewId(container_id) - stack = GlobalStack(new_id) + stack = GlobalStack(global_stack_id_new) stack.deserialize(archive.open(global_stack_file).read().decode("utf-8")) # Ensure a unique ID and name - stack._id = new_id + stack._id = global_stack_id_new # Extruder stacks are "bound" to a machine. If we add the machine as a new one, the id of the # bound machine also needs to change. if stack.getMetaDataEntry("machine", None): - stack.setMetaDataEntry("machine", self.getNewId(stack.getMetaDataEntry("machine"))) + stack.setMetaDataEntry("machine", global_stack_id_new) # Only machines need a new name, stacks may be non-unique stack.setName(self._container_registry.uniqueName(stack.getName())) @@ -498,7 +532,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Logger.log("w", "Resolve strategy of %s for machine is not supported", self._resolve_strategies["machine"]) else: # no existing container stack, so we create a new one - stack = GlobalStack(container_id) + stack = GlobalStack(global_stack_id_new) # Deserialize stack by converting read data from bytes to string stack.deserialize(archive.open(global_stack_file).read().decode("utf-8")) container_stacks_added.append(stack) @@ -575,30 +609,26 @@ class ThreeMFWorkspaceReader(WorkspaceReader): stack.replaceContainer(material_index, material) continue - for stack in extruder_stacks: - ExtruderManager.getInstance().registerExtruder(stack, global_stack.getId()) + if extruder_stacks: + for stack in extruder_stacks: + ExtruderManager.getInstance().registerExtruder(stack, global_stack.getId()) else: # Machine has no extruders, but it needs to be registered with the extruder manager. ExtruderManager.getInstance().registerExtruder(None, global_stack.getId()) Logger.log("d", "Workspace loading is notifying rest of the code of changes...") - # Notify everything/one that is to notify about changes. - global_stack.containersChanged.emit(global_stack.getTop()) - - # if we are reusing an existing global stack, it can already have extruders associated, so we need to remove - # them first - for extruder_stack in old_extruder_stacks: - if extruder_stack not in extruder_stacks: # skip new ones - self._container_registry.removeContainer(extruder_stack.getId()) - - for stack in extruder_stacks: - stack.setNextStack(global_stack) - stack.containersChanged.emit(stack.getTop()) + if self._resolve_strategies["machine"] == "new": + for stack in extruder_stacks: + stack.setNextStack(global_stack) + stack.containersChanged.emit(stack.getTop()) # Actually change the active machine. Application.getInstance().setGlobalContainerStack(global_stack) + # Notify everything/one that is to notify about changes. + global_stack.containersChanged.emit(global_stack.getTop()) + # Load all the nodes / meshdata of the workspace nodes = self._3mf_mesh_reader.read(file_name) if nodes is None: From 27d6bebf3202180b75ebf7483dd9c9a4a0249c86 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 16:12:01 +0200 Subject: [PATCH 054/125] Adding a new printer now activates it again CURA-3783 --- cura/Settings/MachineManager.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index fcdc5a2b46..9d66bc7030 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -350,9 +350,7 @@ class MachineManager(QObject): def addMachine(self, name: str, definition_id: str) -> None: new_stack = CuraStackBuilder.createMachine(name, definition_id) if new_stack: - # only set the global container stack if there was none - if self._global_container_stack is None: - Application.getInstance().setGlobalContainerStack(new_stack) + Application.getInstance().setGlobalContainerStack(new_stack) else: Logger.log("w", "Failed creating a new machine!") From 79561f44b13f821bc00b00ca6c642cf0b8bd2dd1 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 10 May 2017 16:16:57 +0200 Subject: [PATCH 055/125] Fix project load, new non existing machine. CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 4aa1f17ba1..e751211d04 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -262,6 +262,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return WorkspaceReader.PreReadResult.cancelled self._resolve_strategies = self._dialog.getResult() + # Default values + for k, v in self._resolve_strategies.items(): + if v is None: + self._resolve_strategies[k] = "new" return WorkspaceReader.PreReadResult.accepted @@ -582,7 +586,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._container_registry.addContainer(container) # Replace the quality/definition changes container - old_container = global_stack.findContainer({"type": container_type}) + if container_type == "quality_changes": + old_container = global_stack.qualityChanges + elif container_type == "definition_changes": + old_container = global_stack.definitionChanges + # old_container = global_stack.findContainer({"type": container_type}) if old_container.getId() == old_id: changes_index = global_stack.getContainerIndex(old_container) global_stack.replaceContainer(changes_index, container) From fd340a12707900cc6f391924cfd604c5c57f9ca5 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 16:25:23 +0200 Subject: [PATCH 056/125] Empty containers now also trigger extruder model update --- cura/Settings/ExtrudersModel.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cura/Settings/ExtrudersModel.py b/cura/Settings/ExtrudersModel.py index e24d4d559a..d2922ebcc5 100644 --- a/cura/Settings/ExtrudersModel.py +++ b/cura/Settings/ExtrudersModel.py @@ -117,10 +117,12 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): self._active_extruder_stack = active_extruder_stack def _onExtruderStackContainersChanged(self, container): - if container.getMetaDataEntry("type") == "material": + # Update when there is an empty container or material change + if container.getMetaDataEntry("type") == "material" or container.getMetaDataEntry("type") is None: # The ExtrudersModel needs to be updated when the material-name or -color changes, because the user identifies extruders by material-name self._updateExtruders() + modelChanged = pyqtSignal() def _updateExtruders(self): @@ -137,7 +139,6 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): changed = True items = [] - global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: if self._add_global: From 2b1ca5422714715453b16bcea1911f0168e6fc6b Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 10 May 2017 16:28:34 +0200 Subject: [PATCH 057/125] Reset all first start actions for UM2go CURA-3742 --- resources/definitions/ultimaker2_go.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/ultimaker2_go.def.json b/resources/definitions/ultimaker2_go.def.json index e679f25f40..5873dfbc90 100644 --- a/resources/definitions/ultimaker2_go.def.json +++ b/resources/definitions/ultimaker2_go.def.json @@ -13,7 +13,7 @@ "platform": "ultimaker2go_platform.obj", "platform_texture": "Ultimaker2Gobackplate.png", "platform_offset": [0, 0, 0], - "first_start_actions": [""], + "first_start_actions": [], "supported_actions":["UpgradeFirmware"] }, From 4abcc8b3f15d7a3d4aa3e0ace2a9b4d8c0bcb46c Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Wed, 10 May 2017 16:31:41 +0200 Subject: [PATCH 058/125] JSON fix: magic_spiralize had child setting (CURA-3771) it shouldn't have a child setting because that child is not the underlying setting used by the engine. Parent settings are frontend-only settings which are merely used to let the user edit multiple leaf settings at once. --- resources/definitions/fdmprinter.def.json | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index d9fe2a72e0..46b3b125a4 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4587,18 +4587,15 @@ "type": "bool", "default_value": false, "settable_per_mesh": false, - "settable_per_extruder": false, - "children": - { - "smooth_spiralized_contours": - { - "label": "Smooth Spiralized Contours", - "description": "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details.", - "type": "bool", - "default_value": true, - "enabled": "magic_spiralize" - } - } + "settable_per_extruder": false + }, + "smooth_spiralized_contours": + { + "label": "Smooth Spiralized Contours", + "description": "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details.", + "type": "bool", + "default_value": true, + "enabled": "magic_spiralize" } } }, From e187b9645589e78aa3d21f5cd6dc5e122663f2a9 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 10 May 2017 17:15:47 +0200 Subject: [PATCH 059/125] Add period after sentence Contributes to issue CURA-3742. --- .../UM2UpgradeSelectionMachineAction.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml b/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml index d59686e34e..5e0096c6b0 100644 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml +++ b/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml @@ -34,7 +34,7 @@ Cura.MachineAction anchors.topMargin: UM.Theme.getSize("default_margin").height width: parent.width wrapMode: Text.WordWrap - text: catalog.i18nc("@label","Please select any upgrades made to this Ultimaker 2"); + text: catalog.i18nc("@label","Please select any upgrades made to this Ultimaker 2."); } CheckBox From 93c5b382ba3482e7f621a32be44fbca267f33f3c Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 10 May 2017 17:37:35 +0200 Subject: [PATCH 060/125] Fix selecting settings for Per Model Settings with single extrusion printers --- .../PerObjectSettingVisibilityHandler.py | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py b/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py index b283608cb0..65159888b0 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py @@ -63,17 +63,20 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand stack_nr = -1 stack = None # Check from what stack we should copy the raw property of the setting from. - if definition.limit_to_extruder != "-1" and self._stack.getProperty("machine_extruder_count", "value") > 1: - # A limit to extruder function was set and it's a multi extrusion machine. Check what stack we do need to use. - stack_nr = str(int(round(float(self._stack.getProperty(item, "limit_to_extruder"))))) + if self._stack.getProperty("machine_extruder_count", "value") > 1: + if definition.limit_to_extruder != "-1": + # A limit to extruder function was set and it's a multi extrusion machine. Check what stack we do need to use. + stack_nr = str(int(round(float(self._stack.getProperty(item, "limit_to_extruder"))))) - # Check if the found stack_number is in the extruder list of extruders. - if stack_nr not in ExtruderManager.getInstance().extruderIds and self._stack.getProperty("extruder_nr", "value") is not None: - stack_nr = -1 + # Check if the found stack_number is in the extruder list of extruders. + if stack_nr not in ExtruderManager.getInstance().extruderIds and self._stack.getProperty("extruder_nr", "value") is not None: + stack_nr = -1 - # Use the found stack number to get the right stack to copy the value from. - if stack_nr in ExtruderManager.getInstance().extruderIds: - stack = ContainerRegistry.getInstance().findContainerStacks(id = ExtruderManager.getInstance().extruderIds[stack_nr])[0] + # Use the found stack number to get the right stack to copy the value from. + if stack_nr in ExtruderManager.getInstance().extruderIds: + stack = ContainerRegistry.getInstance().findContainerStacks(id = ExtruderManager.getInstance().extruderIds[stack_nr])[0] + else: + stack = self._stack # Use the raw property to set the value (so the inheritance doesn't break) if stack is not None: From 04611b06af3a79ba0fbe25a3f30effcf003837f3 Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 10 May 2017 20:14:03 +0200 Subject: [PATCH 061/125] Fix two spelling errors TRI-1450 --- plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py | 2 +- resources/qml/Preferences/GeneralPage.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index 459de3248d..9b0eee7096 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -638,7 +638,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): if self._json_printer_state["heads"][0]["extruders"][index]["hotend"]["id"] == "": Logger.log("e", "No cartridge loaded in slot %s, unable to start print", index + 1) self._error_message = Message( - i18n_catalog.i18nc("@info:status", "Unable to start a new print job. No PrinterCore loaded in slot {0}".format(index + 1))) + i18n_catalog.i18nc("@info:status", "Unable to start a new print job. No Printcore loaded in slot {0}".format(index + 1))) self._error_message.show() return if self._json_printer_state["heads"][0]["extruders"][index]["active_material"]["guid"] == "": diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 689f7aafa9..f825cfc08c 100755 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -322,7 +322,7 @@ UM.PreferencesPage UM.TooltipArea { width: childrenRect.width; height: childrenRect.height; - text: catalog.i18nc("@info:tooltip","Moves the camera so the model is in the center of the view when an model is selected") + text: catalog.i18nc("@info:tooltip","Moves the camera so the model is in the center of the view when a model is selected") CheckBox { From 9060bbf3b23239a09c20a48dbedda875321804e0 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 11 May 2017 09:42:56 +0200 Subject: [PATCH 062/125] Update extruderCount when extrudersModel got changed CURA-3755 The Timer delay is not reliable for updating the extruder Tabs. So we now rely on the modelChanged signal of the ExtrudersModel to do the update. --- .../MachineSettingsAction.qml | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.qml b/plugins/MachineSettingsAction/MachineSettingsAction.qml index 5a84642db5..654030b013 100644 --- a/plugins/MachineSettingsAction/MachineSettingsAction.qml +++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml @@ -16,23 +16,13 @@ Cura.MachineAction property var extrudersModel: Cura.ExtrudersModel{} property int extruderTabsCount: 0 - Component.onCompleted: + Connections { - // Populate extruder tabs after a short delay, because otherwise the tabs that are added when - // the dialog is created are stuck. - extruderTabsCountDelay.start(); - } - - Timer - { - id: extruderTabsCountDelay - repeat: false - interval: 1 - - onTriggered: + target: base.extrudersModel + onModelChanged: { - var extruderCount = parseInt(machineExtruderCountProvider.properties.value); - base.extruderTabsCount = (extruderCount > 1) ? extruderCount : 0; + var extruderCount = base.extrudersModel.rowCount(); + base.extruderTabsCount = extruderCount > 1 ? extruderCount : 0; } } @@ -46,7 +36,6 @@ Cura.MachineAction onAccepted: manager.onFinishAction() onRejected: manager.onFinishAction() onClosing: manager.onFinishAction() - onVisibilityChanged: extruderTabsCountDelay.start() } anchors.fill: parent; @@ -383,7 +372,6 @@ Cura.MachineAction onActivated: { manager.setMachineExtruderCount(index + 1); - base.extruderTabsCount = (index > 0) ? index + 1 : 0; } } From 00aff6d2f2809443c3fbb35395dbdaef5d681c33 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 10:29:18 +0200 Subject: [PATCH 063/125] Make feature labels more accurate for support It's used a bit differently. Contributes to issue CURA-3773. --- resources/qml/JobSpecs.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 8e89dc6dbc..13d855d993 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -180,9 +180,9 @@ Item { "inset_x": catalog.i18nc("@tooltip", "Inner Walls"), "skin": catalog.i18nc("@tooltip", "Skin"), "infill": catalog.i18nc("@tooltip", "Infill"), - "support_infill": catalog.i18nc("@tooltip", "Support"), + "support_infill": catalog.i18nc("@tooltip", "Support Infill"), "support_interface": catalog.i18nc("@tooltip", "Support Interface"), - "support": catalog.i18nc("@tooltip", "Helper Structures"), + "support": catalog.i18nc("@tooltip", "Support"), "travel": catalog.i18nc("@tooltip", "Travel"), "retract": catalog.i18nc("@tooltip", "Retractions"), "none": catalog.i18nc("@tooltip", "Other") From e2b39e7e33ef4136544dfb1f9605326aef46188c Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 11 May 2017 11:08:23 +0200 Subject: [PATCH 064/125] Fixed spacing of infill options CURA-3732 --- resources/qml/SidebarSimple.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 8066e2665a..eb58344013 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -53,7 +53,8 @@ Item id: infillCellRight height: childrenRect.height; - width: base.width * .55 + width: base.width * .5 + spacing: UM.Theme.getSize("default_margin").width anchors.left: infillCellLeft.right From e3236bec4deda9d1450e8604c9f4250d2ed7f34b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 11:22:02 +0200 Subject: [PATCH 065/125] Make wording more consistent Contributes to issue CURA-3732. --- resources/qml/SidebarSimple.qml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index eb58344013..3eaf0797e8 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -192,7 +192,7 @@ Item percentageMax: 0, stepsMin: -1, stepsMax: 0, - text: catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength"), + text: catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength."), icon: "hollow" }) infillModel.append({ @@ -203,7 +203,7 @@ Item percentageMax: 30, stepsMin: -1, stepsMax: 0, - text: catalog.i18nc("@label", "Light (20%) infill will give your model an average strength"), + text: catalog.i18nc("@label", "Light (20%) infill will give your model an average strength."), icon: "sparse" }) infillModel.append({ @@ -214,7 +214,7 @@ Item percentageMax: 70, stepsMin: -1, stepsMax: 0, - text: catalog.i18nc("@label", "Dense (50%) infill will give your model an above average strength"), + text: catalog.i18nc("@label", "Dense (50%) infill will give your model an above average strength."), icon: "dense" }) infillModel.append({ @@ -225,7 +225,7 @@ Item percentageMax: 9999999999, stepsMin: -1, stepsMax: 0, - text: catalog.i18nc("@label", "Solid (100%) infill will make your model completely solid"), + text: catalog.i18nc("@label", "Solid (100%) infill will make your model completely solid."), icon: "solid" }) infillModel.append({ @@ -237,7 +237,7 @@ Item stepsMin: 0, stepsMax: 9999999999, infill_layer_height: 1.5, - text: catalog.i18nc("@label", "This will gradually increase the amount of infill towards the top"), + text: catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top."), icon: "gradual" }) } From 8ff3079b3e1477f8b49a147b28bddffc94ee1d0f Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 12:00:54 +0200 Subject: [PATCH 066/125] Let CPE always use prime tower Also 0.8mm. --- resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg | 1 + 3 files changed, 3 insertions(+) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg index dbee576a94..ec1a384804 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg @@ -14,6 +14,7 @@ brim_width = 15 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 15 material_standby_temperature = 100 +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg index 9aa8b69381..372b5a41c1 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -15,6 +15,7 @@ layer_height = 0.4 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 20 material_standby_temperature = 100 +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg index 3f897c91d3..ec2f024141 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -15,6 +15,7 @@ layer_height = 0.3 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 17 material_standby_temperature = 100 +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) From f436da867429781943473b04c723e5126434b11d Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 11 May 2017 14:00:29 +0200 Subject: [PATCH 067/125] WIP: fix project loading and container renaming CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 103 ++++++++++++++------ 1 file changed, 75 insertions(+), 28 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index e751211d04..65a4858257 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -167,6 +167,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): quality_type = "" num_settings_overriden_by_quality_changes = 0 # How many settings are changed by the quality changes num_user_settings = 0 + quality_changes_conflict = False for instance_container_file in instance_container_files: container_id = self._stripFileToId(instance_container_file) instance_container = InstanceContainer(container_id) @@ -202,7 +203,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): file_name, cura_file_names) self._resolve_strategies = {"machine": None, "quality_changes": None, "material": None} machine_conflict = False - quality_changes_conflict = False for container_stack_file in [global_stack_file] + extruder_stack_files: container_id = self._stripFileToId(container_stack_file) serialized = archive.open(container_stack_file).read().decode("utf-8") @@ -262,6 +262,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return WorkspaceReader.PreReadResult.cancelled self._resolve_strategies = self._dialog.getResult() + # + # There can be 3 resolve strategies coming from the dialog: + # - new: create a new container + # - override: override the existing container + # - None: There is no conflict, which means containers with the same IDs may or may not be there already. + # If they are there, there is no conflict between the them. + # In this case, you can either create a new one, or safely override the existing one. + # # Default values for k, v in self._resolve_strategies.items(): if v is None: @@ -325,7 +333,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): global_stack_id_new = self.getNewId(global_stack_id_original) global_stack_need_rename = True - # TODO: For the moment we use pretty naive existence checking. If the ID is the same, we assume in quite a few # TODO: cases that the container loaded is the same (most notable in materials & definitions). # TODO: It might be possible that we need to add smarter checking in the future. @@ -352,21 +359,24 @@ class ThreeMFWorkspaceReader(WorkspaceReader): for material_container_file in material_container_files: container_id = self._stripFileToId(material_container_file) materials = self._container_registry.findInstanceContainers(id = container_id) + if not materials: material_container = xml_material_profile(container_id) material_container.deserialize(archive.open(material_container_file).read().decode("utf-8")) containers_to_add.append(material_container) else: - if not materials[0].isReadOnly(): # Only create new materials if they are not read only. + material_container = materials[0] + if not material_container.isReadOnly(): # Only create new materials if they are not read only. if self._resolve_strategies["material"] == "override": - materials[0].deserialize(archive.open(material_container_file).read().decode("utf-8")) + material_container.deserialize(archive.open(material_container_file).read().decode("utf-8")) elif self._resolve_strategies["material"] == "new": # Note that we *must* deserialize it with a new ID, as multiple containers will be # auto created & added. material_container = xml_material_profile(self.getNewId(container_id)) material_container.deserialize(archive.open(material_container_file).read().decode("utf-8")) containers_to_add.append(material_container) - material_containers.append(material_container) + + material_containers.append(material_container) Job.yieldThread() Logger.log("d", "Workspace loading is checking instance containers...") @@ -394,18 +404,20 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # The machine is going to get a spiffy new name, so ensure that the id's of user settings match. extruder_id = instance_container.getMetaDataEntry("extruder", None) if extruder_id: - new_id = self.getNewId(extruder_id) + "_current_settings" + new_extruder_id = self.getNewId(extruder_id) + new_id = new_extruder_id + "_current_settings" instance_container._id = new_id instance_container.setName(new_id) - instance_container.setMetaDataEntry("extruder", self.getNewId(extruder_id)) + instance_container.setMetaDataEntry("extruder", new_extruder_id) containers_to_add.append(instance_container) machine_id = instance_container.getMetaDataEntry("machine", None) if machine_id: - new_id = self.getNewId(machine_id) + "_current_settings" + new_machine_id = self.getNewId(machine_id) + new_id = new_machine_id + "_current_settings" instance_container._id = new_id instance_container.setName(new_id) - instance_container.setMetaDataEntry("machine", self.getNewId(machine_id)) + instance_container.setMetaDataEntry("machine", new_machine_id) containers_to_add.append(instance_container) user_instance_containers.append(instance_container) elif container_type in ("quality_changes", "definition_changes"): @@ -558,53 +570,88 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return None + # + # Replacing the old containers if resolve is "new". + # When resolve is "new", some containers will get renamed, so all the other containers that reference to those + # MUST get updated too. + # if self._resolve_strategies["machine"] == "new": # A new machine was made, but it was serialized with the wrong user container. Fix that now. for container in user_instance_containers: + # replacing the container ID for user instance containers for the extruders extruder_id = container.getMetaDataEntry("extruder", None) if extruder_id: for extruder in extruder_stacks: if extruder.getId() == extruder_id: extruder.replaceContainer(0, container) continue + + # replacing the container ID for user instance containers for the machine machine_id = container.getMetaDataEntry("machine", None) if machine_id: if global_stack.getId() == machine_id: global_stack.replaceContainer(0, container) continue - for container_type in ("quality_changes", "definition_changes"): - if self._resolve_strategies[container_type] == "new": + for changes_container_type in ("quality_changes", "definition_changes"): + if self._resolve_strategies[changes_container_type] == "new": # Quality changes needs to get a new ID, added to registry and to the right stacks - for container in quality_and_definition_changes_instance_containers: - old_id = container.getId() - container.setName(self._container_registry.uniqueName(container.getName())) + for each_changes_container in quality_and_definition_changes_instance_containers: + old_id = each_changes_container.getId() + each_changes_container.setName(self._container_registry.uniqueName(each_changes_container.getName())) # We're not really supposed to change the ID in normal cases, but this is an exception. - container._id = self.getNewId(container.getId()) + each_changes_container._id = self.getNewId(each_changes_container.getId()) # The container was not added yet, as it didn't have an unique ID. It does now, so add it. - self._container_registry.addContainer(container) + self._container_registry.addContainer(each_changes_container) - # Replace the quality/definition changes container - if container_type == "quality_changes": + # Find the old (current) changes container in the global stack + if changes_container_type == "quality_changes": old_container = global_stack.qualityChanges - elif container_type == "definition_changes": + elif changes_container_type == "definition_changes": old_container = global_stack.definitionChanges - # old_container = global_stack.findContainer({"type": container_type}) + + # sanity checks + # NOTE: The following cases SHOULD NOT happen!!!! + if not old_container: + Logger.log("e", "We try to get [%s] from the global stack [%s] but we got None instead!", + changes_container_type, global_stack.getId()) + + # Replace the quality/definition changes container if it's in the GlobalStack + # NOTE: we can get an empty container here, but the IDs will not match, + # so this comparison is fine. if old_container.getId() == old_id: - changes_index = global_stack.getContainerIndex(old_container) - global_stack.replaceContainer(changes_index, container) + if changes_container_type == "quality_changes": + global_stack.qualityChanges = each_changes_container + elif changes_container_type == "definition_changes": + global_stack.definitionChanges = each_changes_container continue - for stack in extruder_stacks: - old_container = stack.findContainer({"type": container_type}) - if old_container.getId() == old_id: - changes_index = stack.getContainerIndex(old_container) - stack.replaceContainer(changes_index, container) + # Replace the quality/definition changes container if it's in one of the ExtruderStacks + for each_extruder_stack in extruder_stacks: + changes_container = None + if changes_container_type == "quality_changes": + changes_container = each_extruder_stack.qualityChanges + elif changes_container_type == "definition_changes": + changes_container = each_extruder_stack.definitionChanges + + # sanity checks + # NOTE: The following cases SHOULD NOT happen!!!! + if not changes_container: + Logger.log("e", "We try to get [%s] from the extruder stack [%s] but we got None instead!", + changes_container_type, each_extruder_stack.getId()) + + # NOTE: we can get an empty container here, but the IDs will not match, + # so this comparison is fine. + if changes_container.getId() == old_id: + if changes_container_type == "quality_changes": + each_extruder_stack.qualityChanges = each_changes_container + elif changes_container_type == "definition_changes": + each_extruder_stack.definitionChanges = each_changes_container if self._resolve_strategies["material"] == "new": for material in material_containers: - old_material = global_stack.findContainer({"type": "material"}) + old_material = global_stack.material if old_material.getId() in self._id_mapping: material_index = global_stack.getContainerIndex(old_material) global_stack.replaceContainer(material_index, material) From bb0e7115775d67feeda7401ab4de1057c4248e4c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 11 May 2017 14:18:58 +0200 Subject: [PATCH 068/125] WIP: fix material container renaming in project loading CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 28 ++++++++++++++------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 65a4858257..0d244c4492 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -650,20 +650,30 @@ class ThreeMFWorkspaceReader(WorkspaceReader): each_extruder_stack.definitionChanges = each_changes_container if self._resolve_strategies["material"] == "new": - for material in material_containers: + for each_material in material_containers: old_material = global_stack.material - if old_material.getId() in self._id_mapping: - material_index = global_stack.getContainerIndex(old_material) - global_stack.replaceContainer(material_index, material) + + # check if the old material container has been renamed to this material container ID + # if the container hasn't been renamed, we do nothing. + new_id = self._id_mapping.get(old_material.getId()) + if new_id is None or new_id != each_material.getId(): continue - for stack in extruder_stacks: - old_material = stack.findContainer({"type": "material"}) - if old_material.getId() in self._id_mapping: - material_index = stack.getContainerIndex(old_material) - stack.replaceContainer(material_index, material) + if old_material.getId() in self._id_mapping: + global_stack.material = each_material + + for each_extruder_stack in extruder_stacks: + old_material = each_extruder_stack.material + + # check if the old material container has been renamed to this material container ID + # if the container hasn't been renamed, we do nothing. + new_id = self._id_mapping.get(old_material.getId()) + if new_id is None or new_id != each_material.getId(): continue + if old_material.getId() in self._id_mapping: + each_extruder_stack.material = each_material + if extruder_stacks: for stack in extruder_stacks: ExtruderManager.getInstance().registerExtruder(stack, global_stack.getId()) From e7fc36587d7108dac0be7743258a54f7549fd1d4 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 14:27:56 +0200 Subject: [PATCH 069/125] Remove Cubic Subdivision Radius setting Just removes the definition. No version upgrade yet. That is next up. Contributes to issue CURA-3427. --- resources/definitions/fdmprinter.def.json | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 46b3b125a4..628ca1688e 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1217,19 +1217,6 @@ "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled", "settable_per_mesh": true }, - "sub_div_rad_mult": - { - "label": "Cubic Subdivision Radius", - "description": "A multiplier on the radius from the center of each cube to check for the boundary of the model, as to decide whether this cube should be subdivided. Larger values lead to more subdivisions, i.e. more small cubes.", - "unit": "%", - "type": "float", - "default_value": 100, - "minimum_value": "0", - "minimum_value_warning": "100", - "maximum_value_warning": "200", - "enabled": "infill_sparse_density > 0 and infill_pattern == 'cubicsubdiv'", - "settable_per_mesh": true - }, "sub_div_rad_add": { "label": "Cubic Subdivision Shell", From 99cb8bc169850d90fb9b4630cddf0e536ca20688 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 14:29:25 +0200 Subject: [PATCH 070/125] Re-enable Version 2.4 to 2.5 upgrade So that we can remove settings again, among which the Cubic Subdivision Radius setting. Contributes to issue CURA-3427. --- plugins/VersionUpgrade/VersionUpgrade24to25/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade24to25/__init__.py b/plugins/VersionUpgrade/VersionUpgrade24to25/__init__.py index 701224787c..a7480e802d 100644 --- a/plugins/VersionUpgrade/VersionUpgrade24to25/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade24to25/__init__.py @@ -41,5 +41,4 @@ def getMetaData(): } def register(app): - return {} return { "version_upgrade": upgrade } From b57cb16f6d345c458ba78a53bebb9b67007e3722 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 14:32:45 +0200 Subject: [PATCH 071/125] Rename 24to25 to 25to26 The upgrade now upgrades profiles from the 2.5 format to 2.6, since we delayed the update for the 2.5 release. Contributes to issue CURA-3427. --- .../VersionUpgrade25to26.py} | 12 ++++++------ .../__init__.py | 6 +++--- .../tests/TestVersionUpgrade24to25.py | 0 3 files changed, 9 insertions(+), 9 deletions(-) rename plugins/VersionUpgrade/{VersionUpgrade24to25/VersionUpgrade24to25.py => VersionUpgrade25to26/VersionUpgrade25to26.py} (93%) rename plugins/VersionUpgrade/{VersionUpgrade24to25 => VersionUpgrade25to26}/__init__.py (89%) rename plugins/VersionUpgrade/{VersionUpgrade24to25 => VersionUpgrade25to26}/tests/TestVersionUpgrade24to25.py (100%) diff --git a/plugins/VersionUpgrade/VersionUpgrade24to25/VersionUpgrade24to25.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py similarity index 93% rename from plugins/VersionUpgrade/VersionUpgrade24to25/VersionUpgrade24to25.py rename to plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index 1af2e7405a..bfcf8c9828 100644 --- a/plugins/VersionUpgrade/VersionUpgrade24to25/VersionUpgrade24to25.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -15,13 +15,13 @@ _split_settings = { #These settings should be copied to all settings it was spli } ## A collection of functions that convert the configuration of the user in Cura -# 2.4 to a configuration for Cura 2.5. +# 2.5 to a configuration for Cura 2.6. # # All of these methods are essentially stateless. -class VersionUpgrade24to25(VersionUpgrade): - ## Gets the version number from a CFG file in Uranium's 2.4 format. +class VersionUpgrade25to26(VersionUpgrade): + ## Gets the version number from a CFG file in Uranium's 2.5 format. # - # Since the format may change, this is implemented for the 2.4 format only + # Since the format may change, this is implemented for the 2.5 format only # and needs to be included in the version upgrade system rather than # globally in Uranium. # @@ -35,7 +35,7 @@ class VersionUpgrade24to25(VersionUpgrade): parser.read_string(serialised) return int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - ## Upgrades the preferences file from version 2.4 to 2.5. + ## Upgrades the preferences file from version 2.5 to 2.6. # # \param serialised The serialised form of a preferences file. # \param filename The name of the file to upgrade. @@ -66,7 +66,7 @@ class VersionUpgrade24to25(VersionUpgrade): parser.write(output) return [filename], [output.getvalue()] - ## Upgrades an instance container from version 2.4 to 2.5. + ## Upgrades an instance container from version 2.5 to 2.6. # # \param serialised The serialised form of a quality profile. # \param filename The name of the file to upgrade. diff --git a/plugins/VersionUpgrade/VersionUpgrade24to25/__init__.py b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py similarity index 89% rename from plugins/VersionUpgrade/VersionUpgrade24to25/__init__.py rename to plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py index a7480e802d..e586d1758c 100644 --- a/plugins/VersionUpgrade/VersionUpgrade24to25/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py @@ -6,15 +6,15 @@ from . import VersionUpgrade24to25 from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") -upgrade = VersionUpgrade24to25.VersionUpgrade24to25() +upgrade = VersionUpgrade25to26.VersionUpgrade25to26() def getMetaData(): return { "plugin": { - "name": catalog.i18nc("@label", "Version Upgrade 2.4 to 2.5"), + "name": catalog.i18nc("@label", "Version Upgrade 2.5 to 2.6"), "author": "Ultimaker", "version": "1.0", - "description": catalog.i18nc("@info:whatsthis", "Upgrades configurations from Cura 2.4 to Cura 2.5."), + "description": catalog.i18nc("@info:whatsthis", "Upgrades configurations from Cura 2.5 to Cura 2.6."), "api": 3 }, "version_upgrade": { diff --git a/plugins/VersionUpgrade/VersionUpgrade24to25/tests/TestVersionUpgrade24to25.py b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade24to25.py similarity index 100% rename from plugins/VersionUpgrade/VersionUpgrade24to25/tests/TestVersionUpgrade24to25.py rename to plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade24to25.py From 833ad65507d6ed7b6e1b6f4b4a7625d6b61e113c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 14:34:11 +0200 Subject: [PATCH 072/125] Also rename test Forgot that, sorry. Contributes to issue CURA-3427. --- ...ionUpgrade24to25.py => TestVersionUpgrade25to26.py} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename plugins/VersionUpgrade/VersionUpgrade25to26/tests/{TestVersionUpgrade24to25.py => TestVersionUpgrade25to26.py} (96%) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade24to25.py b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py similarity index 96% rename from plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade24to25.py rename to plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py index cb7300ad87..d371d5cbbe 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade24to25.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py @@ -9,7 +9,7 @@ import VersionUpgrade24to25 #The module we're testing. ## Creates an instance of the upgrader to test with. @pytest.fixture def upgrader(): - return VersionUpgrade24to25.VersionUpgrade24to25() + return VersionUpgrade25to26.VersionUpgrade25to26() test_cfg_version_good_data = [ { @@ -121,7 +121,7 @@ foo = bar } ] -## Tests whether the settings that should be removed are removed for the 2.5 +## Tests whether the settings that should be removed are removed for the 2.6 # version of preferences. @pytest.mark.parametrize("data", test_upgrade_preferences_removed_settings_data) def test_upgradePreferencesRemovedSettings(data, upgrader): @@ -137,7 +137,7 @@ def test_upgradePreferencesRemovedSettings(data, upgrader): upgraded_preferences = upgraded_preferences[0] #Find whether the removed setting is removed from the file now. - settings -= VersionUpgrade24to25._removed_settings + settings -= VersionUpgrade25to26._removed_settings parser = configparser.ConfigParser(interpolation = None) parser.read_string(upgraded_preferences) assert (parser.has_section("general") and "visible_settings" in parser["general"]) == (len(settings) > 0) #If there are settings, there must also be a preference. @@ -166,7 +166,7 @@ type = instance_container } ] -## Tests whether the settings that should be removed are removed for the 2.5 +## Tests whether the settings that should be removed are removed for the 2.6 # version of instance containers. @pytest.mark.parametrize("data", test_upgrade_instance_container_removed_settings_data) def test_upgradeInstanceContainerRemovedSettings(data, upgrader): @@ -182,7 +182,7 @@ def test_upgradeInstanceContainerRemovedSettings(data, upgrader): upgraded_container = upgraded_container[0] #Find whether the forbidden setting is still in the container. - settings -= VersionUpgrade24to25._removed_settings + settings -= VersionUpgrade25to26._removed_settings parser = configparser.ConfigParser(interpolation = None) parser.read_string(upgraded_container) assert parser.has_section("values") == (len(settings) > 0) #If there are settings, there must also be the values category. From 22cfaddba528c4c1cdef162be162a58fb3d60b52 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 14:35:54 +0200 Subject: [PATCH 073/125] Fix import Oops. The test passes again now. Contributes to issue CURA-3427. --- .../VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py index d371d5cbbe..9f8f1e8590 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py @@ -4,7 +4,7 @@ import configparser #To check whether the appropriate exceptions are raised. import pytest #To register tests with. -import VersionUpgrade24to25 #The module we're testing. +import VersionUpgrade25to26 #The module we're testing. ## Creates an instance of the upgrader to test with. @pytest.fixture From 3baec9b74221a5fa9209dada26d4695da5fb4429 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 11 May 2017 14:53:02 +0200 Subject: [PATCH 074/125] WIP: set dirty after overriding a user container with deserialize() CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 0d244c4492..8cb34e6681 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -398,8 +398,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if not user_containers: containers_to_add.append(instance_container) else: + instance_container = user_containers[0] if self._resolve_strategies["machine"] == "override" or self._resolve_strategies["machine"] is None: - user_containers[0].deserialize(archive.open(instance_container_file).read().decode("utf-8")) + instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8")) + instance_container.setDirty(True) elif self._resolve_strategies["machine"] == "new": # The machine is going to get a spiffy new name, so ensure that the id's of user settings match. extruder_id = instance_container.getMetaDataEntry("extruder", None) From 8a94f9425806107f73983f407c9d44f1a8ee25b0 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 11 May 2017 14:53:56 +0200 Subject: [PATCH 075/125] WIP: use .userChanges property to replace user containers in project loading CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 8cb34e6681..2a3719a4cc 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -585,14 +585,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if extruder_id: for extruder in extruder_stacks: if extruder.getId() == extruder_id: - extruder.replaceContainer(0, container) + extruder.userChanges = container continue # replacing the container ID for user instance containers for the machine machine_id = container.getMetaDataEntry("machine", None) if machine_id: if global_stack.getId() == machine_id: - global_stack.replaceContainer(0, container) + global_stack.userChanges = container continue for changes_container_type in ("quality_changes", "definition_changes"): From 30321607d0b43d9eb9ba14952add5623339a8e9c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 15:30:24 +0200 Subject: [PATCH 076/125] Remove Cubic Subdivision Radius from users' configuration The setting no longer exists. This removes it from all instance containers and preference files. Contributes to issue CURA-3427. --- .../VersionUpgrade25to26/VersionUpgrade25to26.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index bfcf8c9828..f354c24f7d 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -7,7 +7,8 @@ import io #To serialise configparser output to a string. from UM.VersionUpgrade import VersionUpgrade _removed_settings = { #Settings that were removed in 2.5. - "start_layers_at_same_position" + "start_layers_at_same_position", + "sub_div_rad_mult" } _split_settings = { #These settings should be copied to all settings it was split into. From 639e86ca597464eadf1826193c0c4adfd0ddb948 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 16:53:59 +0200 Subject: [PATCH 077/125] Set setting_version in 2.6's profiles Contributes to issue CURA-3427. --- .../VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index f354c24f7d..3e72fdddf9 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -86,7 +86,7 @@ class VersionUpgrade25to26(VersionUpgrade): #Change the version number in the file. if parser.has_section("general"): - parser["general"]["version"] = "3" + parser["general"]["setting_version"] = "1" #Re-serialise the file. output = io.StringIO() From 0a84a181c466957a6c2980f694abb657b333c53f Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 17:31:37 +0200 Subject: [PATCH 078/125] Track cfg version numbers with major-minor, sorta We now have a (format) version and a setting version. Ideally we'd like major-minor version numbers in our profiles. However, introducing major-minor version numbers requires substantial changes to the version upgrade manager to compare version numbers, find a path towards the current version, or even keeping track of the current version. Therefore we just collapse the two version numbers into one: Multiply the major version number by a million and you'll never exceed it in the minor versioning. The only problem is that we now have to update the versioning for all of our three upgrade plug-ins, because they all need to know locally how to find the version number of their file types (because the upgrade manager has no knowledge of the file types) and they have no access to each other because a plug-in may be disabled. Contributes to issue CURA-3427. --- .../VersionUpgrade21to22/VersionUpgrade21to22.py | 4 +++- .../VersionUpgrade/VersionUpgrade21to22/__init__.py | 8 ++++---- .../VersionUpgrade22to24/VersionUpgrade.py | 4 +++- .../VersionUpgrade/VersionUpgrade22to24/__init__.py | 8 ++++---- .../VersionUpgrade25to26/VersionUpgrade25to26.py | 4 +++- .../VersionUpgrade/VersionUpgrade25to26/__init__.py | 10 +++++----- 6 files changed, 22 insertions(+), 16 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py b/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py index 7a9b102758..855425053a 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py @@ -249,7 +249,9 @@ class VersionUpgrade21to22(VersionUpgrade): def getCfgVersion(self, serialised): parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) - return int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. + format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("general", "version", fallback = 0)) + return format_version * 1000000 + setting_version ## Gets the fallback quality to use for a specific machine-variant-material # combination. diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/__init__.py b/plugins/VersionUpgrade/VersionUpgrade21to22/__init__.py index f2803ca62f..74d74e61ae 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/__init__.py @@ -18,10 +18,10 @@ def getMetaData(): "api": 3 }, "version_upgrade": { - # From To Upgrade function - ("profile", 1): ("quality", 2, upgrade.upgradeProfile), - ("machine_instance", 1): ("machine_stack", 2, upgrade.upgradeMachineInstance), - ("preferences", 2): ("preferences", 3, upgrade.upgradePreferences) + # From To Upgrade function + ("profile", 1000000): ("quality", 2000000, upgrade.upgradeProfile), + ("machine_instance", 1000000): ("machine_stack", 2000000, upgrade.upgradeMachineInstance), + ("preferences", 2000000): ("preferences", 3000000, upgrade.upgradePreferences) }, "sources": { "profile": { diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py index b28124f16b..7a4ff70fb7 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py @@ -144,4 +144,6 @@ class VersionUpgrade22to24(VersionUpgrade): def getCfgVersion(self, serialised): parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) - return int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. + format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("general", "version", fallback = 0)) + return format_version * 1000000 + setting_version diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py b/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py index e1114922d6..0df2c94b75 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py @@ -18,10 +18,10 @@ def getMetaData(): "api": 3 }, "version_upgrade": { - # From To Upgrade function - ("machine_instance", 2): ("machine_stack", 3, upgrade.upgradeMachineInstance), - ("extruder_train", 2): ("extruder_train", 3, upgrade.upgradeExtruderTrain), - ("preferences", 3): ("preferences", 4, upgrade.upgradePreferences) + # From To Upgrade function + ("machine_instance", 2000000): ("machine_stack", 3000000, upgrade.upgradeMachineInstance), + ("extruder_train", 2000000): ("extruder_train", 3000000, upgrade.upgradeExtruderTrain), + ("preferences", 3000000): ("preferences", 4000000, upgrade.upgradePreferences) }, "sources": { diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index 3e72fdddf9..da899b03e5 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -34,7 +34,9 @@ class VersionUpgrade25to26(VersionUpgrade): def getCfgVersion(self, serialised): parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) - return int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. + format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("general", "version", fallback = 0)) + return format_version * 1000000 + setting_version ## Upgrades the preferences file from version 2.5 to 2.6. # diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py index e586d1758c..05e8e0e4cf 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py @@ -18,11 +18,11 @@ def getMetaData(): "api": 3 }, "version_upgrade": { - # From To Upgrade function - ("preferences", 4): ("preferences", 5, upgrade.upgradePreferences), - ("quality", 2): ("quality", 3, upgrade.upgradeInstanceContainer), - ("variant", 2): ("variant", 3, upgrade.upgradeInstanceContainer), #We can re-use upgradeContainerStack since there is nothing specific to quality, variant or user profiles being changed. - ("user", 2): ("user", 3, upgrade.upgradeInstanceContainer) + # From To Upgrade function + ("preferences", 4000000): ("preferences", 4000001, upgrade.upgradePreferences), + ("quality", 2000000): ("quality", 2000001, upgrade.upgradeInstanceContainer), + ("variant", 2000000): ("variant", 2000001, upgrade.upgradeInstanceContainer), #We can re-use upgradeContainerStack since there is nothing specific to quality, variant or user profiles being changed. + ("user", 2000000): ("user", 2000001, upgrade.upgradeInstanceContainer) }, "sources": { "quality": { From 6e01c6ba60ff1177366ff6da9ee8086a1d32dabc Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 11 May 2017 17:33:46 +0200 Subject: [PATCH 079/125] Initialise config_name Just a mistake that I saw because my IDE warned me about this. If a variant in Cura 2.3 has no general/name keyword, then it would break here. Now it doesn't break any more and gives a nonsensical name. Contributes to issue CURA-3427. --- plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py index 7a4ff70fb7..e1da456c48 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py @@ -77,6 +77,7 @@ class VersionUpgrade22to24(VersionUpgrade): with open(variant_path, "r") as fhandle: variant_config.read_file(fhandle) + config_name = "Unknown Variant" if variant_config.has_section("general") and variant_config.has_option("general", "name"): config_name = variant_config.get("general", "name") if config_name.endswith("_variant"): From 9de041ade51d4ba9f0b33529b8d7d1b06a1d5d3b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 09:45:53 +0200 Subject: [PATCH 080/125] Remove theme font from system-themed dialogue See commit 36dedabd11a36bd40669fbcf3b0e1f820c47acf1. --- resources/qml/DiscardOrKeepProfileChangesDialog.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/qml/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/DiscardOrKeepProfileChangesDialog.qml index 1cdde17840..f3c790e416 100644 --- a/resources/qml/DiscardOrKeepProfileChangesDialog.qml +++ b/resources/qml/DiscardOrKeepProfileChangesDialog.qml @@ -56,7 +56,6 @@ UM.Dialog { text: catalog.i18nc("@text:window", "You have customized some profile settings.\nWould you like to keep or discard those settings?") anchors.margins: UM.Theme.getSize("default_margin").width - font: UM.Theme.getFont("default") wrapMode: Text.WordWrap } } From 396f4381dd13e34a144aa3c5d0a5a0569f6c9341 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 10:00:24 +0200 Subject: [PATCH 081/125] Resolve bed adhesion type via limit-to-extruder The cause for this change is that TPU says we want to print with brim but CPE wants to print with raft. In those cases the resolve function would choose the raft because that's safer. However if the default extruder happens to be the TPU one you then get a raft made of TPU which is flexible. That defeats the purpose of the raft, and causes the raft to warp, clog on the nozzle, destroy the world, etc. So there, I saved the world once more. --- 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 628ca1688e..d5c6fe2609 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3623,7 +3623,7 @@ "none": "None" }, "default_value": "brim", - "resolve": "'raft' if 'raft' in extruderValues('adhesion_type') else ('brim' if 'brim' in extruderValues('adhesion_type') else 'skirt')", + "limit_to_extruder": "adhesion_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": false }, From 31684da9a67ed3dc8ab000b1def7a23be3b05e83 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 10:01:29 +0200 Subject: [PATCH 082/125] Add Gradual Infill Steps to default advanced settings It's visible by default now. Contributes to issue CURA-3732. --- cura/CuraApplication.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 3b5557b7d8..7e047cae0a 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -294,6 +294,7 @@ class CuraApplication(QtApplication): z_seam_y infill infill_sparse_density + gradual_infill_steps material material_print_temperature material_bed_temperature From bf80e6efd5e064ad11d36648b34d4643d631dcf6 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Fri, 12 May 2017 09:10:21 +0100 Subject: [PATCH 083/125] Just like magic_spiralize, smooth_spiralized_contours should not be settable per model/extruder. --- resources/definitions/fdmprinter.def.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 46b3b125a4..838a1d975d 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4595,7 +4595,9 @@ "description": "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details.", "type": "bool", "default_value": true, - "enabled": "magic_spiralize" + "enabled": "magic_spiralize", + "settable_per_mesh": false, + "settable_per_extruder": false } } }, From 7508a0a98155ef16a9c42fe9fdc1d5dc3f8178ee Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 10:24:15 +0200 Subject: [PATCH 084/125] Changed infill buttons so they work with all languages CURA-3634 --- resources/qml/SidebarSimple.qml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 3eaf0797e8..1e4a715095 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -125,7 +125,7 @@ Item { id: infillIcon anchors.fill: parent; - anchors.margins: UM.Theme.getSize("infill_button_margin").width + anchors.margins: 2 sourceSize.width: width sourceSize.height: width @@ -185,7 +185,7 @@ Item Component.onCompleted: { infillModel.append({ - name: catalog.i18nc("@label", "Empty"), + name: catalog.i18nc("@label", "0%"), percentage: 0, steps: 0, percentageMin: -1, @@ -196,7 +196,7 @@ Item icon: "hollow" }) infillModel.append({ - name: catalog.i18nc("@label", "Light"), + name: catalog.i18nc("@label", "20%"), percentage: 20, steps: 0, percentageMin: 0, @@ -207,7 +207,7 @@ Item icon: "sparse" }) infillModel.append({ - name: catalog.i18nc("@label", "Dense"), + name: catalog.i18nc("@label", "50%"), percentage: 50, steps: 0, percentageMin: 30, @@ -218,7 +218,7 @@ Item icon: "dense" }) infillModel.append({ - name: catalog.i18nc("@label", "Solid"), + name: catalog.i18nc("@label", "100%"), percentage: 100, steps: 0, percentageMin: 70, From 502e977c24d8fe821b3021be1bf1f40e3b79b22b Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 10:27:13 +0200 Subject: [PATCH 085/125] UM2E now has olson block upgrade selection as machine action CURA-3742 --- resources/definitions/ultimaker2_extended.def.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/resources/definitions/ultimaker2_extended.def.json b/resources/definitions/ultimaker2_extended.def.json index 803e9fe896..ac9d98c5eb 100644 --- a/resources/definitions/ultimaker2_extended.def.json +++ b/resources/definitions/ultimaker2_extended.def.json @@ -11,8 +11,7 @@ "file_formats": "text/x-gcode", "icon": "icon_ultimaker2.png", "platform": "ultimaker2_platform.obj", - "platform_texture": "Ultimaker2Extendedbackplate.png", - "supported_actions": ["UpgradeFirmware"] + "platform_texture": "Ultimaker2Extendedbackplate.png" }, "overrides": { From 0f5814e52f8b7ae2373dede03c16c0883589ba67 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 12:58:15 +0200 Subject: [PATCH 086/125] Add setting_version and check against it This breaks all profiles since they have the wrong setting version, of course. Have to change that in every instance container now... Contributes to issue CURA-3427. --- cura/Settings/CuraContainerRegistry.py | 8 ++++++++ resources/definitions/fdmprinter.def.json | 1 + 2 files changed, 9 insertions(+) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 72b94a6f8d..91327ceb54 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -41,6 +41,14 @@ class CuraContainerRegistry(ContainerRegistry): if type(container) == ContainerStack: container = self._convertContainerStack(container) + if isinstance(container, InstanceContainer) and type(container) != type(self.getEmptyInstanceContainer()): + #Check against setting version of the definition. + required_setting_version = int(container.getDefinition().getMetaDataEntry("setting_version")) + actual_setting_version = int(container.getMetaDataEntry("setting_version", default = "0")) + if required_setting_version != actual_setting_version: + Logger.log("w", "Instance container {container_id} is outdated. Its setting version is {actual_setting_version} but it should be {required_setting_version}.".format(container_id = container.getId(), actual_setting_version = actual_setting_version, required_setting_version = required_setting_version)) + return #Don't add. + super().addContainer(container) ## Create a name that is not empty and unique diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 7c8782de69..bd34d8c7d8 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -8,6 +8,7 @@ "author": "Ultimaker B.V.", "category": "Ultimaker", "manufacturer": "Ultimaker", + "setting_version": 1, "file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g", "visible": false, "has_materials": true, From 67aa6767c59732588c2412ddae64ca2c9e148d11 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 12 May 2017 13:23:29 +0200 Subject: [PATCH 087/125] Add .DS_Store and *.qmlc --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 527e5dc049..1db07180c0 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,10 @@ resources/firmware resources/materials LC_MESSAGES .cache +*.qmlc + +#MacOS +.DS_Store # Editors and IDEs. *kdev* From f60765c56c5ab73266009ecc56a66ded60a59ac2 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 12 May 2017 13:24:58 +0200 Subject: [PATCH 088/125] Fix workspace dialog layout so checkbox and buttons dont get hidden --- resources/qml/WorkspaceSummaryDialog.qml | 64 ++++++++++++------------ 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/resources/qml/WorkspaceSummaryDialog.qml b/resources/qml/WorkspaceSummaryDialog.qml index 7da8495da0..cbde055138 100644 --- a/resources/qml/WorkspaceSummaryDialog.qml +++ b/resources/qml/WorkspaceSummaryDialog.qml @@ -13,13 +13,10 @@ UM.Dialog { title: catalog.i18nc("@title:window", "Save Project") - width: 550 * Screen.devicePixelRatio - minimumWidth: 550 * Screen.devicePixelRatio + width: 500 + height: 400 - height: 350 * Screen.devicePixelRatio - minimumHeight: 350 * Screen.devicePixelRatio - - property int spacerHeight: 10 * Screen.devicePixelRatio + property int spacerHeight: 10 property bool dontShowAgain: true @@ -42,7 +39,6 @@ UM.Dialog Item { anchors.fill: parent - anchors.margins: 20 * Screen.devicePixelRatio UM.SettingDefinitionsModel { @@ -232,42 +228,48 @@ UM.Dialog height: spacerHeight width: height } + } + + Row + { + id: buttonRow + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + height: childrenRect.height CheckBox { id: dontShowAgainCheckbox + anchors.left: parent.left + text: catalog.i18nc("@action:label", "Don't show project summary on save again") checked: dontShowAgain } - } + Button + { + id: ok_button + anchors.right: parent.right - Button - { - id: ok_button - text: catalog.i18nc("@action:button","Save"); - enabled: true - onClicked: { - close() - yes() + text: catalog.i18nc("@action:button","Save"); + enabled: true + onClicked: { + close() + yes() + } } - anchors.bottomMargin: - 0.5 * height - anchors.bottom: parent.bottom - anchors.right: parent.right - } - Button - { - id: cancel_button - text: catalog.i18nc("@action:button","Cancel"); - enabled: true - onClicked: close() - - anchors.bottom: parent.bottom - anchors.right: ok_button.left - anchors.bottomMargin: - 0.5 * height - anchors.rightMargin:2 + Button + { + id: cancel_button + anchors.right: ok_button.left + anchors.rightMargin: 2 + text: catalog.i18nc("@action:button","Cancel"); + enabled: true + onClicked: close() + } } } } \ No newline at end of file From f0f8871496b3be8f3331af427f14ccab64455320 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 13:40:54 +0200 Subject: [PATCH 089/125] Add setting_version to all profiles This represents the data version number (as opposed to the format version). Contributes to issue CURA-3427. --- resources/quality/abax_pri3/apri3_pla_fast.inst.cfg | 2 +- resources/quality/abax_pri3/apri3_pla_high.inst.cfg | 2 +- resources/quality/abax_pri3/apri3_pla_normal.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_fast.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_high.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_normal.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_fast.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_high.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg | 1 + .../quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg | 1 + resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg | 1 + .../quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg | 1 + .../quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg | 1 + .../cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg | 1 + resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg | 1 + .../quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg | 1 + .../cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg | 1 + .../cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg | 1 + .../quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg | 1 + .../cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg | 1 + .../quality/cartesio/cartesio_global_High_Quality.inst.cfg | 1 + .../quality/cartesio/cartesio_global_Normal_Quality.inst.cfg | 1 + .../quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg | 1 + .../quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg | 1 + .../quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg | 1 + .../quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg | 1 + .../quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg | 1 + .../cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg | 1 + .../quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg | 1 + .../quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg | 1 + .../quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg | 1 + .../quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg | 1 + .../quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg | 1 + .../quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg | 1 + .../quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg | 1 + .../cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg | 1 + .../quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg | 1 + .../quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg | 1 + resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg | 1 + resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg | 1 + resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg | 1 + resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg | 1 + resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg | 1 + .../quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg | 1 + resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg | 1 + resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg | 1 + .../quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg | 1 + .../quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg | 1 + .../quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg | 1 + .../quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg | 1 + .../quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg | 1 + .../cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg | 1 + .../quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg | 1 + .../quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg | 1 + resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg | 1 + .../quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg | 1 + resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg | 1 + .../quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg | 1 + .../quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg | 1 + .../cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg | 1 + resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg | 1 + .../quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg | 1 + resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg | 1 + .../quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg | 1 + resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg | 1 + .../quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg | 1 + .../quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg | 1 + .../cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg | 1 + resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg | 1 + .../quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg | 1 + resources/quality/coarse.inst.cfg | 1 + resources/quality/draft.inst.cfg | 1 + resources/quality/extra_coarse.inst.cfg | 1 + resources/quality/high.inst.cfg | 1 + .../quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg | 1 + .../imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg | 1 + .../quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg | 1 + .../imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg | 1 + .../quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg | 1 + .../imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg | 1 + .../quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg | 1 + .../imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg | 1 + .../quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg | 1 + .../imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg | 1 + .../imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg | 1 + .../imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg | 1 + resources/quality/low.inst.cfg | 1 + resources/quality/normal.inst.cfg | 1 + resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg | 1 + resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg | 1 + resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg | 1 + resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg | 1 + resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg | 1 + .../quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg | 1 + resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg | 1 + resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg | 1 + resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg | 1 + resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg | 1 + resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg | 1 + .../ultimaker3/um3_aa0.4_PVA_Not_Supported_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg | 1 + resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg | 1 + .../ultimaker3/um3_aa0.8_CPEP_Not_Supported_Quality.inst.cfg | 1 + .../um3_aa0.8_CPEP_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg | 1 + .../ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg | 1 + .../ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg | 1 + .../ultimaker3/um3_aa0.8_PC_Not_Supported_Quality.inst.cfg | 1 + .../um3_aa0.8_PC_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg | 1 + .../ultimaker3/um3_aa0.8_PVA_Not_Supported_Quality.inst.cfg | 1 + .../um3_aa0.8_PVA_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg | 1 + .../ultimaker3/um3_aa0.8_TPU_Not_Supported_Quality.inst.cfg | 1 + .../um3_aa0.8_TPU_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 1 + .../ultimaker3/um3_bb0.4_ABS_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.4_ABS_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.4_CPEP_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.4_CPEP_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.4_CPE_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.4_CPE_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.4_Nylon_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.4_Nylon_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.4_PC_Not_Supported_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.4_PLA_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.4_PLA_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg | 1 + resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.4_TPU_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.4_TPU_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.8_ABS_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.8_ABS_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.8_CPEP_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.8_CPEP_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.8_CPE_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.8_CPE_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.8_Nylon_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.8_Nylon_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.8_PC_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.8_PC_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../ultimaker3/um3_bb0.8_PLA_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.8_PLA_Not_Supported_Superdraft_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg | 1 + .../ultimaker3/um3_bb0.8_TPU_Not_Supported_Quality.inst.cfg | 1 + .../um3_bb0.8_TPU_Not_Supported_Superdraft_Quality.inst.cfg | 1 + resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg | 1 + resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg | 1 + resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_global_Normal_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg | 3 ++- .../quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg | 3 ++- resources/variants/cartesio_0.25.inst.cfg | 1 + resources/variants/cartesio_0.4.inst.cfg | 1 + resources/variants/cartesio_0.8.inst.cfg | 1 + resources/variants/imade3d_jellybox_0.4.inst.cfg | 1 + resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg | 1 + resources/variants/ultimaker2_0.25.inst.cfg | 1 + resources/variants/ultimaker2_0.4.inst.cfg | 1 + resources/variants/ultimaker2_0.6.inst.cfg | 1 + resources/variants/ultimaker2_0.8.inst.cfg | 1 + resources/variants/ultimaker2_extended_plus_0.25.inst.cfg | 1 + resources/variants/ultimaker2_extended_plus_0.4.inst.cfg | 1 + resources/variants/ultimaker2_extended_plus_0.6.inst.cfg | 1 + resources/variants/ultimaker2_extended_plus_0.8.inst.cfg | 1 + resources/variants/ultimaker2_plus_0.25.inst.cfg | 1 + resources/variants/ultimaker2_plus_0.4.inst.cfg | 1 + resources/variants/ultimaker2_plus_0.6.inst.cfg | 1 + resources/variants/ultimaker2_plus_0.8.inst.cfg | 1 + resources/variants/ultimaker3_aa0.8.inst.cfg | 1 + resources/variants/ultimaker3_aa04.inst.cfg | 1 + resources/variants/ultimaker3_bb0.8.inst.cfg | 1 + resources/variants/ultimaker3_bb04.inst.cfg | 1 + resources/variants/ultimaker3_extended_aa0.8.inst.cfg | 1 + resources/variants/ultimaker3_extended_aa04.inst.cfg | 1 + resources/variants/ultimaker3_extended_bb0.8.inst.cfg | 1 + resources/variants/ultimaker3_extended_bb04.inst.cfg | 1 + 251 files changed, 253 insertions(+), 11 deletions(-) diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index 7f3bf240ac..c803cd6196 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -1,4 +1,3 @@ - [general] version = 2 name = Normal Quality @@ -9,6 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.2 diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg index be93de160e..f22daa56a5 100644 --- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg @@ -1,4 +1,3 @@ - [general] version = 2 name = High Quality @@ -9,6 +8,7 @@ type = quality material = generic_pla weight = 1 quality_type = high +setting_version = 1 [values] layer_height = 0.1 diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg index a116ff4485..198676d024 100644 --- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg @@ -1,4 +1,3 @@ - [general] version = 2 name = Normal Quality @@ -9,6 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.2 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index 4bfb02fe77..8ef82f2f76 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -1,4 +1,3 @@ - [general] version = 2 name = Normal Quality @@ -9,6 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.2 diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg index 4c89f5cf28..79af56ff3d 100644 --- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg @@ -1,4 +1,3 @@ - [general] version = 2 name = High Quality @@ -9,6 +8,7 @@ type = quality material = generic_pla weight = 1 quality_type = high +setting_version = 1 [values] layer_height = 0.1 diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg index fc11c5af19..50a01e9de1 100644 --- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg @@ -1,4 +1,3 @@ - [general] version = 2 name = Normal Quality @@ -9,6 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.2 diff --git a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg index 63189c1ed1..f76df7c3c9 100644 --- a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg @@ -1,4 +1,3 @@ - [general] version = 2 name = Normal Quality @@ -9,6 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.2 diff --git a/resources/quality/abax_titan/atitan_pla_high.inst.cfg b/resources/quality/abax_titan/atitan_pla_high.inst.cfg index 7d6f8bb3d7..cb0b9fa238 100644 --- a/resources/quality/abax_titan/atitan_pla_high.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_high.inst.cfg @@ -1,4 +1,3 @@ - [general] version = 2 name = High Quality @@ -8,6 +7,7 @@ type = quality material = generic_pla weight = 1 quality_type = high +setting_version = 1 [values] layer_height = 0.1 diff --git a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg index 6de6a1df32..5d9867db81 100644 --- a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg @@ -1,4 +1,3 @@ - [general] version = 2 name = Normal Quality @@ -9,6 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.2 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg index 6d7fe3b0eb..8359e17a9b 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_abs_175_cartesio_0.25_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg index f59b39a94b..75338a4d83 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_abs_175_cartesio_0.25_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg index d34b6dfb3b..62a473ac02 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_abs_175_cartesio_0.4_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg index 2780eea101..19d08ae41b 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_abs_175_cartesio_0.4_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg index e22b61a456..8ab0733977 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = coarse material = generic_abs_175_cartesio_0.8_mm weight = 3 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg index 602a11457f..097669c688 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = extra coarse material = generic_abs_175_cartesio_0.8_mm weight = 4 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg index 02e82c81e9..5ae8911ceb 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_abs_175_cartesio_0.8_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg index b9b66fd4c0..ef2571113c 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_abs_175_cartesio_0.8_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg index 1d20414f7e..74390b0d82 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = dsm_arnitel2045_175_cartesio_0.4_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg index 2437f41b09..86309f2754 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = dsm_arnitel2045_175_cartesio_0.4_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg index 4ed6a3a28b..81f8f09c47 100644 --- a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = coarse global_quality = True weight = 0 +setting_version = 1 [values] layer_height = 0.4 diff --git a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg index a6b9aae464..07282666e3 100644 --- a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = extra coarse global_quality = True weight = 0 +setting_version = 1 [values] layer_height = 0.6 diff --git a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg index 17638b0e9b..c0b5895d7e 100644 --- a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high global_quality = True weight = 0 +setting_version = 1 [values] layer_height = 0.1 diff --git a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg index 56c7db0f4a..ed3cb68326 100644 --- a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal global_quality = True weight = 0 +setting_version = 1 [values] layer_height = 0.2 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg index ed1d1ae00d..3c2b42bb1c 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_hips_175_cartesio_0.25_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg index f259d31022..cf4ce231d5 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_hips_175_cartesio_0.25_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg index f3d3fb29c4..140655af2c 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_hips_175_cartesio_0.4_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg index 96217fa849..1e62e1ba8f 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_hips_175_cartesio_0.4_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg index 7e169f54bd..d15ffa60e1 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = coarse material = generic_hips_175_cartesio_0.8_mm weight = 3 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg index 707932a7ed..00c2438197 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = extra coarse material = generic_hips_175_cartesio_0.8_mm weight = 4 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg index 3cc8f7dc25..e7fc711492 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_hips_175_cartesio_0.8_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg index d9c10d815a..56b0ee0c2c 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_hips_175_cartesio_0.8_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg index 6cceba99c3..125699fe5f 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_nylon_175_cartesio_0.25_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg index 07be2462f4..e039486f8a 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_nylon_175_cartesio_0.25_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg index 271278143b..5c9fbc3b04 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_nylon_175_cartesio_0.4_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg index 32aaddf4cb..3fc80db1a4 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_nylon_175_cartesio_0.4_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg index f019fec205..62f6e4da1f 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = coarse material = generic_nylon_175_cartesio_0.8_mm weight = 3 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg index b19df96222..813fde3915 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = extra coarse material = generic_nylon_175_cartesio_0.8_mm weight = 4 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg index adc278188d..cc18ceeda6 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_nylon_175_cartesio_0.8_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg index 87e8515872..baaf108d6e 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_nylon_175_cartesio_0.8_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg index cb8b52cf12..531cfb3519 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pc_175_cartesio_0.25_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg index 8cb4ebc94b..ad07bcd2c7 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pc_175_cartesio_0.25_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg index 3aa4211c0a..e03ebb8c95 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pc_175_cartesio_0.4_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg index 42fc39d6f2..0acc0b5b2b 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pc_175_cartesio_0.4_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg index ba2a33d4cf..2b760d6067 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = coarse material = generic_pc_175_cartesio_0.8_mm weight = 3 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg index 443f009ba4..c2bb4d8df4 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = extra coarse material = generic_pc_175_cartesio_0.8_mm weight = 4 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg index 9dc821ad27..e0dd2cc81e 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pc_175_cartesio_0.8_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg index 893a8f0939..9d4169427f 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pc_175_cartesio_0.8_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg index a197b70f1b..cc96f3f37f 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_petg_175_cartesio_0.25_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg index c34c7f8eae..fe5bdb2e77 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_petg_175_cartesio_0.25_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg index 8130f8563e..0a019b60d6 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_petg_175_cartesio_0.4_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg index 84c7525b0b..8984f430f5 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_petg_175_cartesio_0.4_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg index a3a8d324fb..b8e06b8db6 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = coarse material = generic_petg_175_cartesio_0.8_mm weight = 3 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg index 295b3c3e2c..cba49998f4 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = extra coarse material = generic_petg_175_cartesio_0.8_mm weight = 4 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg index df496e5e06..7b85c230b0 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_petg_175_cartesio_0.8_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg index fa787830b2..d45d7a0d2c 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_petg_175_cartesio_0.8_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg index 633aeca2d2..7afd300aa2 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pla_175_cartesio_0.25_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg index a212b65676..057215d70d 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pla_175_cartesio_0.25_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg index 7a7f7f31a3..77d3008c1b 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pla_175_cartesio_0.4_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg index 16ad34b9f0..3d08fd9514 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pla_175_cartesio_0.4_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg index c6a680dfcc..1aca489096 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = coarse material = generic_pla_175_cartesio_0.8_mm weight = 3 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg index a1ea49ba92..c4acfd0c8d 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = extra coarse material = generic_pla_175_cartesio_0.8_mm weight = 4 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg index 622cb124eb..ad4980d2e9 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pla_175_cartesio_0.8_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg index c24f46f30d..650431e0a9 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pla_175_cartesio_0.8_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg index 34b7dcf0f1..580969fbaa 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pva_175_cartesio_0.25_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg index 5f6b8c846d..189ab1caec 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pva_175_cartesio_0.25_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg index 26e476abb0..61a8b5f37c 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pva_175_cartesio_0.4_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg index 14e6c6a956..e91cd56272 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pva_175_cartesio_0.4_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg index e009409d52..c109e8c20e 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = coarse material = generic_pva_175_cartesio_0.8_mm weight = 3 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg index bc9dc55912..59c3530dba 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = extra coarse material = generic_pva_175_cartesio_0.8_mm weight = 4 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg index 9f5ea8a070..b651c5bd57 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pva_175_cartesio_0.8_mm weight = 1 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg index 275ff906d2..9354602854 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pva_175_cartesio_0.8_mm weight = 2 +setting_version = 1 [values] infill_line_width = 0.9 diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index 94612afcc0..7722e9d0ae 100644 --- a/resources/quality/coarse.inst.cfg +++ b/resources/quality/coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = coarse global_quality = True weight = -3 +setting_version = 1 [values] layer_height = 0.4 diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index 134626365f..21a7c81d6c 100644 --- a/resources/quality/draft.inst.cfg +++ b/resources/quality/draft.inst.cfg @@ -9,6 +9,7 @@ type = quality quality_type = draft global_quality = True weight = -2 +setting_version = 1 [values] layer_height = 0.2 diff --git a/resources/quality/extra_coarse.inst.cfg b/resources/quality/extra_coarse.inst.cfg index 1462464b59..4c2bced7d2 100644 --- a/resources/quality/extra_coarse.inst.cfg +++ b/resources/quality/extra_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = Extra coarse global_quality = True weight = -4 +setting_version = 1 [values] layer_height = 0.6 diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index 921dae9ae0..955b19dcf4 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high global_quality = True weight = 1 +setting_version = 1 [values] layer_height = 0.06 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg index cd1356cf3c..674ed17e44 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm weight = -1 quality_type = fast +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg index a0ad58711f..e98c0a38ee 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm_2-fans weight = -1 quality_type = fast +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg index 5a51c3059f..2a947aceec 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm weight = 0 quality_type = normal +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg index c85b4f74d0..67078b9cde 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm_2-fans weight = 0 quality_type = normal +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg index fb21ef1b9f..c82d42120d 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = -1 quality_type = fast +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg index a382d98b6e..634b1219f7 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = -1 quality_type = fast +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg index cba83980df..9d1ece2ea9 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = 1 quality_type = high +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg index e26c1406fb..2cc8a57a73 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = 1 quality_type = high +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg index 59506db09a..c30943b4f2 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = 0 quality_type = normal +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg index 785941fbca..076d90334b 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = 0 quality_type = normal +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg index 737d1acf59..c8db03506a 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = 2 quality_type = ultrahigh +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg index 5a5a0c96dc..01d5d601dd 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = 2 quality_type = ultrahigh +setting_version = 1 [values] adhesion_type = skirt diff --git a/resources/quality/low.inst.cfg b/resources/quality/low.inst.cfg index 82d4e0d327..8c8200395b 100644 --- a/resources/quality/low.inst.cfg +++ b/resources/quality/low.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = low global_quality = True weight = -1 +setting_version = 1 [values] infill_sparse_density = 10 diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index 26da3b48da..47d47f97f1 100644 --- a/resources/quality/normal.inst.cfg +++ b/resources/quality/normal.inst.cfg @@ -8,5 +8,6 @@ type = quality quality_type = normal global_quality = True weight = 0 +setting_version = 1 [values] diff --git a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg index 27848d4301..4c0cec96a7 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg @@ -7,6 +7,7 @@ definition = peopoly_moai type = quality weight = 1 quality_type = high +setting_version = 1 [values] infill_sparse_density = 70 diff --git a/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg index 253070569f..720b98b1b0 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg @@ -7,6 +7,7 @@ definition = peopoly_moai type = quality weight = 2 quality_type = extra_high +setting_version = 1 [values] infill_sparse_density = 70 diff --git a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg index c4ff8360fa..7d0053fc11 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg @@ -7,6 +7,7 @@ definition = peopoly_moai type = quality weight = 0 quality_type = normal +setting_version = 1 [values] infill_sparse_density = 70 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 db2b48b3cc..e288ce3db5 100644 --- a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.25_mm weight = 1 quality_type = high +setting_version = 1 [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg index d3f2740202..be01142816 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast +setting_version = 1 [values] layer_height = 0.15 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 d3347b4712..9d4469c1e4 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.4_mm weight = 1 quality_type = high +setting_version = 1 [values] layer_height = 0.06 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 758225535a..f9b27a3627 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.1 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 5eed5965e4..bcebb06221 100644 --- a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg @@ -8,6 +8,7 @@ material = generic_pla_ultimaker2_plus_0.6_mm type = quality weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.15 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 96a81d874e..a090910641 100644 --- a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg @@ -8,6 +8,7 @@ material = generic_pla_ultimaker2_plus_0.8_mm type = quality weight = -1 quality_type = fast +setting_version = 1 [values] layer_height = 0.2 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 cd99fc0f8a..f93fcca48c 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 @@ -8,6 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.25_mm weight = 1 quality_type = high +setting_version = 1 [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg index e52a201789..8c7b34eeff 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast +setting_version = 1 [values] layer_height = 0.15 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 4cbe9f4b88..7040a8ba38 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 @@ -8,6 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.4_mm weight = 1 quality_type = high +setting_version = 1 [values] layer_height = 0.06 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 3cfa744787..740dadd493 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 @@ -8,6 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.1 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 848441de61..d501703514 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 @@ -8,6 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.15 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 20a35f157f..674f17958c 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 @@ -8,6 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.8_mm weight = -1 quality_type = fast +setting_version = 1 [values] layer_height = 0.2 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 29f1577d12..27d850162e 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 @@ -8,6 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.25_mm weight = -1 quality_type = high +setting_version = 1 [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg index edba5d2c79..6b882b1bbf 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast +setting_version = 1 [values] layer_height = 0.15 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 a2442e6c96..6c4d24b195 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 @@ -8,6 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.4_mm weight = 1 quality_type = high +setting_version = 1 [values] layer_height = 0.06 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 4993e97bb0..d26cc8782c 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 @@ -8,6 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.1 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 ceaf31e153..10a4e5bd71 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 @@ -8,6 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal +setting_version = 1 [values] layer_height = 0.15 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 f81e931218..f4730bbd41 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 @@ -8,6 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.8_mm weight = -1 quality_type = fast +setting_version = 1 [values] layer_height = 0.2 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 294db7c10d..517d42ada2 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 @@ -8,6 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.4_mm weight = -2 quality_type = draft +setting_version = 1 [values] speed_wall_x = 25 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg index 91059f94b3..6d77792901 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal +setting_version = 1 [values] speed_wall_x = 30 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 6d1cb47835..ed87b21b15 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 @@ -8,6 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.6_mm weight = -2 quality_type = draft +setting_version = 1 [values] support_xy_distance = 0.6 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg index 1dbe3a56c8..7b20aa424d 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal +setting_version = 1 [values] support_xy_distance = 0.6 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 1b92686d50..d07e33e124 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 @@ -8,6 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.8_mm weight = -2 quality_type = draft +setting_version = 1 [values] support_z_distance = 0.26 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg index 30746a1ac2..b2cd9478c6 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.8_mm weight = 0 quality_type = normal +setting_version = 1 [values] support_z_distance = 0.26 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 fea97a2621..94eac599b0 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 @@ -8,6 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.25_mm weight = 1 quality_type = high +setting_version = 1 [values] support_xy_distance = 0.6 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg index 56be2489a5..663f67c56e 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.25_mm weight = 0 quality_type = normal +setting_version = 1 [values] support_xy_distance = 0.6 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 80948add53..f37365585e 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 @@ -8,6 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast +setting_version = 1 [values] support_xy_distance = 0.6 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg index 8385b3f895..0bb3bcc12d 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal +setting_version = 1 [values] support_xy_distance = 0.6 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 d9e393b778..dfeb02991f 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 @@ -8,6 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast +setting_version = 1 [values] support_xy_distance = 0.7 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg index e438dca035..259a581ccf 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal +setting_version = 1 [values] support_xy_distance = 0.7 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 575109e588..1607d71d01 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 @@ -8,6 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.8_mm weight = -2 quality_type = draft +setting_version = 1 [values] support_xy_distance = 0.75 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg index abd8f499bc..8d3767e4c6 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.8_mm weight = 0 quality_type = normal +setting_version = 1 [values] support_xy_distance = 0.75 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 06f67b7298..33dc5551fd 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 @@ -8,6 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.25_mm weight = 1 quality_type = high +setting_version = 1 [values] support_z_distance = 0.19 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg index be595385a4..2d26718f1b 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.25_mm weight = 0 quality_type = normal +setting_version = 1 [values] support_z_distance = 0.19 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 f20351cbb4..4c5dbf080b 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 @@ -8,6 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast +setting_version = 1 [values] speed_wall_x = 30 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg index 469cab12cc..e49dcd52a7 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal +setting_version = 1 [values] speed_wall_x = 30 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 bfd239e3cc..dc1d569ab9 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 @@ -8,6 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast +setting_version = 1 [values] speed_travel = 150 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg index bf65d1b8aa..1c041e1567 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal +setting_version = 1 [values] speed_travel = 150 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 53fab6b028..782d44cdcc 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 @@ -8,6 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.8_mm weight = -2 quality_type = draft +setting_version = 1 [values] support_z_distance = 0.26 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg index 9d79bf9faa..83c30e583d 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.8_mm weight = 0 quality_type = normal +setting_version = 1 [values] support_z_distance = 0.26 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 5c37a8432a..d1632b3482 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 @@ -8,6 +8,7 @@ type = quality material = generic_tpu_ultimaker2_plus_0.25_mm weight = 1 quality_type = high +setting_version = 1 [values] support_xy_distance = 0.6 diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg index 106476d57c..10a8cbded5 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg @@ -8,6 +8,7 @@ type = quality material = generic_tpu_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal +setting_version = 1 [values] support_xy_distance = 0.65 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 e0a0388227..e96015c6bd 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 @@ -8,6 +8,7 @@ type = quality material = generic_tpu_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast +setting_version = 1 [values] support_xy_distance = 0.7 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index f0f07f7973..4c7b194893 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_abs_ultimaker3_AA_0.4 weight = -2 +setting_version = 1 [values] machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index 0b062b0cc0..debb49caa8 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = fast material = generic_abs_ultimaker3_AA_0.4 weight = -1 +setting_version = 1 [values] cool_min_speed = 7 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 26ca695cf8..9e08d12b78 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_abs_ultimaker3_AA_0.4 weight = 1 +setting_version = 1 [values] cool_min_speed = 12 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index c3f3fb83b9..344593be0e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_abs_ultimaker3_AA_0.4 weight = 0 +setting_version = 1 [values] machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index 8f37595632..7833e3756c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_cpe_plus_ultimaker3_AA_0.4 weight = -2 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index 3ae04bba2f..ebe8646000 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = fast material = generic_cpe_plus_ultimaker3_AA_0.4 weight = -1 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index c32eb2cf54..a9bd0db101 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_cpe_plus_ultimaker3_AA_0.4 weight = 1 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index 515d6e6424..e9834620bb 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_cpe_plus_ultimaker3_AA_0.4 weight = 0 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg index 1df6d2dc6c..05e8a6540d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_cpe_ultimaker3_AA_0.4 weight = -2 +setting_version = 1 [values] material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg index 6216c1140f..86ce49a964 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = fast material = generic_cpe_ultimaker3_AA_0.4 weight = -1 +setting_version = 1 [values] cool_min_speed = 7 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg index 390d3466bb..3e7d5ab4b3 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_cpe_ultimaker3_AA_0.4 weight = 1 +setting_version = 1 [values] cool_min_speed = 12 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg index f0f5228387..62fa68d862 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_cpe_ultimaker3_AA_0.4 weight = 0 +setting_version = 1 [values] machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg index 6899989100..b7c2381840 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_nylon_ultimaker3_AA_0.4 weight = -2 +setting_version = 1 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg index 76a2491079..eb76b27f2a 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = fast material = generic_nylon_ultimaker3_AA_0.4 weight = -1 +setting_version = 1 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg index ba50bc4d31..74cd67af23 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_nylon_ultimaker3_AA_0.4 weight = 1 +setting_version = 1 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg index bebd9976f5..626629c746 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_nylon_ultimaker3_AA_0.4 weight = 0 +setting_version = 1 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index a601ec9531..6cbb2ba357 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_pc_ultimaker3_AA_0.4 weight = -2 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index 8fbaea6da9..2402c8e7fa 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = fast material = generic_pc_ultimaker3_AA_0.4 weight = -1 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index 4e0baac3d4..c54db7f99f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pc_ultimaker3_AA_0.4 weight = 1 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index 8ee6cbd2d0..a7a1b6ba5c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pc_ultimaker3_AA_0.4 weight = 0 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg index eb56b0aa4c..2ae33b91a9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_pla_ultimaker3_AA_0.4 weight = -2 +setting_version = 1 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg index c5faa17a2b..57faaacb65 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = fast material = generic_pla_ultimaker3_AA_0.4 weight = -1 +setting_version = 1 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg index 1a6db5e3b5..7fda6c2e7d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high material = generic_pla_ultimaker3_AA_0.4 weight = 1 +setting_version = 1 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg index c7a7be37c0..3bd268a257 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_pla_ultimaker3_AA_0.4 weight = 0 +setting_version = 1 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PVA_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PVA_Not_Supported_Quality.inst.cfg index f4abd6f696..6d878cd4b7 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PVA_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PVA_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ type = quality quality_type = normal material = generic_pva_ultimaker3_AA_0.4 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index 14ec88fe6b..55170f8c79 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_tpu_ultimaker3_AA_0.4 weight = -2 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index 4d14349ab0..89536c9308 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = fast material = generic_tpu_ultimaker3_AA_0.4 weight = -1 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index 98d6b42cb7..51e77de9e7 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal material = generic_tpu_ultimaker3_AA_0.4 weight = 0 +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg index 7fb96d0cea..06ec67d7ee 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_abs_ultimaker3_AA_0.8 weight = -2 +setting_version = 1 [values] line_width = =machine_nozzle_size * 0.875 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg index 63f27c180d..3df0ce08ea 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = superdraft material = generic_abs_ultimaker3_AA_0.8 weight = -4 +setting_version = 1 [values] layer_height = 0.4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg index 1eeb95fcd2..4c99a7a286 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = verydraft material = generic_abs_ultimaker3_AA_0.8 weight = -3 +setting_version = 1 [values] layer_height = 0.3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Not_Supported_Quality.inst.cfg index 68b694b922..ddde16205e 100755 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_cpe_plus_ultimaker3_AA_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Not_Supported_Superdraft_Quality.inst.cfg index 9cc2999ed2..8d65a8a653 100755 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_cpe_plus_ultimaker3_AA_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg index ec1a384804..aae6e21061 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_cpe_ultimaker3_AA_0.8 weight = -2 +setting_version = 1 [values] brim_width = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg index 372b5a41c1..af33717e7f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = superdraft material = generic_cpe_ultimaker3_AA_0.8 weight = -2 +setting_version = 1 [values] brim_width = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg index ec2f024141..cc87ac82cc 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = verydraft material = generic_cpe_ultimaker3_AA_0.8 weight = -2 +setting_version = 1 [values] brim_width = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg index c425cd3e56..16dbd87bcd 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_nylon_ultimaker3_AA_0.8 weight = -2 +setting_version = 1 [values] brim_width = 5.6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg index 071606b8b8..61a2c3add1 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = superdraft material = generic_nylon_ultimaker3_AA_0.8 weight = -4 +setting_version = 1 [values] brim_width = 5.6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg index fe023b9e32..73bf6a1fdf 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = verydraft material = generic_nylon_ultimaker3_AA_0.8 weight = -3 +setting_version = 1 [values] brim_width = 5.6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Not_Supported_Quality.inst.cfg index e47a866584..a047bc4496 100755 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ type = quality quality_type = normal material = generic_pc_ultimaker3_AA_0.8 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Not_Supported_Superdraft_Quality.inst.cfg index 14b08854b8..a73c5a121a 100755 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ type = quality quality_type = superdraft material = generic_pc_ultimaker3_AA_0.8 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg index 75ebfb6a45..1b8026d963 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_pla_ultimaker3_AA_0.8 weight = -2 +setting_version = 1 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg index 8b46d9d22a..4b23cdbf5a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = superdraft material = generic_pla_ultimaker3_AA_0.8 weight = -4 +setting_version = 1 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg index a8fc688b56..0f5a0eb102 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = verydraft material = generic_pla_ultimaker3_AA_0.8 weight = -3 +setting_version = 1 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.8_PVA_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PVA_Not_Supported_Quality.inst.cfg index ce306fad95..abbfe3f184 100755 --- a/resources/quality/ultimaker3/um3_aa0.8_PVA_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PVA_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ type = quality quality_type = normal material = generic_pva_ultimaker3_AA_0.8 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_PVA_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PVA_Not_Supported_Superdraft_Quality.inst.cfg index 5dbfab6341..ddd2dd6ca9 100755 --- a/resources/quality/ultimaker3/um3_aa0.8_PVA_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PVA_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ type = quality quality_type = superdraft material = generic_pva_ultimaker3_AA_0.8 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 3f3eeb145e..678a12d5a8 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft material = generic_tpu_ultimaker3_AA_0.8 weight = -2 +setting_version = 1 [values] brim_width = 8.75 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Not_Supported_Quality.inst.cfg index 7973ac08cc..b7ddab1a97 100755 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ type = quality quality_type = normal material = generic_tpu_ultimaker3_AA_0.8 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Not_Supported_Superdraft_Quality.inst.cfg index ec04652763..0693986d1e 100755 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ type = quality quality_type = superdraft material = generic_tpu_ultimaker3_AA_0.8 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index 38930d1507..dfe159013b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = superdraft material = generic_tpu_ultimaker3_AA_0.8 weight = -4 +setting_version = 1 [values] brim_width = 8.75 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index edc9f61f0e..be41c23cdb 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = verydraft material = generic_tpu_ultimaker3_AA_0.8 weight = -3 +setting_version = 1 [values] brim_width = 8.75 diff --git a/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Quality.inst.cfg index 7d2e7aa585..31d74c33a6 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_abs_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Superdraft_Quality.inst.cfg index a2d097ee09..16cc6c76b7 100755 --- a/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_abs_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Not_Supported_Quality.inst.cfg index d90ac7f126..ef3ae39c9a 100755 --- a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_cpe_plus_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Not_Supported_Superdraft_Quality.inst.cfg index c7a19c3299..f6a5338f41 100755 --- a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_cpe_plus_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Quality.inst.cfg index 1d222bec93..4c05ed019e 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_cpe_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Superdraft_Quality.inst.cfg index 2c92677a40..9401ac061d 100755 --- a/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_cpe_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Quality.inst.cfg index 4894ea3e79..b2db6334c0 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_nylon_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Superdraft_Quality.inst.cfg index d8c202efe8..ac99f78d04 100755 --- a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_nylon_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PC_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PC_Not_Supported_Quality.inst.cfg index 919e3e952b..dfba41dfb6 100755 --- a/resources/quality/ultimaker3/um3_bb0.4_PC_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PC_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_pc_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Quality.inst.cfg index 4dba9ea8c6..1b831fd1e2 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_pla_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Superdraft_Quality.inst.cfg index f394ea40b4..153ae27d12 100755 --- a/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_pla_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index 83fd52a1fd..14d8a31c0a 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft weight = -2 material = generic_pva_ultimaker3_BB_0.4 +setting_version = 1 [values] acceleration_support = =math.ceil(acceleration_print * 500 / 4000) diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index 582d6e9c76..f7034e278e 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -8,6 +8,7 @@ weight = -1 type = quality quality_type = fast material = generic_pva_ultimaker3_BB_0.4 +setting_version = 1 [values] acceleration_support = =math.ceil(acceleration_print * 500 / 4000) diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index fc6be3ea3d..e929de3d78 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -8,6 +8,7 @@ weight = 0 type = quality quality_type = high material = generic_pva_ultimaker3_BB_0.4 +setting_version = 1 [values] acceleration_support = =math.ceil(acceleration_print * 500 / 4000) diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index 5eb690fa99..92eebb1a0b 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -8,6 +8,7 @@ weight = 0 type = quality quality_type = normal material = generic_pva_ultimaker3_BB_0.4 +setting_version = 1 [values] acceleration_support = =math.ceil(acceleration_print * 500 / 4000) diff --git a/resources/quality/ultimaker3/um3_bb0.4_TPU_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_TPU_Not_Supported_Quality.inst.cfg index 18bbdb6c12..106ef29f8e 100755 --- a/resources/quality/ultimaker3/um3_bb0.4_TPU_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_TPU_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_tpu_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_TPU_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_TPU_Not_Supported_Superdraft_Quality.inst.cfg index 7d00e9e0df..95e0622c1a 100755 --- a/resources/quality/ultimaker3/um3_bb0.4_TPU_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_TPU_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_tpu_ultimaker3_BB_0.4 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_ABS_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_ABS_Not_Supported_Quality.inst.cfg index 81b6ff8f4b..def07a3a80 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_ABS_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_ABS_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_abs_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_ABS_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_ABS_Not_Supported_Superdraft_Quality.inst.cfg index 2b65cf0aee..fe4ec5bbc6 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_ABS_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_ABS_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_abs_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Not_Supported_Quality.inst.cfg index 7b60406d2b..279e1c9c89 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_cpe_plus_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Not_Supported_Superdraft_Quality.inst.cfg index 6cec304241..3490da81a6 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_cpe_plus_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPE_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPE_Not_Supported_Quality.inst.cfg index dcb12e250f..b70fe13061 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_CPE_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPE_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_cpe_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPE_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPE_Not_Supported_Superdraft_Quality.inst.cfg index cc38d9956f..137a651ddd 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_CPE_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPE_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_cpe_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Not_Supported_Quality.inst.cfg index 2bb282ad56..dfbf2754e2 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_nylon_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Not_Supported_Superdraft_Quality.inst.cfg index 6f5099e267..9242228f50 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_nylon_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PC_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PC_Not_Supported_Quality.inst.cfg index 7e3df6c22b..f206fd4368 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_PC_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PC_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_pc_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PC_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PC_Not_Supported_Superdraft_Quality.inst.cfg index f0c4723a42..cb18b565d7 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_PC_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PC_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_pc_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PLA_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PLA_Not_Supported_Quality.inst.cfg index 651b32be57..223b5a06fe 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_PLA_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PLA_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_pla_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PLA_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PLA_Not_Supported_Superdraft_Quality.inst.cfg index 2ec598e2df..a4f6a6dfeb 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_PLA_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PLA_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_pla_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg index 17e406cdc8..83960d1491 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft weight = -2 material = generic_pva_ultimaker3_BB_0.8 +setting_version = 1 [values] material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg index 7e87761349..f907d0e492 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = superdraft weight = -4 material = generic_pva_ultimaker3_BB_0.8 +setting_version = 1 [values] layer_height = 0.4 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg index d79f0c6848..335d1f5c6d 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = verydraft weight = -3 material = generic_pva_ultimaker3_BB_0.8 +setting_version = 1 [values] layer_height = 0.3 diff --git a/resources/quality/ultimaker3/um3_bb0.8_TPU_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_TPU_Not_Supported_Quality.inst.cfg index 47652d807b..84e5c6d3d3 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_TPU_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_TPU_Not_Supported_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = normal material = generic_tpu_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_TPU_Not_Supported_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_TPU_Not_Supported_Superdraft_Quality.inst.cfg index eb37c60507..222a4935d5 100755 --- a/resources/quality/ultimaker3/um3_bb0.8_TPU_Not_Supported_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_TPU_Not_Supported_Superdraft_Quality.inst.cfg @@ -9,5 +9,6 @@ quality_type = superdraft material = generic_tpu_ultimaker3_BB_0.8 weight = 0 supported = False +setting_version = 1 [values] diff --git a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg index 96e25c6ad8..ee35746983 100644 --- a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = draft global_quality = True weight = -2 +setting_version = 1 [values] layer_height = 0.2 diff --git a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg index 6b1c3c4208..274533485e 100644 --- a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = fast global_quality = True weight = -1 +setting_version = 1 [values] layer_height = 0.15 diff --git a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg index af0741ff88..a4f8b60fba 100644 --- a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = high global_quality = True weight = 0 +setting_version = 1 [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg index a875b0f1ce..e3400f2c5f 100644 --- a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg @@ -8,6 +8,7 @@ type = quality quality_type = normal global_quality = True weight = 0 +setting_version = 1 [values] layer_height = 0.1 diff --git a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg index fd3fd1f642..d9c8d00eee 100755 --- a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg @@ -7,7 +7,8 @@ definition = ultimaker3 type = quality quality_type = superdraft global_quality = True -weight = -2 +weight = -4 +setting_version = 1 [values] layer_height = 0.4 diff --git a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg index 83afa35e2e..35a62bd63e 100755 --- a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg @@ -7,7 +7,8 @@ definition = ultimaker3 type = quality quality_type = verydraft global_quality = True -weight = -2 +weight = -3 +setting_version = 1 [values] layer_height = 0.3 diff --git a/resources/variants/cartesio_0.25.inst.cfg b/resources/variants/cartesio_0.25.inst.cfg index 2c7ecc7b03..b789eef732 100644 --- a/resources/variants/cartesio_0.25.inst.cfg +++ b/resources/variants/cartesio_0.25.inst.cfg @@ -6,6 +6,7 @@ definition = cartesio [metadata] author = Cartesio type = variant +setting_version = 1 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/cartesio_0.4.inst.cfg b/resources/variants/cartesio_0.4.inst.cfg index 43bed9bfbd..46140ccc24 100644 --- a/resources/variants/cartesio_0.4.inst.cfg +++ b/resources/variants/cartesio_0.4.inst.cfg @@ -6,6 +6,7 @@ definition = cartesio [metadata] author = Cartesio type = variant +setting_version = 1 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/cartesio_0.8.inst.cfg b/resources/variants/cartesio_0.8.inst.cfg index 0f6fda119a..118d79144a 100644 --- a/resources/variants/cartesio_0.8.inst.cfg +++ b/resources/variants/cartesio_0.8.inst.cfg @@ -6,6 +6,7 @@ definition = cartesio [metadata] author = Cartesio type = variant +setting_version = 1 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/imade3d_jellybox_0.4.inst.cfg b/resources/variants/imade3d_jellybox_0.4.inst.cfg index b33fa0fea6..8bce86482b 100644 --- a/resources/variants/imade3d_jellybox_0.4.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4.inst.cfg @@ -6,6 +6,7 @@ definition = imade3d_jellybox [metadata] author = IMADE3D type = variant +setting_version = 1 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg index 65c330e58b..e02c1fe29f 100644 --- a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg @@ -6,6 +6,7 @@ definition = imade3d_jellybox [metadata] author = IMADE3D type = variant +setting_version = 1 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_0.25.inst.cfg b/resources/variants/ultimaker2_0.25.inst.cfg index 9d59e47b89..1891124ce9 100644 --- a/resources/variants/ultimaker2_0.25.inst.cfg +++ b/resources/variants/ultimaker2_0.25.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_0.4.inst.cfg b/resources/variants/ultimaker2_0.4.inst.cfg index 7ebcbb69b7..622c97e6ff 100644 --- a/resources/variants/ultimaker2_0.4.inst.cfg +++ b/resources/variants/ultimaker2_0.4.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_0.6.inst.cfg b/resources/variants/ultimaker2_0.6.inst.cfg index accf507750..e64880932f 100644 --- a/resources/variants/ultimaker2_0.6.inst.cfg +++ b/resources/variants/ultimaker2_0.6.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_0.8.inst.cfg b/resources/variants/ultimaker2_0.8.inst.cfg index 97452046cb..f4b86e58ed 100644 --- a/resources/variants/ultimaker2_0.8.inst.cfg +++ b/resources/variants/ultimaker2_0.8.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg index b499db6163..044bec5731 100644 --- a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg index d2fb6f76b1..70cfbb81d1 100644 --- a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg index e4f9f0ce45..0bd4d181ac 100644 --- a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg index 18570ea75d..d83f23859f 100644 --- a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_plus_0.25.inst.cfg b/resources/variants/ultimaker2_plus_0.25.inst.cfg index 7cab771101..f493fecb71 100644 --- a/resources/variants/ultimaker2_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.25.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_plus_0.4.inst.cfg b/resources/variants/ultimaker2_plus_0.4.inst.cfg index 748f367250..b7a7d8c7a7 100644 --- a/resources/variants/ultimaker2_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.4.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_plus_0.6.inst.cfg b/resources/variants/ultimaker2_plus_0.6.inst.cfg index 34d0f7a5cf..9954359cc5 100644 --- a/resources/variants/ultimaker2_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.6.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_plus_0.8.inst.cfg b/resources/variants/ultimaker2_plus_0.8.inst.cfg index e719409060..de21ac87ab 100644 --- a/resources/variants/ultimaker2_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.8.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant +setting_version = 1 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index 925346c66d..e0486289a1 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index dae256c990..4cf31caef0 100644 --- a/resources/variants/ultimaker3_aa04.inst.cfg +++ b/resources/variants/ultimaker3_aa04.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant +setting_version = 1 [values] brim_width = 7 diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index d0c2c9c661..72d4143370 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index b813e8474d..b72d849796 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant +setting_version = 1 [values] cool_fan_speed_max = =cool_fan_speed diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index 9dec070e20..0fd110c76c 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index 6fa09c32ea..99daa082e4 100644 --- a/resources/variants/ultimaker3_extended_aa04.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant +setting_version = 1 [values] brim_width = 7 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index e4fb152ee0..f88dc818c8 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant +setting_version = 1 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index a7c43ea376..229bde1916 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -6,6 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant +setting_version = 1 [values] cool_fan_speed_max = 100 From ef2aa3b2b212b48ca75df9da6c9bd7f139a83fd4 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 13:59:31 +0200 Subject: [PATCH 090/125] Empty InstanceContainers are now correctly handled by setActiveMaterial again CURA-3789 --- cura/Settings/MachineManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 9d66bc7030..0837c577a5 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -721,7 +721,7 @@ class MachineManager(QObject): Logger.log("w", "While trying to set the active material, no material was found to replace it.") return - if old_quality_changes and old_quality_changes.getId() == "empty_quality_changes": + if old_quality_changes and isinstance(old_quality_changes, type(self._empty_quality_changes_container)): old_quality_changes = None self.blurSettings.emit() @@ -754,7 +754,7 @@ class MachineManager(QObject): candidate_quality = quality_manager.findQualityByQualityType(quality_type, quality_manager.getWholeMachineDefinition(machine_definition), [material_container]) - if not candidate_quality or candidate_quality.getId() == "empty_quality": + if not candidate_quality or isinstance(candidate_quality, type(self._empty_quality_changes_container)): # Fall back to a quality (which must be compatible with all other extruders) new_qualities = quality_manager.findAllUsableQualitiesForMachineAndExtruders( self._global_container_stack, ExtruderManager.getInstance().getExtruderStacks()) From 38f081539a41c3935786815e2597f6dcdfe435cb Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:01:06 +0200 Subject: [PATCH 091/125] Fix deserialising density That density variable was never used. Hope this fixes some unaccounted-for bug. Doesn't contribute to CURA-3427 but I'm listing it as if it does anyway. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index e813f6e686..0da3afa125 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -441,8 +441,8 @@ class XmlMaterialProfile(InstanceContainer): tag_name = _tag_without_namespace(entry) property_values[tag_name] = entry.text - diameter = float(property_values.get("diameter", 2.85)) # In mm - density = float(property_values.get("density", 1.3)) # In g/cm3 + meta_data["approximate_diameter"] = round(float(property_values.get("diameter", 2.85))) # In mm + meta_data["density"] = float(property_values.get("density", 1.3)) # In g/cm3 meta_data["properties"] = property_values self.setDefinition(ContainerRegistry.getInstance().findDefinitionContainers(id = "fdmprinter")[0]) @@ -461,7 +461,6 @@ 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 From c8295434f36a406b5328c0202ee84691339aa49d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:04:56 +0200 Subject: [PATCH 092/125] Load setting_version from XML material profile The setting_version is translated from the version number. The setting_version number currently happens to be the same as the version number of XML but that won't always be the case so we introduce a translation-step as well. Contributes to issue CURA-3427. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 0da3afa125..2878369cdd 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -21,6 +21,17 @@ class XmlMaterialProfile(InstanceContainer): super().__init__(container_id, *args, **kwargs) self._inherited_files = [] + ## Translates the version number in the XML files to the setting_version + # metadata entry. + # + # Since the two may increment independently we need a way to say which + # versions of the XML specification are compatible with our setting data + # version numbers. + def xmlVersionToSettingVersion(self, xml_version): + if xml_version == 1: #Only one known version and it happens to be the same as our current setting_version. + return 1 + return 0 + def getInheritedFiles(self): return self._inherited_files @@ -403,6 +414,7 @@ class XmlMaterialProfile(InstanceContainer): meta_data["type"] = "material" meta_data["base_file"] = self.id meta_data["status"] = "unknown" # TODO: Add material verfication + meta_data["setting_version"] = self.getVersionFromSerialized(serialized) inherits = data.find("./um:inherits", self.__namespaces) if inherits is not None: From 98662bc6f64e700fc255f0f921d70e09d55b1d2a Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:07:21 +0200 Subject: [PATCH 093/125] Also update import to renamed package Oops. Contributes to issue CURA-3427. --- plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py index 05e8e0e4cf..3aee161e3c 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py @@ -1,7 +1,7 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. -from . import VersionUpgrade24to25 +from . import VersionUpgrade25to26 from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") From 1e4c394b71359d83094b7a43c3cdedfa0bbd3b84 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:12:36 +0200 Subject: [PATCH 094/125] Remove getting superfluous material density The density is already put in the 'properties' metadata entry. Don't need to put it in there doubly. Turns out that this density line was originally just superfluous. Contributes to issue CURA-3427 or something. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 2878369cdd..1b76a40016 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -454,7 +454,6 @@ class XmlMaterialProfile(InstanceContainer): property_values[tag_name] = entry.text meta_data["approximate_diameter"] = round(float(property_values.get("diameter", 2.85))) # In mm - meta_data["density"] = float(property_values.get("density", 1.3)) # In g/cm3 meta_data["properties"] = property_values self.setDefinition(ContainerRegistry.getInstance().findDefinitionContainers(id = "fdmprinter")[0]) @@ -476,6 +475,7 @@ class XmlMaterialProfile(InstanceContainer): meta_data["compatible"] = global_compatibility self.setMetaData(meta_data) self._dirty = False + print(self.getMetaData()) machines = data.iterfind("./um:settings/um:machine", self.__namespaces) for machine in machines: From a472fd8163f6ca9ab808e877545afbe65a206b88 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:33:44 +0200 Subject: [PATCH 095/125] Remove debug print Oops again. Contributes to issue CURA-3427. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 1b76a40016..95e38457c9 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -475,7 +475,6 @@ class XmlMaterialProfile(InstanceContainer): meta_data["compatible"] = global_compatibility self.setMetaData(meta_data) self._dirty = False - print(self.getMetaData()) machines = data.iterfind("./um:settings/um:machine", self.__namespaces) for machine in machines: From 9ea0f4834105c8d0921f2f3a05f58ce37340a112 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 12 May 2017 14:14:58 +0200 Subject: [PATCH 096/125] Check definition changes conflicts in preRead() CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 58 +++++++++++++++------ 1 file changed, 42 insertions(+), 16 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 2a3719a4cc..16b08e90c4 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -109,7 +109,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): machine_type = "" variant_type_name = i18n_catalog.i18nc("@label", "Nozzle") - num_extruders = 0 # Check if there are any conflicts, so we can ask the user. archive = zipfile.ZipFile(file_name, "r") cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")] @@ -121,31 +120,41 @@ class ThreeMFWorkspaceReader(WorkspaceReader): instance_container_list = [] material_container_list = [] + # + # Read definition containers + # + machine_definition_container_count = 0 + extruder_definition_container_count = 0 definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] - for definition_container_file in definition_container_files: - container_id = self._stripFileToId(definition_container_file) + for each_definition_container_file in definition_container_files: + container_id = self._stripFileToId(each_definition_container_file) definitions = self._container_registry.findDefinitionContainers(id=container_id) if not definitions: definition_container = DefinitionContainer(container_id) - definition_container.deserialize(archive.open(definition_container_file).read().decode("utf-8")) + definition_container.deserialize(archive.open(each_definition_container_file).read().decode("utf-8")) else: definition_container = definitions[0] - definition_container_list.append(definition_container) - if definition_container.getMetaDataEntry("type") != "extruder": + definition_container_type = definition_container.getMetaDataEntry("type") + if definition_container_type == "machine": machine_type = definition_container.getName() variant_type_name = definition_container.getMetaDataEntry("variants_name", variant_type_name) + + machine_definition_container_count += 1 + elif definition_container_type == "extruder": + extruder_definition_container_count += 1 else: - num_extruders += 1 + Logger.log("w", "Unknown definition container type %s for %s", + definition_container_type, each_definition_container_file) Job.yieldThread() - - if num_extruders == 0: - num_extruders = 1 # No extruder stacks found, which means there is one extruder - - extruders = num_extruders * [""] + # sanity check + if machine_definition_container_count != 1: + msg = "Expecting one machine definition container but got %s" % machine_definition_container_count + Logger.log("e", msg) + raise RuntimeError(msg) material_labels = [] material_conflict = False @@ -161,20 +170,22 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if materials and not materials[0].isReadOnly(): # Only non readonly materials can be in conflict material_conflict = True Job.yieldThread() + # Check if any quality_changes instance container is in conflict. instance_container_files = [name for name in cura_file_names if name.endswith(self._instance_container_suffix)] quality_name = "" quality_type = "" num_settings_overriden_by_quality_changes = 0 # How many settings are changed by the quality changes + num_settings_overriden_by_definition_changes = 0 # How many settings are changed by the definition changes num_user_settings = 0 quality_changes_conflict = False - for instance_container_file in instance_container_files: - container_id = self._stripFileToId(instance_container_file) + definition_changes_conflict = False + for each_instance_container_file in instance_container_files: + container_id = self._stripFileToId(each_instance_container_file) instance_container = InstanceContainer(container_id) # Deserialize InstanceContainer by converting read data from bytes to string - instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8")) - + instance_container.deserialize(archive.open(each_instance_container_file).read().decode("utf-8")) instance_container_list.append(instance_container) container_type = instance_container.getMetaDataEntry("type") @@ -187,6 +198,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Check if there really is a conflict by comparing the values if quality_changes[0] != instance_container: quality_changes_conflict = True + elif container_type == "definition_changes": + definition_name = instance_container.getName() + num_settings_overriden_by_definition_changes += len(instance_container._instances) + definition_changes = self._container_registry.findDefinitionContainers(id = container_id) + if definition_changes: + if definition_changes[0] != instance_container: + definition_changes_conflict = True elif container_type == "quality": # If the quality name is not set (either by quality or changes, set it now) # Quality changes should always override this (as they are "on top") @@ -237,9 +255,17 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if not show_dialog: return WorkspaceReader.PreReadResult.accepted + # prepare data for the dialog + num_extruders = extruder_definition_container_count + if num_extruders == 0: + num_extruders = 1 # No extruder stacks found, which means there is one extruder + + extruders = num_extruders * [""] + # Show the dialog, informing the user what is about to happen. self._dialog.setMachineConflict(machine_conflict) self._dialog.setQualityChangesConflict(quality_changes_conflict) + self._dialog.setDefinitionChangesConflict(definition_changes_conflict) self._dialog.setMaterialConflict(material_conflict) self._dialog.setNumVisibleSettings(num_visible_settings) self._dialog.setQualityName(quality_name) From fe11819ce9e9b077aa7d7585b9af236bf1eb3267 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 12 May 2017 14:17:40 +0200 Subject: [PATCH 097/125] Handle "new" resolve strategy for definition&quality changes CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 27 ++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 16b08e90c4..1485e6422f 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -455,7 +455,32 @@ class ThreeMFWorkspaceReader(WorkspaceReader): containers_to_add.append(instance_container) else: if self._resolve_strategies[container_type] == "override": - changes_containers[0].deserialize(archive.open(instance_container_file).read().decode("utf-8")) + instance_container = changes_containers[0] + instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8")) + instance_container.setDirty(True) + elif self._resolve_strategies[container_type] == "new": + # TODO: how should we handle the case "new" for quality_changes and definition_changes? + + new_changes_container_id = self.getNewId(instance_container.getId()) + instance_container._id = new_changes_container_id + instance_container.setName(new_changes_container_id) + + # TODO: we don't know the following is correct or not, need to verify + # AND REFACTOR!!! + if self._resolve_strategies["machine"] == "new": + # The machine is going to get a spiffy new name, so ensure that the id's of user settings match. + extruder_id = instance_container.getMetaDataEntry("extruder", None) + if extruder_id: + new_extruder_id = self.getNewId(extruder_id) + instance_container.setMetaDataEntry("extruder", new_extruder_id) + + machine_id = instance_container.getMetaDataEntry("machine", None) + if machine_id: + new_machine_id = self.getNewId(machine_id) + instance_container.setMetaDataEntry("machine", new_machine_id) + + containers_to_add.append(instance_container) + elif self._resolve_strategies[container_type] is None: # The ID already exists, but nothing in the values changed, so do nothing. pass From 167f616a7c5c81344921b895a9e7028f069c7bf7 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 14:34:45 +0200 Subject: [PATCH 098/125] Decreased interval of extruder timer --- cura/Settings/ExtrudersModel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Settings/ExtrudersModel.py b/cura/Settings/ExtrudersModel.py index d2922ebcc5..7491f8aa93 100644 --- a/cura/Settings/ExtrudersModel.py +++ b/cura/Settings/ExtrudersModel.py @@ -59,7 +59,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): self.addRoleName(self.VariantRole, "variant") self._update_extruder_timer = QTimer() - self._update_extruder_timer.setInterval(250) + self._update_extruder_timer.setInterval(100) self._update_extruder_timer.setSingleShot(True) self._update_extruder_timer.timeout.connect(self.__updateExtruders) From ebd730a68d059579b9bcc63c30b2f798b5264aae Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:43:05 +0200 Subject: [PATCH 099/125] Also add setting_version to fdmextruder Since it obviously doesn't inherit from fdmprinter. Contributes to issue CURA-3427. --- resources/definitions/fdmextruder.def.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/definitions/fdmextruder.def.json b/resources/definitions/fdmextruder.def.json index ff54582885..be006dfe59 100644 --- a/resources/definitions/fdmextruder.def.json +++ b/resources/definitions/fdmextruder.def.json @@ -7,6 +7,7 @@ "type": "extruder", "author": "Ultimaker B.V.", "manufacturer": "Ultimaker", + "setting_version": 1, "visible": false }, "settings": From 5bc613c3e0526dc0f44c18c4632c8ce6546c11fe Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:44:46 +0200 Subject: [PATCH 100/125] Don't use string for default version No need to go via string and cast that to int, just return int directly. Contributes to issue CURA-3427. --- cura/Settings/CuraContainerRegistry.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 91327ceb54..a4dbcc4ca1 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. import os @@ -44,7 +44,7 @@ class CuraContainerRegistry(ContainerRegistry): if isinstance(container, InstanceContainer) and type(container) != type(self.getEmptyInstanceContainer()): #Check against setting version of the definition. required_setting_version = int(container.getDefinition().getMetaDataEntry("setting_version")) - actual_setting_version = int(container.getMetaDataEntry("setting_version", default = "0")) + actual_setting_version = int(container.getMetaDataEntry("setting_version", default = 0)) if required_setting_version != actual_setting_version: Logger.log("w", "Instance container {container_id} is outdated. Its setting version is {actual_setting_version} but it should be {required_setting_version}.".format(container_id = container.getId(), actual_setting_version = actual_setting_version, required_setting_version = required_setting_version)) return #Don't add. From 20e9d195876b2a20a6fa85521b9ae50f86cea75d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:50:43 +0200 Subject: [PATCH 101/125] Update tests to account for new way of getting version numbers The normal version number is multiplied by a million. Currently these tests fail, so nice to have them. Contributes to issue CURA-3427. --- .../VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py index 9f8f1e8590..f965a6db2a 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py @@ -17,7 +17,7 @@ test_cfg_version_good_data = [ "file_data": """[general] version = 1 """, - "version": 1 + "version": 1000000 }, { "test_name": "Other Data Around", @@ -31,14 +31,14 @@ version = 3 layer_height = 0.12 infill_sparse_density = 42 """, - "version": 3 + "version": 3000000 }, { "test_name": "Negative Version", #Why not? "file_data": """[general] version = -20 """, - "version": -20 + "version": -20000000 } ] From 9820dac4a6f0dbe942cbd66e8e13536361af68d0 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:51:44 +0200 Subject: [PATCH 102/125] Actually use setting_version to get the setting version number This was sort of hidden because we've always incremented the normal version number up until now. Contributes to issue CURA-3427. --- .../VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py | 2 +- plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py | 2 +- .../VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py b/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py index 855425053a..0785efa875 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py @@ -250,7 +250,7 @@ class VersionUpgrade21to22(VersionUpgrade): parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("general", "version", fallback = 0)) + setting_version = int(parser.get("general", "setting_version", fallback = 0)) return format_version * 1000000 + setting_version ## Gets the fallback quality to use for a specific machine-variant-material diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py index e1da456c48..a9310e6c63 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py @@ -146,5 +146,5 @@ class VersionUpgrade22to24(VersionUpgrade): parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("general", "version", fallback = 0)) + setting_version = int(parser.get("general", "setting_version", fallback = 0)) return format_version * 1000000 + setting_version diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index da899b03e5..939c0b5c78 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -35,7 +35,7 @@ class VersionUpgrade25to26(VersionUpgrade): parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("general", "version", fallback = 0)) + setting_version = int(parser.get("general", "setting_version", fallback = 0)) return format_version * 1000000 + setting_version ## Upgrades the preferences file from version 2.5 to 2.6. From 55b2392a1d2ca282d2ecf27cff95abe9a6887a79 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:54:33 +0200 Subject: [PATCH 103/125] Load setting version from metadata I'm not really awake today, am I? The functionality happened to still work because of how our real data is structured right now, but the tests still failed. Those are successful now. Contributes to issue CURA-3427. --- .../VersionUpgrade21to22/VersionUpgrade21to22.py | 4 ++-- .../VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py | 4 ++-- .../VersionUpgrade25to26/VersionUpgrade25to26.py | 2 +- .../VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py | 7 +++++++ 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py b/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py index 0785efa875..055d28b3ab 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. import configparser #To get version numbers from config files. @@ -250,7 +250,7 @@ class VersionUpgrade21to22(VersionUpgrade): parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("general", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) return format_version * 1000000 + setting_version ## Gets the fallback quality to use for a specific machine-variant-material diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py index a9310e6c63..ab934210f6 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. import configparser #To get version numbers from config files. @@ -146,5 +146,5 @@ class VersionUpgrade22to24(VersionUpgrade): parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("general", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) return format_version * 1000000 + setting_version diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index 939c0b5c78..c61962d276 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -35,7 +35,7 @@ class VersionUpgrade25to26(VersionUpgrade): parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("general", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) return format_version * 1000000 + setting_version ## Upgrades the preferences file from version 2.5 to 2.6. diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py index f965a6db2a..6d9819bd82 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py @@ -39,6 +39,13 @@ infill_sparse_density = 42 version = -20 """, "version": -20000000 + }, + { + "test_name": "Setting Version", + "file_data": """[general] +version = 1 +[metadata] +setting_version = 1""" } ] From 04ef2bf1f0249e9183f49acad13c06dbff562e32 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 14:58:11 +0200 Subject: [PATCH 104/125] Update setting_version tests Included a bit of a more difficult case. Contributes to issue CURA-3427. --- .../tests/TestVersionUpgrade25to26.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py index 6d9819bd82..e62635561d 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py @@ -45,7 +45,18 @@ version = -20 "file_data": """[general] version = 1 [metadata] -setting_version = 1""" +setting_version = 1 +""", + "version": 1000001 + }, + { + "test_name": "Negative Setting Version", + "file_data": """[general] +version = 1 +[metadata] +setting_version = -3 +""", + "version": 999997 } ] From adefbaf72ea6ed4b84a0c807294c6368f606458c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 15:01:27 +0200 Subject: [PATCH 105/125] Add more unhappy-path tests One for the new setting_version. One for the misconception of version numbers being a major-minor version or something, because it's not stored that way. Contributes to issue CURA-3427. --- .../tests/TestVersionUpgrade25to26.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py index e62635561d..78cd8a03c5 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py @@ -95,6 +95,22 @@ true = false "test_name": "Not a Number", "file_data": """[general] version = not-a-text-version-number +""", + "exception": ValueError + }, + { + "test_name": "Setting Value NaN", + "file_data": """[general] +version = 4 +[metadata] +setting_version = latest_or_something +""", + "exception": ValueError + }, + { + "test_name": "Major-Minor", + "file_data": """[general] +version = 1.2 """, "exception": ValueError } From 3996230ff9f70da1564ac52545d7f99b1e70e2f0 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 12 May 2017 15:51:35 +0200 Subject: [PATCH 106/125] Load GlobalStack before ExtruderStacks for project loading CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 143 ++++++++++---------- 1 file changed, 71 insertions(+), 72 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 1485e6422f..3b5d9dac77 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -350,6 +350,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_stacks_added = [] container_stacks_added = [] + containers_added = [] + global_stack_id_original = self._stripFileToId(global_stack_file) global_stack_id_new = global_stack_id_original global_stack_need_rename = False @@ -497,73 +499,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): for container in containers_to_add: self._container_registry.addContainer(container) container.setDirty(True) + containers_added.append(container) # Get the stack(s) saved in the workspace. Logger.log("d", "Workspace loading is checking stacks containers...") - # load extruder stack files - try: - for index, extruder_stack_file in enumerate(extruder_stack_files): - container_id = self._stripFileToId(extruder_stack_file) - - container_stacks = self._container_registry.findContainerStacks(id = container_id) - if container_stacks: - # this container stack already exists, try to resolve - stack = container_stacks[0] - if self._resolve_strategies["machine"] == "override": - pass # do nothing - elif self._resolve_strategies["machine"] == "new": - # create a new extruder stack from this one - new_id = self.getNewId(container_id) - stack = ExtruderStack(new_id) - stack.deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) - - # Ensure a unique ID and name - stack._id = new_id - - self._container_registry.addContainer(stack) - extruder_stacks_added.append(stack) - else: - if self._resolve_strategies["machine"] == "override": - global_stacks = self._container_registry.findContainerStacks(id = global_stack_id_original) - # deserialize new extruder stack over the current ones - if global_stacks: - old_extruder_stack_id = global_stacks[0].extruders[index].getId() - # HACK delete file - self._container_registry._deleteFiles(global_stacks[0].extruders[index]) - global_stacks[0].extruders[index].deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) - # HACK - global_stacks[0]._extruders = global_stacks[0]._extruders[:2] - # HACK update cache - del self._container_registry._id_container_cache[old_extruder_stack_id] - new_extruder_stack_id = global_stacks[0].extruders[index].getId() - self._container_registry._id_container_cache[new_extruder_stack_id] = global_stacks[0].extruders[index] - - stack = global_stacks[0].extruders[index] - else: - Logger.log("w", "Could not find global stack, while I expected it: %s" % global_stack_id_original) - elif self._resolve_strategies["machine"] == "new": - # container not found, create a new one - stack = ExtruderStack(container_id) - stack.deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) - self._container_registry.addContainer(stack) - extruder_stacks_added.append(stack) - else: - Logger.log("w", "Unknown resolve strategy: %s" % str(self._resolve_strategies["machine"])) - - if global_stack_need_rename: - if stack.getMetaDataEntry("machine"): - stack.setMetaDataEntry("machine", global_stack_id_new) - extruder_stacks.append(stack) - - except: - Logger.logException("w", "We failed to serialize the stack. Trying to clean up.") - # Something went really wrong. Try to remove any data that we added. - for container in extruder_stacks: - self._container_registry.removeContainer(container.getId()) - - return None - + # -- # load global stack file try: # Check if a stack by this ID already exists; @@ -606,22 +547,80 @@ class ThreeMFWorkspaceReader(WorkspaceReader): stack.deserialize(archive.open(global_stack_file).read().decode("utf-8")) container_stacks_added.append(stack) self._container_registry.addContainer(stack) + containers_added.append(stack) global_stack = stack Job.yieldThread() + except: + Logger.logException("w", "We failed to serialize the stack. Trying to clean up.") + # Something went really wrong. Try to remove any data that we added. + for container in containers_added: + self._container_registry.removeContainer(container.getId()) + return + + # -- + # load extruder stack files + try: + for index, extruder_stack_file in enumerate(extruder_stack_files): + container_id = self._stripFileToId(extruder_stack_file) + + container_stacks = self._container_registry.findContainerStacks(id = container_id) + if container_stacks: + # this container stack already exists, try to resolve + stack = container_stacks[0] + if self._resolve_strategies["machine"] == "override": + pass # do nothing + elif self._resolve_strategies["machine"] == "new": + # create a new extruder stack from this one + new_id = self.getNewId(container_id) + stack = ExtruderStack(new_id) + stack.deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) + + # Ensure a unique ID and name + stack._id = new_id + + self._container_registry.addContainer(stack) + extruder_stacks_added.append(stack) + containers_added.append(stack) + else: + if self._resolve_strategies["machine"] == "override": + global_stacks = self._container_registry.findContainerStacks(id = global_stack_id_original) + # deserialize new extruder stack over the current ones + if global_stacks: + old_extruder_stack_id = global_stacks[0].extruders[index].getId() + # HACK delete file + self._container_registry._deleteFiles(global_stacks[0].extruders[index]) + global_stacks[0].extruders[index].deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) + # HACK + global_stacks[0]._extruders = global_stacks[0]._extruders[:2] + # HACK update cache + del self._container_registry._id_container_cache[old_extruder_stack_id] + new_extruder_stack_id = global_stacks[0].extruders[index].getId() + self._container_registry._id_container_cache[new_extruder_stack_id] = global_stacks[0].extruders[index] + + stack = global_stacks[0].extruders[index] + else: + Logger.log("w", "Could not find global stack, while I expected it: %s" % global_stack_id_original) + elif self._resolve_strategies["machine"] == "new": + # container not found, create a new one + stack = ExtruderStack(container_id) + stack.deserialize(archive.open(extruder_stack_file).read().decode("utf-8")) + self._container_registry.addContainer(stack) + extruder_stacks_added.append(stack) + containers_added.append(stack) + else: + Logger.log("w", "Unknown resolve strategy: %s" % str(self._resolve_strategies["machine"])) + + if global_stack_need_rename: + if stack.getMetaDataEntry("machine"): + stack.setMetaDataEntry("machine", global_stack_id_new) + extruder_stacks.append(stack) except: Logger.logException("w", "We failed to serialize the stack. Trying to clean up.") # Something went really wrong. Try to remove any data that we added. - for container in containers_to_add: + for container in containers_added: self._container_registry.removeContainer(container.getId()) - - for container in container_stacks_added: - self._container_registry.removeContainer(container.getId()) - - for container in extruder_stacks_added: - self._container_registry.removeContainer(container.getId()) - - return None + return # # Replacing the old containers if resolve is "new". From e50b0884f09c032530cf518474ca9c7c4a9ff99d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 15:59:38 +0200 Subject: [PATCH 107/125] Add test for registring containers This test tests adding container stacks and seeing if they convert well. Contributes to issue CURA-3427. --- tests/Settings/TestCuraContainerRegistry.py | 23 ++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index 7b191a8376..031875df8c 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -11,6 +11,7 @@ from cura.Settings.CuraContainerRegistry import CuraContainerRegistry #The class from cura.Settings.ExtruderStack import ExtruderStack #Testing for returning the correct types of stacks. from cura.Settings.GlobalStack import GlobalStack #Testing for returning the correct types of stacks. from UM.Resources import Resources #Mocking some functions of this. +import UM.Settings.InstanceContainer #Creating instance containers to register. import UM.Settings.ContainerRegistry #Making empty container stacks. import UM.Settings.ContainerStack #Setting the container registry here properly. from UM.Settings.DefinitionContainer import DefinitionContainer @@ -18,7 +19,10 @@ from UM.Settings.DefinitionContainer import DefinitionContainer ## Gives a fresh CuraContainerRegistry instance. @pytest.fixture() def container_registry(): - return CuraContainerRegistry() + registry = CuraContainerRegistry() + UM.Settings.InstanceContainer.setContainerRegistry(registry) + UM.Settings.ContainerStack.setContainerRegistry(registry) + return registry def teardown(): #If the temporary file for the legacy file rename test still exists, remove it. @@ -26,6 +30,23 @@ def teardown(): if os.path.isfile(temporary_file): os.remove(temporary_file) +## Tests whether the addContainer function properly converts ContainerStacks. +def test_addContainerExtruderStack(container_registry): + definition = DefinitionContainer(container_id = "Test Definition") #Need some definition first to be able to register stacks. + container_registry.addContainer(definition) + + container_stack = UM.Settings.ContainerStack.ContainerStack(stack_id = "Test Container Stack") #A container we're going to convert. + container_stack.addMetaDataEntry("type", "extruder_train") #This is now an extruder train. + container_stack.insertContainer(0, definition) #Add a definition to it so it doesn't complain. + + mock_super_add_container = unittest.mock.MagicMock() + with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): + container_registry.addContainer(container_stack) + + assert len(mock_super_add_container.call_args_list) == 1 #Called only once. + assert len(mock_super_add_container.call_args_list[0][0]) == 1 #Called with one parameter. + assert type(mock_super_add_container.call_args_list[0][0][0]) == ExtruderStack + ## Tests whether loading gives objects of the correct type. @pytest.mark.parametrize("filename, output_class", [ ("ExtruderLegacy.stack.cfg", ExtruderStack), From ab7b9913c763c983375605da045b100cd8fd792c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 16:11:51 +0200 Subject: [PATCH 108/125] Add test for registering global stacks This test tests adding container stacks and seeing if they convert well. Contributes to issue CURA-3427. --- tests/Settings/TestCuraContainerRegistry.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index 031875df8c..fae843f820 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -30,7 +30,7 @@ def teardown(): if os.path.isfile(temporary_file): os.remove(temporary_file) -## Tests whether the addContainer function properly converts ContainerStacks. +## Tests whether addContainer properly converts to ExtruderStack. def test_addContainerExtruderStack(container_registry): definition = DefinitionContainer(container_id = "Test Definition") #Need some definition first to be able to register stacks. container_registry.addContainer(definition) @@ -39,7 +39,7 @@ def test_addContainerExtruderStack(container_registry): container_stack.addMetaDataEntry("type", "extruder_train") #This is now an extruder train. container_stack.insertContainer(0, definition) #Add a definition to it so it doesn't complain. - mock_super_add_container = unittest.mock.MagicMock() + mock_super_add_container = unittest.mock.MagicMock() #Takes the role of the Uranium-ContainerRegistry where the resulting containers get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): container_registry.addContainer(container_stack) @@ -47,6 +47,23 @@ def test_addContainerExtruderStack(container_registry): assert len(mock_super_add_container.call_args_list[0][0]) == 1 #Called with one parameter. assert type(mock_super_add_container.call_args_list[0][0][0]) == ExtruderStack +## Tests whether addContainer properly converts to GlobalStack. +def test_addContainerGlobalStack(container_registry): + definition = DefinitionContainer(container_id = "Test Definition") #Need some definition first to be able to register stacks. + container_registry.addContainer(definition) + + container_stack = UM.Settings.ContainerStack.ContainerStack(stack_id = "Test Container Stack") #A container we're going to convert. + container_stack.addMetaDataEntry("type", "machine") #This is now a global stack. + container_stack.insertContainer(0, definition) #Must have a definition. + + mock_super_add_container = unittest.mock.MagicMock() #Takes the role of the Uranium-ContainerRegistry where the resulting containers get registered. + with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): + container_registry.addContainer(container_stack) + + assert len(mock_super_add_container.call_args_list) == 1 #Called only once. + assert len(mock_super_add_container.call_args_list[0][0]) == 1 #Called with one parameter. + assert type(mock_super_add_container.call_args_list[0][0][0]) == GlobalStack + ## Tests whether loading gives objects of the correct type. @pytest.mark.parametrize("filename, output_class", [ ("ExtruderLegacy.stack.cfg", ExtruderStack), From 2b64e92a99aba7ba3b60ab8e4af3bd6adbfe8e9d Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 16:13:09 +0200 Subject: [PATCH 109/125] Removed unused imports --- cura/Settings/MachineManager.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 0837c577a5..f2c91f9e74 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -11,14 +11,11 @@ from UM.Application import Application from UM.Preferences import Preferences from UM.Logger import Logger from UM.Message import Message -from UM.Decorators import deprecated from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerStack import ContainerStack from UM.Settings.InstanceContainer import InstanceContainer -from UM.Settings.SettingDefinition import SettingDefinition from UM.Settings.SettingFunction import SettingFunction -from UM.Settings.Validator import ValidatorState from UM.Signal import postponeSignals import UM.FlameProfiler @@ -39,6 +36,7 @@ if TYPE_CHECKING: import os + class MachineManager(QObject): def __init__(self, parent = None): super().__init__(parent) @@ -105,8 +103,6 @@ class MachineManager(QObject): self._material_incompatible_message = Message(catalog.i18nc("@info:status", "The selected material is incompatible with the selected machine or configuration.")) - - globalContainerChanged = pyqtSignal() # Emitted whenever the global stack is changed (ie: when changing between printers, changing a global profile, but not when changing a value) activeMaterialChanged = pyqtSignal() activeVariantChanged = pyqtSignal() From 08c0779ddedaeca057f91f531556f2dfa004b9cb Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 12 May 2017 16:18:46 +0200 Subject: [PATCH 110/125] Remove unused file, context menu takes care of the multiply object dialog --- resources/qml/MultiplyObjectOptions.qml | 66 ------------------------- 1 file changed, 66 deletions(-) delete mode 100644 resources/qml/MultiplyObjectOptions.qml diff --git a/resources/qml/MultiplyObjectOptions.qml b/resources/qml/MultiplyObjectOptions.qml deleted file mode 100644 index a079369d0d..0000000000 --- a/resources/qml/MultiplyObjectOptions.qml +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Cura is released under the terms of the AGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Window 2.1 - -import UM 1.1 as UM - -UM.Dialog -{ - id: base - - //: Dialog title - title: catalog.i18nc("@title:window", "Multiply Model") - - minimumWidth: 400 * Screen.devicePixelRatio - minimumHeight: 80 * Screen.devicePixelRatio - width: minimumWidth - height: minimumHeight - - property var objectId: 0; - onAccepted: CuraApplication.multiplyObject(base.objectId, parseInt(copiesField.text)) - - property variant catalog: UM.I18nCatalog { name: "cura" } - - signal reset() - onReset: { - copiesField.text = "1"; - copiesField.selectAll(); - copiesField.focus = true; - } - - Row - { - spacing: UM.Theme.getSize("default_margin").width - - Label { - text: "Number of copies:" - anchors.verticalCenter: copiesField.verticalCenter - } - - TextField { - id: copiesField - validator: RegExpValidator { regExp: /^\d{0,2}/ } - maximumLength: 2 - } - } - - - rightButtons: - [ - Button - { - text: catalog.i18nc("@action:button","OK") - onClicked: base.accept() - enabled: base.objectId != 0 && parseInt(copiesField.text) > 0 - }, - Button - { - text: catalog.i18nc("@action:button","Cancel") - onClicked: base.reject() - } - ] -} - From 52ffac677f8eda122727ab40354245684cd20703 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 16:21:33 +0200 Subject: [PATCH 111/125] Add test for happy path of filtering by setting_version If the setting_version is correct, the container should get registered. Contributes to issue CURA-3427. --- tests/Settings/TestCuraContainerRegistry.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index fae843f820..bbeab3b1c3 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -64,6 +64,21 @@ def test_addContainerGlobalStack(container_registry): assert len(mock_super_add_container.call_args_list[0][0]) == 1 #Called with one parameter. assert type(mock_super_add_container.call_args_list[0][0][0]) == GlobalStack +def test_addContainerGoodSettingVersion(container_registry): + definition = DefinitionContainer(container_id = "Test Definition") + definition.getMetaData()["setting_version"] = 3 + container_registry.addContainer(definition) + + instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") + instance.addMetaDataEntry("setting_version", 3) + instance.setDefinition(definition) + + mock_super_add_container = unittest.mock.MagicMock() #Take the role of the Uranium-ContainerRegistry where the resulting containers get registered. + with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): + container_registry.addContainer(instance) + + mock_super_add_container.assert_called_once_with(instance) #The instance must have been registered now. + ## Tests whether loading gives objects of the correct type. @pytest.mark.parametrize("filename, output_class", [ ("ExtruderLegacy.stack.cfg", ExtruderStack), From 2888189f570c8486ed975a7d0f2dd4c5db321b05 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 16:25:14 +0200 Subject: [PATCH 112/125] Add test for when an instance container has no setting_version The setting_version is interpreted as 0 then. Contributes to issue CURA-3427. --- tests/Settings/TestCuraContainerRegistry.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index bbeab3b1c3..befdcd5fe4 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -79,6 +79,21 @@ def test_addContainerGoodSettingVersion(container_registry): mock_super_add_container.assert_called_once_with(instance) #The instance must have been registered now. +def test_addContainerNoSettingVersion(container_registry): + definition = DefinitionContainer(container_id = "Test Definition") + definition.getMetaData()["setting_version"] = 3 + container_registry.addContainer(definition) + + instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") + #Don't add setting_version metadata. + instance.setDefinition(definition) + + mock_super_add_container = unittest.mock.MagicMock() #Take the role of the Uranium-ContainerRegistry where the resulting container should not get registered. + with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): + container_registry.addContainer(instance) + + mock_super_add_container.assert_not_called() #Should not get passed on to UM.Settings.ContainerRegistry.addContainer, because the setting_version is interpreted as 0! + ## Tests whether loading gives objects of the correct type. @pytest.mark.parametrize("filename, output_class", [ ("ExtruderLegacy.stack.cfg", ExtruderStack), From 77204fc4b010506849dbc2be58f9e4000b23a7cf Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 16:27:37 +0200 Subject: [PATCH 113/125] Type hinting & unused code removal --- cura/Settings/MachineManager.py | 188 ++++++-------------------------- 1 file changed, 34 insertions(+), 154 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index f2c91f9e74..57cc296bdf 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -327,7 +327,7 @@ class MachineManager(QObject): def _onInstanceContainersChanged(self, container): self._instance_container_timer.start() - def _onPropertyChanged(self, key, property_name): + def _onPropertyChanged(self, key: str, property_name: str): if property_name == "value": # Notify UI items, such as the "changed" star in profile pull down menu. self.activeStackValueChanged.emit() @@ -411,7 +411,7 @@ class MachineManager(QObject): ## Delete a user setting from the global stack and all extruder stacks. # \param key \type{str} the name of the key to delete @pyqtSlot(str) - def clearUserSettingAllCurrentStacks(self, key): + def clearUserSettingAllCurrentStacks(self, key: str): if not self._global_container_stack: return @@ -567,7 +567,7 @@ class MachineManager(QObject): # \return The layer height of the currently active quality profile. If # there is no quality profile, this returns 0. @pyqtProperty(float, notify=activeQualityChanged) - def activeQualityLayerHeight(self): + def activeQualityLayerHeight(self) -> float: if not self._global_container_stack: return 0 @@ -584,7 +584,7 @@ class MachineManager(QObject): value = value(self._global_container_stack) return value - return 0 #No quality profile. + return 0 # No quality profile. ## Get the Material ID associated with the currently active material # \returns MaterialID (string) if found, empty string otherwise @@ -606,7 +606,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify=activeQualityChanged) - def activeQualityName(self): + def activeQualityName(self) -> str: if self._active_container_stack and self._global_container_stack: quality = self._global_container_stack.qualityChanges if quality and not isinstance(quality, type(self._empty_quality_changes_container)): @@ -617,7 +617,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify=activeQualityChanged) - def activeQualityId(self): + def activeQualityId(self) -> str: if self._active_container_stack: quality = self._active_container_stack.qualityChanges if quality and not isinstance(quality, type(self._empty_quality_changes_container)): @@ -628,7 +628,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify=activeQualityChanged) - def globalQualityId(self): + def globalQualityId(self) -> str: if self._global_container_stack: quality = self._global_container_stack.qualityChanges if quality and not isinstance(quality, type(self._empty_quality_changes_container)): @@ -639,7 +639,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify = activeQualityChanged) - def activeQualityType(self): + def activeQualityType(self) -> str: if self._active_container_stack: quality = self._active_container_stack.quality if quality: @@ -647,7 +647,7 @@ class MachineManager(QObject): return "" @pyqtProperty(bool, notify = activeQualityChanged) - def isActiveQualitySupported(self): + def isActiveQualitySupported(self) -> bool: if self._active_container_stack: quality = self._active_container_stack.quality if quality: @@ -661,7 +661,7 @@ class MachineManager(QObject): # \todo Ideally, this method would be named activeQualityId(), and the other one # would be named something like activeQualityOrQualityChanges() for consistency @pyqtProperty(str, notify = activeQualityChanged) - def activeQualityContainerId(self): + def activeQualityContainerId(self) -> str: # We're using the active stack instead of the global stack in case the list of qualities differs per extruder if self._global_container_stack: quality = self._active_container_stack.quality @@ -670,7 +670,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify = activeQualityChanged) - def activeQualityChangesId(self): + def activeQualityChangesId(self) -> str: if self._active_container_stack: changes = self._active_container_stack.qualityChanges if changes and changes.getId() != "empty": @@ -687,7 +687,7 @@ class MachineManager(QObject): ## Copy the value of the setting of the current extruder to all other extruders as well as the global container. @pyqtSlot(str) - def copyValueToExtruders(self, key): + def copyValueToExtruders(self, key: str): if not self._active_container_stack or self._global_container_stack.getProperty("machine_extruder_count", "value") <= 1: return @@ -701,7 +701,7 @@ class MachineManager(QObject): ## Set the active material by switching out a container # Depending on from/to material+current variant, a quality profile is chosen and set. @pyqtSlot(str) - def setActiveMaterial(self, material_id): + def setActiveMaterial(self, material_id: str): with postponeSignals(*self._getContainerChangedSignals(), compress = True): containers = ContainerRegistry.getInstance().findInstanceContainers(id = material_id) if not containers or not self._active_container_stack: @@ -766,7 +766,7 @@ class MachineManager(QObject): self.setActiveQuality(new_quality_id) @pyqtSlot(str) - def setActiveVariant(self, variant_id): + def setActiveVariant(self, variant_id: str): with postponeSignals(*self._getContainerChangedSignals(), compress = True): containers = ContainerRegistry.getInstance().findInstanceContainers(id = variant_id) if not containers or not self._active_container_stack: @@ -789,7 +789,7 @@ class MachineManager(QObject): ## set the active quality # \param quality_id The quality_id of either a quality or a quality_changes @pyqtSlot(str) - def setActiveQuality(self, quality_id): + def setActiveQuality(self, quality_id: str): with postponeSignals(*self._getContainerChangedSignals(), compress = True): self.blurSettings.emit() @@ -848,7 +848,7 @@ class MachineManager(QObject): # \param quality_name \type{str} the name of the quality. # \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes". @UM.FlameProfiler.profile - def determineQualityAndQualityChangesForQualityType(self, quality_type): + def determineQualityAndQualityChangesForQualityType(self, quality_type: str): quality_manager = QualityManager.getInstance() result = [] empty_quality_changes = self._empty_quality_changes_container @@ -885,7 +885,7 @@ class MachineManager(QObject): # # \param quality_changes_name \type{str} the name of the quality changes. # \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes". - def _determineQualityAndQualityChangesForQualityChanges(self, quality_changes_name): + def _determineQualityAndQualityChangesForQualityChanges(self, quality_changes_name: str): result = [] quality_manager = QualityManager.getInstance() @@ -960,7 +960,7 @@ class MachineManager(QObject): Application.getInstance().discardOrKeepProfileChanges() @pyqtProperty(str, notify = activeVariantChanged) - def activeVariantName(self): + def activeVariantName(self) -> str: if self._active_container_stack: variant = self._active_container_stack.variant if variant: @@ -969,7 +969,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify = activeVariantChanged) - def activeVariantId(self): + def activeVariantId(self) -> str: if self._active_container_stack: variant = self._active_container_stack.variant if variant: @@ -978,7 +978,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify = globalContainerChanged) - def activeDefinitionId(self): + def activeDefinitionId(self) -> str: if self._global_container_stack: definition = self._global_container_stack.getBottom() if definition: @@ -987,7 +987,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify=globalContainerChanged) - def activeDefinitionName(self): + def activeDefinitionName(self) -> str: if self._global_container_stack: definition = self._global_container_stack.getBottom() if definition: @@ -999,7 +999,7 @@ class MachineManager(QObject): # \returns DefinitionID (string) if found, empty string otherwise # \sa getQualityDefinitionId @pyqtProperty(str, notify = globalContainerChanged) - def activeQualityDefinitionId(self): + def activeQualityDefinitionId(self) -> str: if self._global_container_stack: return self.getQualityDefinitionId(self._global_container_stack.getBottom()) return "" @@ -1008,14 +1008,14 @@ class MachineManager(QObject): # This is normally the id of the definition itself, but machines can specify a different definition to inherit qualities from # \param definition (DefinitionContainer) machine definition # \returns DefinitionID (string) if found, empty string otherwise - def getQualityDefinitionId(self, definition): + def getQualityDefinitionId(self, definition: "DefinitionContainer") -> str: return QualityManager.getInstance().getParentMachineDefinition(definition).getId() ## Get the Variant ID to use to select quality profiles for the currently active variant # \returns VariantID (string) if found, empty string otherwise # \sa getQualityVariantId @pyqtProperty(str, notify = activeVariantChanged) - def activeQualityVariantId(self): + def activeQualityVariantId(self) -> str: if self._active_container_stack: variant = self._active_container_stack.variant if variant: @@ -1026,9 +1026,9 @@ class MachineManager(QObject): # This is normally the id of the variant itself, but machines can specify a different definition # to inherit qualities from, which has consequences for the variant to use as well # \param definition (DefinitionContainer) machine definition - # \param variant (DefinitionContainer) variant definition + # \param variant (InstanceContainer) variant definition # \returns VariantID (string) if found, empty string otherwise - def getQualityVariantId(self, definition, variant): + def getQualityVariantId(self, definition: "DefinitionContainer", variant: "InstanceContainer") -> str: variant_id = variant.getId() definition_id = definition.getId() quality_definition_id = self.getQualityDefinitionId(definition) @@ -1040,7 +1040,7 @@ class MachineManager(QObject): ## Gets how the active definition calls variants # Caveat: per-definition-variant-title is currently not translated (though the fallback is) @pyqtProperty(str, notify = globalContainerChanged) - def activeDefinitionVariantsName(self): + def activeDefinitionVariantsName(self) -> str: fallback_title = catalog.i18nc("@label", "Nozzle") if self._global_container_stack: return self._global_container_stack.getBottom().getMetaDataEntry("variants_name", fallback_title) @@ -1048,7 +1048,7 @@ class MachineManager(QObject): return fallback_title @pyqtSlot(str, str) - def renameMachine(self, machine_id, new_name): + def renameMachine(self, machine_id: str, new_name: str): containers = ContainerRegistry.getInstance().findContainerStacks(id = machine_id) if containers: new_name = self._createUniqueName("machine", containers[0].getName(), new_name, containers[0].getBottom().getName()) @@ -1056,7 +1056,7 @@ class MachineManager(QObject): self.globalContainerChanged.emit() @pyqtSlot(str) - def removeMachine(self, machine_id): + def removeMachine(self, machine_id: str): # If the machine that is being removed is the currently active machine, set another machine as the active machine. activate_new_machine = (self._global_container_stack and self._global_container_stack.getId() == machine_id) @@ -1074,14 +1074,14 @@ class MachineManager(QObject): @pyqtProperty(bool, notify = globalContainerChanged) - def hasMaterials(self): + def hasMaterials(self) -> bool: if self._global_container_stack: return bool(self._global_container_stack.getMetaDataEntry("has_materials", False)) return False @pyqtProperty(bool, notify = globalContainerChanged) - def hasVariants(self): + def hasVariants(self) -> bool: if self._global_container_stack: return bool(self._global_container_stack.getMetaDataEntry("has_variants", False)) @@ -1090,7 +1090,7 @@ class MachineManager(QObject): ## Property to indicate if a machine has "specialized" material profiles. # Some machines have their own material profiles that "override" the default catch all profiles. @pyqtProperty(bool, notify = globalContainerChanged) - def filterMaterialsByMachine(self): + def filterMaterialsByMachine(self) -> bool: if self._global_container_stack: return bool(self._global_container_stack.getMetaDataEntry("has_machine_materials", False)) @@ -1099,7 +1099,7 @@ class MachineManager(QObject): ## Property to indicate if a machine has "specialized" quality profiles. # Some machines have their own quality profiles that "override" the default catch all profiles. @pyqtProperty(bool, notify = globalContainerChanged) - def filterQualityByMachine(self): + def filterQualityByMachine(self) -> bool: if self._global_container_stack: return bool(self._global_container_stack.getMetaDataEntry("has_machine_quality", False)) return False @@ -1108,7 +1108,7 @@ class MachineManager(QObject): # \param machine_id string machine id to get the definition ID of # \returns DefinitionID (string) if found, None otherwise @pyqtSlot(str, result = str) - def getDefinitionByMachineId(self, machine_id): + def getDefinitionByMachineId(self, machine_id: str) -> str: containers = ContainerRegistry.getInstance().findContainerStacks(id=machine_id) if containers: return containers[0].getBottom().getId() @@ -1117,22 +1117,6 @@ class MachineManager(QObject): def createMachineManager(engine=None, script_engine=None): return MachineManager() - def _updateVariantContainer(self, definition: "DefinitionContainer"): - if not definition.getMetaDataEntry("has_variants"): - return self._empty_variant_container - machine_definition_id = Application.getInstance().getMachineManager().getQualityDefinitionId(definition) - containers = [] - preferred_variant = definition.getMetaDataEntry("preferred_variant") - if preferred_variant: - containers = ContainerRegistry.getInstance().findInstanceContainers(type = "variant", definition = machine_definition_id, id = preferred_variant) - if not containers: - containers = ContainerRegistry.getInstance().findInstanceContainers(type = "variant", definition = machine_definition_id) - - if containers: - return containers[0] - - return self._empty_variant_container - def _updateMaterialContainer(self, definition: "DefinitionContainer", stack: "ContainerStack", variant_container: Optional["InstanceContainer"] = None, preferred_material_name: Optional[str] = None): if not definition.getMetaDataEntry("has_materials"): return self._empty_material_container @@ -1170,110 +1154,6 @@ class MachineManager(QObject): Logger.log("w", "Unable to find a material container with provided criteria, returning an empty one instead.") return self._empty_material_container - def _updateQualityContainer(self, definition: "DefinitionContainer", variant_container: "ContainerStack", material_container = None, preferred_quality_name: Optional[str] = None): - container_registry = ContainerRegistry.getInstance() - search_criteria = { "type": "quality" } - - if definition.getMetaDataEntry("has_machine_quality"): - search_criteria["definition"] = self.getQualityDefinitionId(definition) - - if definition.getMetaDataEntry("has_materials") and material_container: - search_criteria["material"] = material_container.id - else: - search_criteria["definition"] = "fdmprinter" - - if preferred_quality_name and preferred_quality_name != "empty": - search_criteria["name"] = preferred_quality_name - else: - preferred_quality = definition.getMetaDataEntry("preferred_quality") - if preferred_quality: - search_criteria["id"] = preferred_quality - - containers = container_registry.findInstanceContainers(**search_criteria) - if containers: - return containers[0] - - if "material" in search_criteria: - # First check if we can solve our material not found problem by checking if we can find quality containers - # that are assigned to the parents of this material profile. - try: - inherited_files = material_container.getInheritedFiles() - except AttributeError: # Material_container does not support inheritance. - inherited_files = [] - - if inherited_files: - for inherited_file in inherited_files: - # Extract the ID from the path we used to load the file. - search_criteria["material"] = os.path.basename(inherited_file).split(".")[0] - containers = container_registry.findInstanceContainers(**search_criteria) - if containers: - return containers[0] - # We still weren't able to find a quality for this specific material. - # Try to find qualities for a generic version of the material. - material_search_criteria = { "type": "material", "material": material_container.getMetaDataEntry("material"), "color_name": "Generic"} - if definition.getMetaDataEntry("has_machine_quality"): - if material_container: - material_search_criteria["definition"] = material_container.getDefinition().id - - if definition.getMetaDataEntry("has_variants"): - material_search_criteria["variant"] = material_container.getMetaDataEntry("variant") - else: - material_search_criteria["definition"] = self.getQualityDefinitionId(definition) - - if definition.getMetaDataEntry("has_variants") and variant_container: - material_search_criteria["variant"] = self.getQualityVariantId(definition, variant_container) - else: - material_search_criteria["definition"] = "fdmprinter" - material_containers = container_registry.findInstanceContainers(**material_search_criteria) - # Try all materials to see if there is a quality profile available. - for material_container in material_containers: - search_criteria["material"] = material_container.getId() - - containers = container_registry.findInstanceContainers(**search_criteria) - if containers: - return containers[0] - - if "name" in search_criteria or "id" in search_criteria: - # If a quality by this name can not be found, try a wider set of search criteria - search_criteria.pop("name", None) - search_criteria.pop("id", None) - - containers = container_registry.findInstanceContainers(**search_criteria) - if containers: - return containers[0] - - # Notify user that we were unable to find a matching quality - message = Message(catalog.i18nc("@info:status", "Unable to find a quality profile for this combination. Default settings will be used instead.")) - message.show() - return self._empty_quality_container - - ## Finds a quality-changes container to use if any other container - # changes. - # - # \param quality_type The quality type to find a quality-changes for. - # \param preferred_quality_changes_name The name of the quality-changes to - # pick, if any such quality-changes profile is available. - def _updateQualityChangesContainer(self, quality_type, preferred_quality_changes_name = None): - container_registry = ContainerRegistry.getInstance() # Cache. - search_criteria = { "type": "quality_changes" } - - search_criteria["quality"] = quality_type - if preferred_quality_changes_name: - search_criteria["name"] = preferred_quality_changes_name - - # Try to search with the name in the criteria first, since we prefer to have the correct name. - containers = container_registry.findInstanceContainers(**search_criteria) - if containers: # Found one! - return containers[0] - - if "name" in search_criteria: - del search_criteria["name"] # Not found, then drop the name requirement (if we had one) and search again. - containers = container_registry.findInstanceContainers(**search_criteria) - if containers: - return containers[0] - - return self._empty_quality_changes_container # Didn't find anything with the required quality_type. - def _onMachineNameChanged(self): self.globalContainerChanged.emit() From a2b0b1076ac42c6041aef3ceb1a73a91a919324e Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 16:28:31 +0200 Subject: [PATCH 114/125] Add test for when setting_version doesn't match its definition Contributes to issue CURA-3427. --- tests/Settings/TestCuraContainerRegistry.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index befdcd5fe4..14ea9ea528 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -94,6 +94,21 @@ def test_addContainerNoSettingVersion(container_registry): mock_super_add_container.assert_not_called() #Should not get passed on to UM.Settings.ContainerRegistry.addContainer, because the setting_version is interpreted as 0! +def test_addContainerBadSettingVersion(container_registry): + definition = DefinitionContainer(container_id = "Test Definition") + definition.getMetaData()["setting_version"] = 3 + container_registry.addContainer(definition) + + instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") + instance.addMetaDataEntry("setting_version", 9001) #Wrong version! + instance.setDefinition(definition) + + mock_super_add_container = unittest.mock.MagicMock() #Take the role of the Uranium-ContainerRegistry where the resulting container should not get registered. + with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): + container_registry.addContainer(instance) + + mock_super_add_container.assert_not_called() #Should not get passed on to UM.Settings.ContainerRegistry.addContainer, because the setting_version doesn't match its definition! + ## Tests whether loading gives objects of the correct type. @pytest.mark.parametrize("filename, output_class", [ ("ExtruderLegacy.stack.cfg", ExtruderStack), From def93f8dc94420129391bcb7054454ef7cdd1923 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 16:31:18 +0200 Subject: [PATCH 115/125] Define fixture for DefinitionContainer instances Removes a few lines from the tests, making them simpler. Not much though. Contributes to issue CURA-3427. --- tests/Settings/TestCuraContainerRegistry.py | 46 ++++++++++----------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index 14ea9ea528..268ad7fb90 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -24,6 +24,11 @@ def container_registry(): UM.Settings.ContainerStack.setContainerRegistry(registry) return registry +## Gives an arbitrary definition container. +@pytest.fixture() +def definition_container(): + return DefinitionContainer(container_id = "Test Definition") + def teardown(): #If the temporary file for the legacy file rename test still exists, remove it. temporary_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), "stacks", "temporary.stack.cfg") @@ -31,13 +36,12 @@ def teardown(): os.remove(temporary_file) ## Tests whether addContainer properly converts to ExtruderStack. -def test_addContainerExtruderStack(container_registry): - definition = DefinitionContainer(container_id = "Test Definition") #Need some definition first to be able to register stacks. - container_registry.addContainer(definition) +def test_addContainerExtruderStack(container_registry, definition_container): + container_registry.addContainer(definition_container) container_stack = UM.Settings.ContainerStack.ContainerStack(stack_id = "Test Container Stack") #A container we're going to convert. container_stack.addMetaDataEntry("type", "extruder_train") #This is now an extruder train. - container_stack.insertContainer(0, definition) #Add a definition to it so it doesn't complain. + container_stack.insertContainer(0, definition_container) #Add a definition to it so it doesn't complain. mock_super_add_container = unittest.mock.MagicMock() #Takes the role of the Uranium-ContainerRegistry where the resulting containers get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -48,13 +52,12 @@ def test_addContainerExtruderStack(container_registry): assert type(mock_super_add_container.call_args_list[0][0][0]) == ExtruderStack ## Tests whether addContainer properly converts to GlobalStack. -def test_addContainerGlobalStack(container_registry): - definition = DefinitionContainer(container_id = "Test Definition") #Need some definition first to be able to register stacks. - container_registry.addContainer(definition) +def test_addContainerGlobalStack(container_registry, definition_container): + container_registry.addContainer(definition_container) container_stack = UM.Settings.ContainerStack.ContainerStack(stack_id = "Test Container Stack") #A container we're going to convert. container_stack.addMetaDataEntry("type", "machine") #This is now a global stack. - container_stack.insertContainer(0, definition) #Must have a definition. + container_stack.insertContainer(0, definition_container) #Must have a definition. mock_super_add_container = unittest.mock.MagicMock() #Takes the role of the Uranium-ContainerRegistry where the resulting containers get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -64,14 +67,13 @@ def test_addContainerGlobalStack(container_registry): assert len(mock_super_add_container.call_args_list[0][0]) == 1 #Called with one parameter. assert type(mock_super_add_container.call_args_list[0][0][0]) == GlobalStack -def test_addContainerGoodSettingVersion(container_registry): - definition = DefinitionContainer(container_id = "Test Definition") - definition.getMetaData()["setting_version"] = 3 - container_registry.addContainer(definition) +def test_addContainerGoodSettingVersion(container_registry, definition_container): + definition_container.getMetaData()["setting_version"] = 3 + container_registry.addContainer(definition_container) instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") instance.addMetaDataEntry("setting_version", 3) - instance.setDefinition(definition) + instance.setDefinition(definition_container) mock_super_add_container = unittest.mock.MagicMock() #Take the role of the Uranium-ContainerRegistry where the resulting containers get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -79,14 +81,13 @@ def test_addContainerGoodSettingVersion(container_registry): mock_super_add_container.assert_called_once_with(instance) #The instance must have been registered now. -def test_addContainerNoSettingVersion(container_registry): - definition = DefinitionContainer(container_id = "Test Definition") - definition.getMetaData()["setting_version"] = 3 - container_registry.addContainer(definition) +def test_addContainerNoSettingVersion(container_registry, definition_container): + definition_container.getMetaData()["setting_version"] = 3 + container_registry.addContainer(definition_container) instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") #Don't add setting_version metadata. - instance.setDefinition(definition) + instance.setDefinition(definition_container) mock_super_add_container = unittest.mock.MagicMock() #Take the role of the Uranium-ContainerRegistry where the resulting container should not get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -94,14 +95,13 @@ def test_addContainerNoSettingVersion(container_registry): mock_super_add_container.assert_not_called() #Should not get passed on to UM.Settings.ContainerRegistry.addContainer, because the setting_version is interpreted as 0! -def test_addContainerBadSettingVersion(container_registry): - definition = DefinitionContainer(container_id = "Test Definition") - definition.getMetaData()["setting_version"] = 3 - container_registry.addContainer(definition) +def test_addContainerBadSettingVersion(container_registry, definition_container): + definition_container.getMetaData()["setting_version"] = 3 + container_registry.addContainer(definition_container) instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") instance.addMetaDataEntry("setting_version", 9001) #Wrong version! - instance.setDefinition(definition) + instance.setDefinition(definition_container) mock_super_add_container = unittest.mock.MagicMock() #Take the role of the Uranium-ContainerRegistry where the resulting container should not get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): From 7ee5a66c6448afef8c99d9338707c7454e7da870 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 16:32:00 +0200 Subject: [PATCH 116/125] CuraContainerStack now overrides getBottom, so it always returns a definition --- cura/Settings/CuraContainerStack.py | 4 ++++ cura/Settings/MachineManager.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index 6cffa6030b..4c5b7b08a0 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -254,6 +254,10 @@ class CuraContainerStack(ContainerStack): def definition(self) -> DefinitionContainer: return self._containers[_ContainerIndexes.Definition] + @override(ContainerStack) + def getBottom(self) -> "DefinitionContainer": + return self.definition + ## Check whether the specified setting has a 'user' value. # # A user value here is defined as the setting having a value in either diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 57cc296bdf..98526f00a5 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -33,6 +33,7 @@ from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: from UM.Settings.DefinitionContainer import DefinitionContainer + from cura.Settings.GlobalStack import GlobalStack import os @@ -42,7 +43,7 @@ class MachineManager(QObject): super().__init__(parent) self._active_container_stack = None # type: ContainerStack - self._global_container_stack = None # type: ContainerStack + self._global_container_stack = None # type: GlobalStack self._error_check_timer = QTimer() self._error_check_timer.setInterval(250) From 1bac7c2b2a91166d42cb56e8c937d6a116d3b46b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 16:32:55 +0200 Subject: [PATCH 117/125] Don't register registry at ContainerStack class any more The fixture does this for us automatically now. It's not entirely neat since this is not cleaned up afterwards, but it does make sense to put it there in the fixture, logically. Contributes to issue CURA-3427. --- tests/Settings/TestCuraContainerRegistry.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index 268ad7fb90..ad79f74dd4 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -119,7 +119,6 @@ def test_addContainerBadSettingVersion(container_registry, definition_container) ]) def test_loadTypes(filename, output_class, container_registry): #Mock some dependencies. - UM.Settings.ContainerStack.setContainerRegistry(container_registry) Resources.getAllResourcesOfType = unittest.mock.MagicMock(return_value = [os.path.join(os.path.dirname(os.path.abspath(__file__)), "stacks", filename)]) #Return just this tested file. def findContainers(container_type = 0, id = None): From fb6d86dc88e9f2b472bf4933d800a7f8b6a0e225 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 16:39:24 +0200 Subject: [PATCH 118/125] Also override getTop(), as curaContainerStack enforces it being a instanceContainer This helps with the type hinting. --- cura/Settings/CuraContainerStack.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index 4c5b7b08a0..d14f2d04c9 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -258,6 +258,10 @@ class CuraContainerStack(ContainerStack): def getBottom(self) -> "DefinitionContainer": return self.definition + @override(ContainerStack) + def getTop(self) -> "InstanceContainer": + return self.userChanges + ## Check whether the specified setting has a 'user' value. # # A user value here is defined as the setting having a value in either From bfc65cb4a96403403a908f4ac5ee1fd911b5ce47 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 16:40:02 +0200 Subject: [PATCH 119/125] Added typing to active stack --- cura/Settings/MachineManager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 98526f00a5..e5fcf735db 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -34,6 +34,7 @@ from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: from UM.Settings.DefinitionContainer import DefinitionContainer from cura.Settings.GlobalStack import GlobalStack + from cura.Settings.CuraContainerStack import CuraContainerStack import os @@ -42,7 +43,7 @@ class MachineManager(QObject): def __init__(self, parent = None): super().__init__(parent) - self._active_container_stack = None # type: ContainerStack + self._active_container_stack = None # type: CuraContainerStack self._global_container_stack = None # type: GlobalStack self._error_check_timer = QTimer() From aee3b4322779dad571e41805b326a766bc57f704 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 12 May 2017 16:43:50 +0200 Subject: [PATCH 120/125] Row element was not used --- resources/qml/WorkspaceSummaryDialog.qml | 63 +++++++++++------------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/resources/qml/WorkspaceSummaryDialog.qml b/resources/qml/WorkspaceSummaryDialog.qml index cbde055138..3a66d04625 100644 --- a/resources/qml/WorkspaceSummaryDialog.qml +++ b/resources/qml/WorkspaceSummaryDialog.qml @@ -230,45 +230,40 @@ UM.Dialog } } - Row + + CheckBox { - id: buttonRow + id: dontShowAgainCheckbox anchors.bottom: parent.bottom anchors.left: parent.left + + text: catalog.i18nc("@action:label", "Don't show project summary on save again") + checked: dontShowAgain + } + + Button + { + id: cancel_button + anchors.bottom: parent.bottom + anchors.right: ok_button.left + anchors.rightMargin: 2 + + text: catalog.i18nc("@action:button","Cancel"); + enabled: true + onClicked: close() + } + + Button + { + id: ok_button + anchors.bottom: parent.bottom anchors.right: parent.right - height: childrenRect.height - CheckBox - { - id: dontShowAgainCheckbox - anchors.left: parent.left - - text: catalog.i18nc("@action:label", "Don't show project summary on save again") - checked: dontShowAgain - } - - Button - { - id: ok_button - anchors.right: parent.right - - text: catalog.i18nc("@action:button","Save"); - enabled: true - onClicked: { - close() - yes() - } - } - - Button - { - id: cancel_button - anchors.right: ok_button.left - anchors.rightMargin: 2 - - text: catalog.i18nc("@action:button","Cancel"); - enabled: true - onClicked: close() + text: catalog.i18nc("@action:button","Save"); + enabled: true + onClicked: { + close() + yes() } } } From ba4d62e8cab1877fccd669725bb243e45b13b20a Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 16:45:58 +0200 Subject: [PATCH 121/125] Added missing typehinting --- cura/Settings/MachineManager.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index e5fcf735db..0eafd33e94 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -23,7 +23,6 @@ from cura.QualityManager import QualityManager from cura.PrinterOutputDevice import PrinterOutputDevice from cura.Settings.ExtruderManager import ExtruderManager -from .GlobalStack import GlobalStack from .CuraStackBuilder import CuraStackBuilder from UM.i18n import i18nCatalog @@ -33,8 +32,8 @@ from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: from UM.Settings.DefinitionContainer import DefinitionContainer - from cura.Settings.GlobalStack import GlobalStack from cura.Settings.CuraContainerStack import CuraContainerStack + from cura.Settings.GlobalStack import GlobalStack import os @@ -140,7 +139,7 @@ class MachineManager(QObject): return self._printer_output_devices @pyqtProperty(int, constant=True) - def totalNumberOfSettings(self): + def totalNumberOfSettings(self) -> int: return len(ContainerRegistry.getInstance().findDefinitionContainers(id="fdmprinter")[0].getAllKeys()) def _onHotendIdChanged(self, index: Union[str, int], hotend_id: str) -> None: @@ -164,7 +163,7 @@ class MachineManager(QObject): else: Logger.log("w", "No variant found for printer definition %s with id %s" % (self._global_container_stack.getBottom().getId(), hotend_id)) - def _onMaterialIdChanged(self, index, material_id): + def _onMaterialIdChanged(self, index: Union[str, int], material_id: str): if not self._global_container_stack: return @@ -470,7 +469,7 @@ class MachineManager(QObject): return "" @pyqtProperty("QObject", notify = globalContainerChanged) - def activeMachine(self) -> GlobalStack: + def activeMachine(self) -> "GlobalStack": return self._global_container_stack @pyqtProperty(str, notify = activeStackChanged) @@ -681,7 +680,7 @@ class MachineManager(QObject): ## Check if a container is read_only @pyqtSlot(str, result = bool) - def isReadOnly(self, container_id) -> bool: + def isReadOnly(self, container_id: str) -> bool: containers = ContainerRegistry.getInstance().findInstanceContainers(id = container_id) if not containers or not self._active_container_stack: return True @@ -943,7 +942,7 @@ class MachineManager(QObject): return result - def _replaceQualityOrQualityChangesInStack(self, stack, container, postpone_emit = False): + def _replaceQualityOrQualityChangesInStack(self, stack: "CuraContainerStack", container: "InstanceContainer", postpone_emit = False): # Disconnect the signal handling from the old container. container_type = container.getMetaDataEntry("type") if container_type == "quality": From 598751817a6ccce3d17f939466acbaa87f13260f Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 12 May 2017 16:51:33 +0200 Subject: [PATCH 122/125] Fix resolve strategy "new" for user instance container CURA-3756 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 3b5d9dac77..f6e407efb2 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -426,8 +426,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if not user_containers: containers_to_add.append(instance_container) else: - instance_container = user_containers[0] if self._resolve_strategies["machine"] == "override" or self._resolve_strategies["machine"] is None: + instance_container = user_containers[0] instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8")) instance_container.setDirty(True) elif self._resolve_strategies["machine"] == "new": From 81d3ce46f15efe444e00281e5c2b7e08609a6329 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 12 May 2017 16:56:12 +0200 Subject: [PATCH 123/125] Added bunch of typing to extruder manager --- cura/Settings/ExtruderManager.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 359cd74f09..5a2e0cb818 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -16,7 +16,11 @@ from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.SettingFunction import SettingFunction from UM.Settings.ContainerStack import ContainerStack from UM.Settings.DefinitionContainer import DefinitionContainer -from typing import Optional, List +from typing import Optional, List, TYPE_CHECKING, Union + +if TYPE_CHECKING: + from cura.Settings.ExtruderStack import ExtruderStack + ## Manages all existing extruder stacks. # @@ -166,7 +170,7 @@ class ExtruderManager(QObject): self._selected_object_extruders = [] self.selectedObjectExtrudersChanged.emit() - def getActiveExtruderStack(self) -> ContainerStack: + def getActiveExtruderStack(self) -> Optional["ExtruderStack"]: global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: @@ -176,7 +180,7 @@ class ExtruderManager(QObject): return None ## Get an extruder stack by index - def getExtruderStack(self, index): + def getExtruderStack(self, index) -> Optional["ExtruderStack"]: global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: if global_container_stack.getId() in self._extruder_trains: @@ -185,7 +189,7 @@ class ExtruderManager(QObject): return None ## Get all extruder stacks - def getExtruderStacks(self): + def getExtruderStacks(self) -> List["ExtruderStack"]: result = [] for i in range(self.extruderCount): result.append(self.getExtruderStack(i)) @@ -397,7 +401,7 @@ class ExtruderManager(QObject): # list. # # \return A list of extruder stacks. - def getUsedExtruderStacks(self): + def getUsedExtruderStacks(self) -> List["ContainerStack"]: global_stack = Application.getInstance().getGlobalContainerStack() container_registry = ContainerRegistry.getInstance() @@ -451,7 +455,7 @@ class ExtruderManager(QObject): ## Removes the container stack and user profile for the extruders for a specific machine. # # \param machine_id The machine to remove the extruders for. - def removeMachineExtruders(self, machine_id): + def removeMachineExtruders(self, machine_id: str): for extruder in self.getMachineExtruders(machine_id): containers = ContainerRegistry.getInstance().findInstanceContainers(type = "user", extruder = extruder.getId()) for container in containers: @@ -461,7 +465,7 @@ class ExtruderManager(QObject): ## Returns extruders for a specific machine. # # \param machine_id The machine to get the extruders of. - def getMachineExtruders(self, machine_id): + def getMachineExtruders(self, machine_id: str): if machine_id not in self._extruder_trains: return [] return [self._extruder_trains[machine_id][name] for name in self._extruder_trains[machine_id]] @@ -470,7 +474,7 @@ class ExtruderManager(QObject): # # The first element is the global container stack, followed by any extruder stacks. # \return \type{List[ContainerStack]} - def getActiveGlobalAndExtruderStacks(self): + def getActiveGlobalAndExtruderStacks(self) -> Optional[List[Union["ExtruderStack", "GlobalStack"]]]: global_stack = Application.getInstance().getGlobalContainerStack() if not global_stack: return None @@ -482,7 +486,7 @@ class ExtruderManager(QObject): ## Returns the list of active extruder stacks. # # \return \type{List[ContainerStack]} a list of - def getActiveExtruderStacks(self): + def getActiveExtruderStacks(self) -> List["ExtruderStack"]: global_stack = Application.getInstance().getGlobalContainerStack() result = [] From 365f7cad4c323b92551fe478ab7ff57a63278dd9 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 16:57:36 +0200 Subject: [PATCH 124/125] Read setting_version from version attribute on root As per the new specification for v1.3 of the spec. Contributes to issue CURA-3427. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 95e38457c9..d7a9f47836 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -27,10 +27,13 @@ class XmlMaterialProfile(InstanceContainer): # Since the two may increment independently we need a way to say which # versions of the XML specification are compatible with our setting data # version numbers. - def xmlVersionToSettingVersion(self, xml_version): - if xml_version == 1: #Only one known version and it happens to be the same as our current setting_version. + # + # \param xml_version: The version number found in an XML file. + # \return The corresponding setting_version. + def xmlVersionToSettingVersion(self, xml_version: str) -> int: + if xml_version == "1.3": return 1 - return 0 + return 0 #Older than 1.3. def getInheritedFiles(self): return self._inherited_files @@ -414,13 +417,13 @@ class XmlMaterialProfile(InstanceContainer): meta_data["type"] = "material" meta_data["base_file"] = self.id meta_data["status"] = "unknown" # TODO: Add material verfication - meta_data["setting_version"] = self.getVersionFromSerialized(serialized) inherits = data.find("./um:inherits", self.__namespaces) if inherits is not None: inherited = self._resolveInheritance(inherits.text) data = self._mergeXML(inherited, data) + meta_data["setting_version"] = self.xmlVersionToSettingVersion(data.attrib["version"]) metadata = data.iterfind("./um:metadata/*", self.__namespaces) for entry in metadata: tag_name = _tag_without_namespace(entry) From 2365267f35f2d120eaf9853f91b419d24abb67d9 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 12 May 2017 17:08:47 +0200 Subject: [PATCH 125/125] Be robust against older specification version numbers 1.2 and lower didn't specify a version number. Assume that it was 1.2. We feed this through our translation function for form, mostly, because we know that the setting_version should be 0 then. Contributes to issue CURA-3427. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index d7a9f47836..197a7b778f 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -423,7 +423,10 @@ class XmlMaterialProfile(InstanceContainer): inherited = self._resolveInheritance(inherits.text) data = self._mergeXML(inherited, data) - meta_data["setting_version"] = self.xmlVersionToSettingVersion(data.attrib["version"]) + if "version" in data.attrib: + meta_data["setting_version"] = self.xmlVersionToSettingVersion(data.attrib["version"]) + else: + meta_data["setting_version"] = self.xmlVersionToSettingVersion("1.2") #1.2 and lower didn't have that version number there yet. metadata = data.iterfind("./um:metadata/*", self.__namespaces) for entry in metadata: tag_name = _tag_without_namespace(entry)