From 975e7f04b440ade23d31cd65eacf7ba065803233 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 8 Aug 2017 11:27:45 +0200 Subject: [PATCH 01/54] Remove unused incorrect code The property is called activeMaterialIds, but it returns the stack ids. The code is superceeded by allActiveMaterialIds. --- cura/Settings/MachineManager.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 7fb9c3b0a2..4749906ce4 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -504,16 +504,6 @@ class MachineManager(QObject): return result - @pyqtProperty("QVariantList", notify = activeVariantChanged) - def activeMaterialIds(self): - result = [] - if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None: - for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): - if stack.variant and stack.variant != self._empty_variant_container: - result.append(stack.variant.getId()) - - return result - @pyqtProperty("QVariantList", notify = activeMaterialChanged) def activeMaterialNames(self): result = [] From 8d72ba5fe74acbdceba76b98f42a58dbcc447f80 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 8 Aug 2017 11:32:34 +0200 Subject: [PATCH 02/54] Fix setting material of non-active extruder through menu --- resources/qml/Menus/MaterialMenu.qml | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index 9127276f3d..e167e65855 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.qml @@ -39,17 +39,20 @@ Menu visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].materialNames.length > extruderIndex onTriggered: { - var material_id = Cura.MachineManager.printerOutputDevices[0].materialIds[extruderIndex]; + var activeExtruderIndex = ExtruderManager.activeExtruderIndex; + ExtruderManager.setActiveExtruderIndex(extruderIndex); + var materialId = Cura.MachineManager.printerOutputDevices[0].materialIds[extruderIndex]; var items = materialsModel.items; // materialsModel.find cannot be used because we need to look inside the metadata property of items for(var i in items) { - if (items[i]["metadata"]["GUID"] == material_id) + if (items[i]["metadata"]["GUID"] == materialId) { Cura.MachineManager.setActiveMaterial(items[i].id); break; } } + ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } @@ -64,12 +67,15 @@ Menu MenuItem { text: model.name - checkable: true; - checked: model.id == Cura.MachineManager.activeMaterialId; - exclusiveGroup: group; + checkable: true + checked: model.id == Cura.MachineManager.allActiveMaterialIds[ExtruderManager.extruderIds[extruderIndex]] + exclusiveGroup: group onTriggered: { + var activeExtruderIndex = ExtruderManager.activeExtruderIndex; + ExtruderManager.setActiveExtruderIndex(extruderIndex); Cura.MachineManager.setActiveMaterial(model.id); + ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } onObjectAdded: menu.insertItem(index, object) @@ -102,12 +108,15 @@ Menu MenuItem { text: model.name - checkable: true; - checked: model.id == Cura.MachineManager.activeMaterialId; - exclusiveGroup: group; + checkable: true + checked: model.id == Cura.MachineManager.allActiveMaterialIds[ExtruderManager.extruderIds[extruderIndex]] + exclusiveGroup: group onTriggered: { + var activeExtruderIndex = ExtruderManager.activeExtruderIndex; + ExtruderManager.setActiveExtruderIndex(extruderIndex); Cura.MachineManager.setActiveMaterial(model.id); + ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } onObjectAdded: brandMaterialsMenu.insertItem(index, object) From 06305594720083daf7921fa2b4a2a0547f6c17c7 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 8 Aug 2017 11:41:15 +0200 Subject: [PATCH 03/54] Fix setting variant of non-active extruder through menu --- resources/qml/Menus/NozzleMenu.qml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/resources/qml/Menus/NozzleMenu.qml b/resources/qml/Menus/NozzleMenu.qml index a9fffc84ab..ee7ddacf98 100644 --- a/resources/qml/Menus/NozzleMenu.qml +++ b/resources/qml/Menus/NozzleMenu.qml @@ -30,12 +30,15 @@ Menu visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex onTriggered: { + var activeExtruderIndex = ExtruderManager.activeExtruderIndex; + ExtruderManager.setActiveExtruderIndex(extruderIndex); var hotendId = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex]; var itemIndex = nozzleInstantiator.model.find("name", hotendId); if(itemIndex > -1) { - Cura.MachineManager.setActiveVariant(nozzleInstantiator.model.getItem(itemIndex).id) + Cura.MachineManager.setActiveVariant(nozzleInstantiator.model.getItem(itemIndex).id); } + ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } @@ -56,11 +59,17 @@ Menu } } MenuItem { - text: model.name; - checkable: true; - checked: model.id == Cura.MachineManager.activeVariantId; + text: model.name + checkable: true + checked: model.id == Cura.MachineManager.allActiveVariantIds[ExtruderManager.extruderIds[extruderIndex]] exclusiveGroup: group - onTriggered: Cura.MachineManager.setActiveVariant(model.id) + onTriggered: + { + var activeExtruderIndex = ExtruderManager.activeExtruderIndex; + ExtruderManager.setActiveExtruderIndex(extruderIndex); + Cura.MachineManager.setActiveVariant(model.id); + ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); + } } onObjectAdded: menu.insertItem(index, object) onObjectRemoved: menu.removeItem(object) From d1fe82fea7d13ac1b604e3d47226df51833c0f10 Mon Sep 17 00:00:00 2001 From: Aldo Hoeben Date: Wed, 9 Aug 2017 13:30:56 +0200 Subject: [PATCH 04/54] Update README section about making definitions Removes the link to definition generator. The definition generator produces definitions that don't work with Cura 2.3 and newer. Removes some incorrect instructions Adds some instructions for multi-extrusion printers. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b843be9a66..031dcf099f 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Third party plugins Making profiles for other printers ---------------------------------- -There are two ways of doing it. You can either use the generator [here](http://quillford.github.io/CuraProfileMaker/) or you can use [this](https://github.com/Ultimaker/Cura/blob/master/resources/definitions/ultimaker_original.def.json) as a template. +If your make of printer is not in the list of supported printers, and using the "Custom FDM Printer" does not offer enough flexibility, you can use [this](https://github.com/Ultimaker/Cura/blob/master/resources/definitions/ultimaker_original.def.json) as a template. * Change the machine ID to something unique * Change the machine_name to your printer's name @@ -63,12 +63,12 @@ There are two ways of doing it. You can either use the generator [here](http://q * Set your machine's dimensions with machine_width, machine_depth, and machine_height * If your printer's origin is in the center of the bed, set machine_center_is_zero to true. * Set your print head dimensions with the machine_head_shape parameters -* Set the nozzle offset with machine_nozzle_offset_x and machine_nozzle_offset_y * Set the start and end gcode in machine_start_gcode and machine_end_gcode -* If your printer has a heated bed, set visible to true under material_bed_temperature Once you are done, put the profile you have made into resources/definitions, or in definitions in your cura profile folder. +If you want to make a definition for a multi-extrusion printer, have a look at [this](https://github.com/Ultimaker/Cura/blob/master/resources/definitions/ultimaker_original_dual.def.json) as a template, along with the two extruder definitions it references [here](https://github.com/Ultimaker/Cura/blob/master/resources/extruders/ultimaker_original_dual_1st.def.json) and [here](https://github.com/Ultimaker/Cura/blob/master/resources/extruders/ultimaker_original_dual_2nd.def.json) + Translating Cura ---------------- If you'd like to contribute a translation of Cura, please first look for [any existing translation](https://github.com/Ultimaker/Cura/tree/master/resources/i18n). If your language is already there in the source code but not in Cura's interface, it may be partially translated. From da27b0463e1b56cd0fbc10c9d50213a99b3ff60e Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 10 Aug 2017 20:14:18 +0200 Subject: [PATCH 05/54] Ignore generated Pirate language This one's auto-generated by 'make extract-messages'. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3ee62405a2..6a33e104a9 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ __pycache__ docs/html *.log resources/i18n/en +resources/i18n/7s resources/i18n/x-test resources/firmware resources/materials From 5f057f46eaa551b5e8f5f89e994fadc231dcf625 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 10 Aug 2017 20:26:35 +0200 Subject: [PATCH 06/54] Add Pirate language only on Talk Like a Pirate Day Let's see who finds this. --- resources/qml/Preferences/GeneralPage.qml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 7c4ad16e10..b35bb6f9ac 100755 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -161,6 +161,12 @@ UM.PreferencesPage append({ text: "Português do Brasil", code: "ptbr" }) append({ text: "Русский", code: "ru" }) append({ text: "Türkçe", code: "tr" }) + + var date_object = new Date(); + if (date_object.getUTCMonth() == 8 && date_object.getUTCDate() == 19) //Only add Pirate on the 19th of September. + { + append({ text: "Pirate", code: "7s" }) + } } } From 5f2d1de9b126661721b8ae4769f2ec71dbbba05f Mon Sep 17 00:00:00 2001 From: KEMIQ 3D Date: Fri, 11 Aug 2017 12:20:13 +0300 Subject: [PATCH 07/54] Update kemiq_q2_beta_pla_draft.inst.cfg Removed extra empty lines at the end of the file --- .../quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg index 1959c251c2..400c45de94 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg @@ -14,13 +14,7 @@ setting_version = 2 layer_height = 0.35 adhesion_type = skirt -speed_print = 70 -speed_infill = 60 -speed_layer_0 = 20 -speed_wall_0 = 30 -speed_wall_x = 50 -speed_topbottom = 30 -speed_travel = 120 +speed_print = 60 material_print_temperature = 214 material_bed_temperature = 60 From d79671674678cd7708b5e5fcf877557214260f63 Mon Sep 17 00:00:00 2001 From: KEMIQ 3D Date: Fri, 11 Aug 2017 12:24:42 +0300 Subject: [PATCH 08/54] Update kemiq_q2_beta_pla_low.inst.cfg Removed extra empty lines at the end of the file --- resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg index 97dcabd8e5..5065794ac8 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg @@ -14,13 +14,7 @@ setting_version = 2 layer_height = 0.2 adhesion_type = skirt -speed_print = 70 -speed_infill = 60 -speed_layer_0 = 20 -speed_wall_0 = 30 -speed_wall_x = 50 -speed_topbottom = 30 -speed_travel = 120 +speed_print = 60 material_print_temperature = 214 material_bed_temperature = 60 From 0b6024dce5281d56f251f5111371801848e16ad9 Mon Sep 17 00:00:00 2001 From: KEMIQ 3D Date: Fri, 11 Aug 2017 12:28:05 +0300 Subject: [PATCH 09/54] Update kemiq_q2_beta_pla_normal.inst.cfg Removed extra lines at the end of the file --- .../quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg index 5ad4183058..a62b7f1254 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg @@ -14,13 +14,7 @@ setting_version = 2 layer_height = 0.15 adhesion_type = skirt -speed_print = 60 -speed_infill = 50 -speed_layer_0 = 15 -speed_wall_0 = 20 -speed_wall_x = 40 -speed_topbottom = 20 -speed_travel = 120 +speed_print = 50 material_print_temperature = 214 material_bed_temperature = 60 From 68c0b28f98d367dd23a6483c6fd4ff40d8adb154 Mon Sep 17 00:00:00 2001 From: KEMIQ 3D Date: Fri, 11 Aug 2017 12:56:51 +0300 Subject: [PATCH 10/54] Update kemiq_q2_beta_pla_fine.inst.cfg Removed extra empty lines at the end of the file --- .../quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg index 1f2d52affc..b23d86c931 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg @@ -14,13 +14,7 @@ setting_version = 2 layer_height = 0.1 adhesion_type = skirt -speed_print = 50 -speed_infill = 60 -speed_layer_0 = 20 -speed_wall_0 = 25 -speed_wall_x = 45 -speed_topbottom = 30 -speed_travel = 120 +speed_print = 40 material_print_temperature = 214 material_bed_temperature = 60 From 7a9d3ba41eccc3f8b982d7cc05b214d18f9c4339 Mon Sep 17 00:00:00 2001 From: KEMIQ 3D Date: Fri, 11 Aug 2017 12:58:44 +0300 Subject: [PATCH 11/54] Update kemiq_q2_beta_pla_extra_fine Removed extra empty lines at the end of the file --- .../kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg index ea5fc11349..d6fe06a5a3 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg @@ -14,13 +14,7 @@ setting_version = 2 layer_height = 0.06 adhesion_type = skirt -speed_print = 40 -speed_infill = 50 -speed_layer_0 = 15 -speed_wall_0 = 20 -speed_wall_x = 40 -speed_topbottom = 20 -speed_travel = 120 +speed_print = 30 material_print_temperature = 214 material_bed_temperature = 60 From 6b88b12605c590e5c532c747b9a5693016a882df Mon Sep 17 00:00:00 2001 From: KEMIQ 3D Date: Fri, 11 Aug 2017 13:02:15 +0300 Subject: [PATCH 12/54] Update kemiq_q2_gama_pla_draft.inst.cfg Removed extra empty files at the end of the file --- .../quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg index 537ee829b8..f19dfd927f 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg @@ -14,13 +14,7 @@ setting_version = 2 layer_height = 0.35 adhesion_type = skirt -speed_print = 70 -speed_infill = 60 -speed_layer_0 = 20 -speed_wall_0 = 30 -speed_wall_x = 50 -speed_topbottom = 30 -speed_travel = 120 +speed_print = 60 material_print_temperature = 214 material_diameter = 1.75 From d71afa6ef64ea53b33fbd0649022d4efd9620abb Mon Sep 17 00:00:00 2001 From: KEMIQ 3D Date: Fri, 11 Aug 2017 13:08:32 +0300 Subject: [PATCH 13/54] Update kemiq_q2_gama_pla_draft.inst.cfg Changed build adhesion type value --- resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg index f19dfd927f..00a7fa6173 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg @@ -12,7 +12,7 @@ setting_version = 2 [values] layer_height = 0.35 -adhesion_type = skirt +adhesion_type = raft speed_print = 60 From f3af7655d16928370b180f6aff8b2fb43cfcf37f Mon Sep 17 00:00:00 2001 From: KEMIQ 3D Date: Fri, 11 Aug 2017 13:10:47 +0300 Subject: [PATCH 14/54] Update kemiq_q2_gama_pla_low.inst.cfg Removed extra empty files at the end of the file and changed adhesion_type --- .../quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg index 6b9fb3acce..aa78035704 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg @@ -12,15 +12,9 @@ setting_version = 2 [values] layer_height = 0.2 -adhesion_type = skirt +adhesion_type = raft -speed_print = 70 -speed_infill = 60 -speed_layer_0 = 20 -speed_wall_0 = 30 -speed_wall_x = 50 -speed_topbottom = 30 -speed_travel = 120 +speed_print = 60 material_print_temperature = 214 material_diameter = 1.75 From 6e3e3105287ae907e273df4649cf190786c1440d Mon Sep 17 00:00:00 2001 From: probonopd Date: Fri, 11 Aug 2017 23:29:08 +0200 Subject: [PATCH 15/54] Remove WirelessPrinting Plugin WirelessPrinting now uses a subset of the OctoPrint protocol because this is supported by Cura by default now --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index b843be9a66..d7f6573e45 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,6 @@ Third party plugins * [X3G Writer](https://github.com/Ghostkeeper/X3GWriter): Adds support for exporting X3G files. * [Auto orientation](https://github.com/nallath/CuraOrientationPlugin): Calculate the optimal orientation for a model. * [OctoPrint Plugin](https://github.com/fieldofview/OctoPrintPlugin): Send printjobs directly to OctoPrint and monitor their progress in Cura. -* [WirelessPrinting Plugin](https://github.com/probonopd/WirelessPrinting): Print wirelessly from Cura to your 3D printer connected to an ESP8266 module. * [Electric Print Cost Calculator Plugin](https://github.com/zoff99/ElectricPrintCostCalculator): Calculate the electric costs of a print. Making profiles for other printers @@ -89,4 +88,4 @@ To submit your translation, ideally you would make two pull requests where all ` After the translation is submitted, the Cura maintainers will check for its completeness and check whether it is consistent. We will take special care to look for common mistakes, such as translating mark-up `` code and such. We are often not fluent in every language, so we expect the translator and the international users to make corrections where necessary. Of course, there will always be some mistakes in every translation. -When the next Cura release comes around, some of the texts will have changed and some new texts will have been added. Around the time when the beta is released we will invoke a string freeze, meaning that no developer is allowed to make changes to the texts. Then we will update the translation template `.pot` files and ask all our translators to update their translations. If you are unable to update the translation in time for the actual release, we will remove the language from the drop-down menu in the Preferences window. The translation stays in Cura however, so that someone might pick it up again later and update it with the newest texts. Also, users who had previously selected the language can still continue Cura in their language but English text will appear among the original text. \ No newline at end of file +When the next Cura release comes around, some of the texts will have changed and some new texts will have been added. Around the time when the beta is released we will invoke a string freeze, meaning that no developer is allowed to make changes to the texts. Then we will update the translation template `.pot` files and ask all our translators to update their translations. If you are unable to update the translation in time for the actual release, we will remove the language from the drop-down menu in the Preferences window. The translation stays in Cura however, so that someone might pick it up again later and update it with the newest texts. Also, users who had previously selected the language can still continue Cura in their language but English text will appear among the original text. From 484740f2ff3b8dab8e4bea00892c4d2229dda25b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 16 Aug 2017 13:26:17 +0200 Subject: [PATCH 16/54] Remove grid pattern It'll be replaced by grid lines instead of grid surfaces. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 3 +-- resources/shaders/grid.shader | 21 +++++---------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index e37268e244..e613daa947 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -169,8 +169,7 @@ class BuildVolume(SceneNode): self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader")) self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader")) theme = Application.getInstance().getTheme() - self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate").getRgb())) - self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_alt").getRgb())) + self._grid_shader.setUniformValue("u_buildplateColor", Color(*theme.getColor("buildplate").getRgb())) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) renderer.queueNode(self, mesh = self._origin_mesh) diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index 74eed544fd..ece93cb51e 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -14,17 +14,12 @@ vertex = } fragment = - uniform lowp vec4 u_gridColor0; - uniform lowp vec4 u_gridColor1; - + uniform lowp vec4 u_buildplateColor; varying lowp vec2 v_uvs; void main() { - if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) - gl_FragColor = u_gridColor0; - else - gl_FragColor = u_gridColor1; + gl_FragColor = u_buildplateColor; } vertex41core = @@ -44,23 +39,17 @@ vertex41core = fragment41core = #version 410 - uniform lowp vec4 u_gridColor0; - uniform lowp vec4 u_gridColor1; - + uniform lowp vec4 u_buildplateColor; in lowp vec2 v_uvs; out vec4 frag_color; void main() { - if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) - frag_color = u_gridColor0; - else - frag_color = u_gridColor1; + gl_FragColor = u_buildplateColor; } [defaults] -u_gridColor0 = [0.96, 0.96, 0.96, 1.0] -u_gridColor1 = [0.8, 0.8, 0.8, 1.0] +u_buildplateColor = [0.96, 0.96, 0.96, 1.0] [bindings] u_modelViewProjectionMatrix = model_view_projection_matrix From 567363fa7c432a35313bf06f7bca5685e58b89f0 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Wed, 16 Aug 2017 13:51:00 +0200 Subject: [PATCH 17/54] feat: skin preshrink (CURA-4103) --- resources/definitions/fdmprinter.def.json | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index eb7f2d8cb0..58ba77aca9 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1510,6 +1510,44 @@ "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, + "skin_preshrink": + { + "label": "Skin Pre-Shrink Distance", + "description": "The distance the skins are shrunk before considering them for skin expansion. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model.", + "unit": "mm", + "type": "float", + "default_value": 0, + "minimum_value": "0", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true, + "children": + { + "top_skin_preshrink": + { + "label": "Top Skin Pre-Shrink Distance", + "description": "The distance the top skins are shrunk before considering them for skin expansion. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model.", + "unit": "mm", + "type": "float", + "default_value": 0, + "value": "skin_preshrink", + "minimum_value": "0", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, + "bottom_skin_preshrink": + { + "label": "Bottom Skin Pre-Shrink Distance", + "description": "The distance the bottom skins are shrunk before considering them for skin expansion. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model.", + "unit": "mm", + "type": "float", + "default_value": 0, + "value": "skin_preshrink", + "minimum_value": "0", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + } + } + }, "expand_skins_into_infill": { "label": "Expand Skins Into Infill", From 5e63c0df48d44e4b4bd23f7da29443ea47d77cf3 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 17 Aug 2017 09:56:11 +0200 Subject: [PATCH 18/54] Add major grid cells This draws a grid of 1x1cm. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 21 +++++++++++++++++++-- resources/themes/cura/theme.json | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index e613daa947..2d1526aee5 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -56,6 +56,7 @@ class BuildVolume(SceneNode): self._origin_line_length = 20 self._origin_line_width = 0.5 + self._plate_mesh = None self._grid_mesh = None self._grid_shader = None @@ -173,7 +174,8 @@ class BuildVolume(SceneNode): renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) renderer.queueNode(self, mesh = self._origin_mesh) - renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader, backface_cull = True) + renderer.queueNode(self, mesh = self._plate_mesh, shader = self._grid_shader, backface_cull = True) + renderer.queueNode(self, mesh = self._grid_mesh, mode = RenderBatch.RenderMode.Lines) if self._disallowed_area_mesh: renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -9) @@ -246,6 +248,7 @@ class BuildVolume(SceneNode): self._z_axis_color = Color(*theme.getColor("z_axis").getRgb()) self._disallowed_area_color = Color(*theme.getColor("disallowed_area").getRgb()) self._error_area_color = Color(*theme.getColor("error_area").getRgb()) + self._grid_color = Color(*theme.getColor("buildplate_grid").getRgb()) min_w = -self._width / 2 max_w = self._width / 2 @@ -276,7 +279,7 @@ class BuildVolume(SceneNode): self.setMeshData(mb.build()) - # Build plate grid mesh + # Build plate surface. mb = MeshBuilder() mb.addQuad( Vector(min_w, min_h - z_fight_distance, min_d), @@ -288,6 +291,20 @@ class BuildVolume(SceneNode): for n in range(0, 6): v = mb.getVertex(n) mb.setVertexUVCoordinates(n, v[0], v[2]) + self._plate_mesh = mb.build() + + #Build plate grid mesh. + major_grid_size = 10 #In millimetres. + mb = MeshBuilder() + for x in range(0, int(math.ceil(max_w)), major_grid_size): + mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_color) + for x in range(0, int(math.floor(min_w)), -major_grid_size): #Start from 0 in both cases, so you need to do this in two for loops. + mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_color) + for y in range(0, int(math.ceil(max_d)), major_grid_size): + mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_color) + for y in range(0, int(math.floor(min_d)), -major_grid_size): + mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_color) + self._grid_mesh = mb.build() else: diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index d0919a8051..5a6179bb83 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -221,6 +221,7 @@ "volume_outline": [12, 169, 227, 255], "buildplate": [244, 244, 244, 255], "buildplate_alt": [204, 204, 204, 255], + "buildplate_grid": [129, 131, 134, 255], "convex_hull": [35, 35, 35, 127], "disallowed_area": [0, 0, 0, 40], From 6da5dda44fc1f77abc1051c6564a2ec31435942a Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 17 Aug 2017 10:21:48 +0200 Subject: [PATCH 19/54] Initialise _grid_color in __init__ All fields should always be defined throughout the lifetime of every object, according to code style. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 2d1526aee5..1089a0a806 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -44,6 +44,7 @@ class BuildVolume(SceneNode): self._z_axis_color = None self._disallowed_area_color = None self._error_area_color = None + self._grid_color = None self._width = 0 self._height = 0 From 38e907b3ae7d0b64278f63f9ce84f6a2bf10e9b2 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 17 Aug 2017 10:32:47 +0200 Subject: [PATCH 20/54] Add minor grid lines Makes it feel very professional and technical. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 20 ++++++++++++++++++++ resources/themes/cura/theme.json | 1 + 2 files changed, 21 insertions(+) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 1089a0a806..f03ea91e36 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -45,6 +45,7 @@ class BuildVolume(SceneNode): self._disallowed_area_color = None self._error_area_color = None self._grid_color = None + self._grid_minor_color = None self._width = 0 self._height = 0 @@ -250,6 +251,7 @@ class BuildVolume(SceneNode): self._disallowed_area_color = Color(*theme.getColor("disallowed_area").getRgb()) self._error_area_color = Color(*theme.getColor("error_area").getRgb()) self._grid_color = Color(*theme.getColor("buildplate_grid").getRgb()) + self._grid_minor_color = Color(*theme.getColor("buildplate_grid_minor").getRgb()) min_w = -self._width / 2 max_w = self._width / 2 @@ -306,6 +308,24 @@ class BuildVolume(SceneNode): for y in range(0, int(math.floor(min_d)), -major_grid_size): mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_color) + minor_grid_size = 1 + for x in range(0, int(math.ceil(max_w)), minor_grid_size): + if x % major_grid_size == 0: #Don't overlap with the major grid. + pass + mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_minor_color) + for x in range(0, int(math.floor(min_w)), -minor_grid_size): + if x % major_grid_size == 0: + pass + mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_minor_color) + for y in range(0, int(math.ceil(max_d)), minor_grid_size): + if y % major_grid_size == 0: + pass + mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_minor_color) + for y in range(0, int(math.floor(min_d)), -minor_grid_size): + if y % major_grid_size == 0: + pass + mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_minor_color) + self._grid_mesh = mb.build() else: diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 5a6179bb83..7e5f6ae199 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -222,6 +222,7 @@ "buildplate": [244, 244, 244, 255], "buildplate_alt": [204, 204, 204, 255], "buildplate_grid": [129, 131, 134, 255], + "buildplate_grid_minor": [129, 131, 134, 31], "convex_hull": [35, 35, 35, 127], "disallowed_area": [0, 0, 0, 40], From bb3f8d085be5eb5a5ef889a4a2f70c509d2cda48 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 17 Aug 2017 10:35:00 +0200 Subject: [PATCH 21/54] Fix transparency of minor grid cells You need to turn it on manually, apparently. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index f03ea91e36..3c2819c40b 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -177,7 +177,7 @@ class BuildVolume(SceneNode): renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) renderer.queueNode(self, mesh = self._origin_mesh) renderer.queueNode(self, mesh = self._plate_mesh, shader = self._grid_shader, backface_cull = True) - renderer.queueNode(self, mesh = self._grid_mesh, mode = RenderBatch.RenderMode.Lines) + renderer.queueNode(self, mesh = self._grid_mesh, mode = RenderBatch.RenderMode.Lines, transparent = True) if self._disallowed_area_mesh: renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -9) From 585b6ad8ebcf8933571f2fe6d4d5abe864df826f Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 17 Aug 2017 15:25:27 +0200 Subject: [PATCH 22/54] Remove superfluous grid shader The grid shader is now exactly equal to the colour shader, so let's just use the colour shader. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 11 ++++--- resources/shaders/grid.shader | 59 ----------------------------------- 2 files changed, 6 insertions(+), 64 deletions(-) delete mode 100644 resources/shaders/grid.shader diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 3c2819c40b..2076c59935 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.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. from cura.Settings.ExtruderManager import ExtruderManager @@ -60,7 +60,7 @@ class BuildVolume(SceneNode): self._plate_mesh = None self._grid_mesh = None - self._grid_shader = None + self._plate_shader = None self._disallowed_areas = [] self._disallowed_area_mesh = None @@ -170,13 +170,13 @@ class BuildVolume(SceneNode): if not self._shader: self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader")) - self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader")) + self._plate_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader")) theme = Application.getInstance().getTheme() - self._grid_shader.setUniformValue("u_buildplateColor", Color(*theme.getColor("buildplate").getRgb())) + self._plate_shader.setUniformValue("u_color", Color(*theme.getColor("buildplate").getRgb())) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) renderer.queueNode(self, mesh = self._origin_mesh) - renderer.queueNode(self, mesh = self._plate_mesh, shader = self._grid_shader, backface_cull = True) + renderer.queueNode(self, mesh = self._plate_mesh, shader = self._plate_shader, backface_cull = True) renderer.queueNode(self, mesh = self._grid_mesh, mode = RenderBatch.RenderMode.Lines, transparent = True) if self._disallowed_area_mesh: renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -9) @@ -308,6 +308,7 @@ class BuildVolume(SceneNode): for y in range(0, int(math.floor(min_d)), -major_grid_size): mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_color) + #More fine grained grid. minor_grid_size = 1 for x in range(0, int(math.ceil(max_w)), minor_grid_size): if x % major_grid_size == 0: #Don't overlap with the major grid. diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader deleted file mode 100644 index ece93cb51e..0000000000 --- a/resources/shaders/grid.shader +++ /dev/null @@ -1,59 +0,0 @@ -[shaders] -vertex = - uniform highp mat4 u_modelViewProjectionMatrix; - - attribute highp vec4 a_vertex; - attribute lowp vec2 a_uvs; - - varying lowp vec2 v_uvs; - - void main() - { - gl_Position = u_modelViewProjectionMatrix * a_vertex; - v_uvs = a_uvs; - } - -fragment = - uniform lowp vec4 u_buildplateColor; - varying lowp vec2 v_uvs; - - void main() - { - gl_FragColor = u_buildplateColor; - } - -vertex41core = - #version 410 - uniform highp mat4 u_modelViewProjectionMatrix; - - in highp vec4 a_vertex; - in lowp vec2 a_uvs; - - out lowp vec2 v_uvs; - - void main() - { - gl_Position = u_modelViewProjectionMatrix * a_vertex; - v_uvs = a_uvs; - } - -fragment41core = - #version 410 - uniform lowp vec4 u_buildplateColor; - in lowp vec2 v_uvs; - out vec4 frag_color; - - void main() - { - gl_FragColor = u_buildplateColor; - } - -[defaults] -u_buildplateColor = [0.96, 0.96, 0.96, 1.0] - -[bindings] -u_modelViewProjectionMatrix = model_view_projection_matrix - -[attributes] -a_vertex = vertex -a_uvs = uv0 From 43c6801e582f457c3fb63dd2ed0365b6a4d673fb Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Sun, 20 Aug 2017 16:52:56 +0200 Subject: [PATCH 23/54] Find a material with the correct diameter when adding a printer --- cura/Settings/CuraContainerStack.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index cdda14ee18..eeb170c489 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -432,6 +432,7 @@ class CuraContainerStack(ContainerStack): # - If the machine definition has a metadata entry "has_machine_materials", the definition of the material should # be the same as the machine definition for this stack. Otherwise, the definition should be "fdmprinter". # - The container should have a metadata entry "type" with value "material". + # - The material should have an approximate diameter that matches the machine # - If the machine definition has a metadata entry "has_variants" and set to True, the "variant" metadata entry of # the material should be the same as the ID of the variant in the stack. Only applies if "has_machine_materials" is also True. # - If the stack currently has a material set, try to find a material that matches the current material by name. @@ -460,6 +461,9 @@ class CuraContainerStack(ContainerStack): if preferred_material: search_criteria["id"] = preferred_material + approximate_material_diameter = str(round(self.getProperty("material_diameter", "value"))) + search_criteria["approximate_diameter"] = approximate_material_diameter + materials = ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) if not materials: Logger.log("w", "The preferred material \"{material}\" could not be found for stack {stack}", material = preferred_material, stack = self.id) From e7c585469494e22671046fb57ffd52d8aa4262de Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 21 Aug 2017 09:24:31 +0200 Subject: [PATCH 24/54] Make grid size into global variables It doesn't need to be a preference, but it should be easy to modify in the code. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 2076c59935..1530346967 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -27,8 +27,9 @@ import math from typing import List -# Setting for clearance around the prime -PRIME_CLEARANCE = 6.5 +PRIME_CLEARANCE = 6.5 #Setting for clearance around the prime. +MAJOR_GRID_SIZE = 10 #Size of the grid cells. +MINOR_GRID_SIZE = 1 ## Build volume is a special kind of node that is responsible for rendering the printable area & disallowed areas. @@ -297,33 +298,31 @@ class BuildVolume(SceneNode): self._plate_mesh = mb.build() #Build plate grid mesh. - major_grid_size = 10 #In millimetres. mb = MeshBuilder() - for x in range(0, int(math.ceil(max_w)), major_grid_size): + for x in range(0, int(math.ceil(max_w)), MAJOR_GRID_SIZE): mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_color) - for x in range(0, int(math.floor(min_w)), -major_grid_size): #Start from 0 in both cases, so you need to do this in two for loops. + for x in range(0, int(math.floor(min_w)), -MAJOR_GRID_SIZE): #Start from 0 in both cases, so you need to do this in two for loops. mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_color) - for y in range(0, int(math.ceil(max_d)), major_grid_size): + for y in range(0, int(math.ceil(max_d)), MAJOR_GRID_SIZE): mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_color) - for y in range(0, int(math.floor(min_d)), -major_grid_size): + for y in range(0, int(math.floor(min_d)), -MAJOR_GRID_SIZE): mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_color) #More fine grained grid. - minor_grid_size = 1 - for x in range(0, int(math.ceil(max_w)), minor_grid_size): - if x % major_grid_size == 0: #Don't overlap with the major grid. + for x in range(0, int(math.ceil(max_w)), MINOR_GRID_SIZE): + if x % MAJOR_GRID_SIZE == 0: #Don't overlap with the major grid. pass mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_minor_color) - for x in range(0, int(math.floor(min_w)), -minor_grid_size): - if x % major_grid_size == 0: + for x in range(0, int(math.floor(min_w)), -MINOR_GRID_SIZE): + if x % MAJOR_GRID_SIZE == 0: pass mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_minor_color) - for y in range(0, int(math.ceil(max_d)), minor_grid_size): - if y % major_grid_size == 0: + for y in range(0, int(math.ceil(max_d)), MINOR_GRID_SIZE): + if y % MAJOR_GRID_SIZE == 0: pass mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_minor_color) - for y in range(0, int(math.floor(min_d)), -minor_grid_size): - if y % major_grid_size == 0: + for y in range(0, int(math.floor(min_d)), -MINOR_GRID_SIZE): + if y % MAJOR_GRID_SIZE == 0: pass mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_minor_color) From d8dd9c0d3af77cebf0c93433f59c95b33ecd50f4 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 21 Aug 2017 09:44:39 +0200 Subject: [PATCH 25/54] More efficient and elegant grid line creation Since the zero point is always in the centre, we can just re-use this loop to prevent code duplication and gain a minor speed increase. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 1530346967..6c18eb07ad 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -301,30 +301,23 @@ class BuildVolume(SceneNode): mb = MeshBuilder() for x in range(0, int(math.ceil(max_w)), MAJOR_GRID_SIZE): mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_color) - for x in range(0, int(math.floor(min_w)), -MAJOR_GRID_SIZE): #Start from 0 in both cases, so you need to do this in two for loops. - mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_color) + #Start from 0 in both cases, so you need to do this in two for loops. + mb.addLine(Vector(-x, min_h, min_d), Vector(-x, min_h, max_d), color = self._grid_color) for y in range(0, int(math.ceil(max_d)), MAJOR_GRID_SIZE): mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_color) - for y in range(0, int(math.floor(min_d)), -MAJOR_GRID_SIZE): - mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_color) + mb.addLine(Vector(min_w, min_h, -y), Vector(max_w, min_h, -y), color = self._grid_color) #More fine grained grid. for x in range(0, int(math.ceil(max_w)), MINOR_GRID_SIZE): if x % MAJOR_GRID_SIZE == 0: #Don't overlap with the major grid. pass mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_minor_color) - for x in range(0, int(math.floor(min_w)), -MINOR_GRID_SIZE): - if x % MAJOR_GRID_SIZE == 0: - pass - mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_minor_color) + mb.addLine(Vector(-x, min_h, min_d), Vector(-x, min_h, max_d), color = self._grid_minor_color) for y in range(0, int(math.ceil(max_d)), MINOR_GRID_SIZE): if y % MAJOR_GRID_SIZE == 0: pass mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_minor_color) - for y in range(0, int(math.floor(min_d)), -MINOR_GRID_SIZE): - if y % MAJOR_GRID_SIZE == 0: - pass - mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_minor_color) + mb.addLine(Vector(min_w, min_h, -y), Vector(max_w, min_h, -y), color = self._grid_minor_color) self._grid_mesh = mb.build() From 3b93a9d309e0eefb4501c164349f84f119f6b4c3 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 21 Aug 2017 10:21:25 +0200 Subject: [PATCH 26/54] Add grid lines for circular build plates Some trigonometry is involved to find the correct lengths for the lines. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 6c18eb07ad..8298d6de0c 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -334,7 +334,7 @@ class BuildVolume(SceneNode): mb.addArc(max_w, Vector.Unit_Y, center = (0, max_h, 0), color = self._volume_outline_color) self.setMeshData(mb.build().getTransformed(scale_matrix)) - # Build plate grid mesh + # Build plate surface. mb = MeshBuilder() mb.addVertex(0, min_h - z_fight_distance, 0) mb.addArc(max_w, Vector.Unit_Y, center = Vector(0, min_h - z_fight_distance, 0)) @@ -348,7 +348,26 @@ class BuildVolume(SceneNode): for n in range(0, mb.getVertexCount()): v = mb.getVertex(n) mb.setVertexUVCoordinates(n, v[0], v[2] * aspect) - self._grid_mesh = mb.build().getTransformed(scale_matrix) + self._plate_mesh = mb.build().getTransformed(scale_matrix) + + #Build plate grid mesh. + #We need to constrain the length of the lines to the build plate ellipsis. Time to get out the calculator! + mb = MeshBuilder() + for x in range(0, int(math.ceil(max_w)), MAJOR_GRID_SIZE): + #x / max_w is the fraction along the build plate we have progressed, counting from the centre. + #So x / max_w is sin(a), where a is the angle towards an endpoint of the grid line from the centre. + #So math.asin(x / max_w) is a. + #So math.cos(math.asin(x / max_w)) is half of the length of the grid line on a unit circle, which scales between 0 and 1. + length_factor = math.cos(math.asin(x / max_w)) + mb.addLine(Vector(x, min_h, min_d * length_factor), Vector(x, min_h, max_d * length_factor), color = self._grid_color) + #Start from 0 in both cases, so you need to do this in two for loops. + mb.addLine(Vector(-x, min_h, min_d * length_factor), Vector(-x, min_h, max_d * length_factor), color = self._grid_color) + for y in range(0, int(math.ceil(max_d)), MAJOR_GRID_SIZE): + length_factor = math.sin(math.acos(y / max_d)) + mb.addLine(Vector(min_w * length_factor, min_h, y), Vector(max_w * length_factor, min_h, y), color = self._grid_color) + mb.addLine(Vector(min_w * length_factor, min_h, -y), Vector(max_w * length_factor, min_h, -y), color = self._grid_color) + + self._grid_mesh = mb.build() # Indication of the machine origin if self._global_container_stack.getProperty("machine_center_is_zero", "value"): From 25c5c5a88836f30ceb71c1d333ba76f939aafe2e Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 21 Aug 2017 10:24:53 +0200 Subject: [PATCH 27/54] Add minor grid cells for circular build plates Same technique as the major grid cells. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 8298d6de0c..2757a37609 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -367,6 +367,20 @@ class BuildVolume(SceneNode): mb.addLine(Vector(min_w * length_factor, min_h, y), Vector(max_w * length_factor, min_h, y), color = self._grid_color) mb.addLine(Vector(min_w * length_factor, min_h, -y), Vector(max_w * length_factor, min_h, -y), color = self._grid_color) + #More fine grained grid. + for x in range(0, int(math.ceil(max_w)), MINOR_GRID_SIZE): + if x % MAJOR_GRID_SIZE == 0: #Don't overlap with the major grid. + pass + length_factor = math.cos(math.asin(x / max_w)) + mb.addLine(Vector(x, min_h, min_d * length_factor), Vector(x, min_h, max_d * length_factor), color = self._grid_minor_color) + mb.addLine(Vector(-x, min_h, min_d * length_factor), Vector(-x, min_h, max_d * length_factor), color = self._grid_minor_color) + for y in range(0, int(math.ceil(max_d)), MINOR_GRID_SIZE): + if y % MAJOR_GRID_SIZE == 0: + pass + length_factor = math.sin(math.acos(y / max_d)) + mb.addLine(Vector(min_w * length_factor, min_h, y), Vector(max_w * length_factor, min_h, y), color = self._grid_minor_color) + mb.addLine(Vector(min_w * length_factor, min_h, -y), Vector(max_w * length_factor, min_h, -y), color = self._grid_minor_color) + self._grid_mesh = mb.build() # Indication of the machine origin From ab0ab74fe87368f94b4383823364a64eab187d8f Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 21 Aug 2017 17:08:54 +0200 Subject: [PATCH 28/54] Update Creality CR-10 definition Michael found these settings to work towards better time estimate and neglegible quality differences. --- resources/definitions/creality_cr10.def.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/resources/definitions/creality_cr10.def.json b/resources/definitions/creality_cr10.def.json index 7335e4a3d4..6c37d4fb38 100644 --- a/resources/definitions/creality_cr10.def.json +++ b/resources/definitions/creality_cr10.def.json @@ -31,6 +31,18 @@ }, "gantry_height": { "default_value": 30 + }, + "acceleration_enabled": { + "default_value": true + }, + "acceleration_print": { + "default_value": 500 + }, + "jerk_enabled": { + "default_value": true + }, + "jerk_print": { + "default_value": 20 } } } \ No newline at end of file From 1332489391d618dc91c282cad6e63437db8ab858 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 22 Aug 2017 10:42:31 +0200 Subject: [PATCH 29/54] Add comments for upgradeMachineStack() CURA-4188 --- .../VersionUpgrade25to26/VersionUpgrade25to26.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index 9c02d0387e..d270d0f2b7 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -114,6 +114,10 @@ class VersionUpgrade25to26(VersionUpgrade): parser.write(output) return [filename], [output.getvalue()] + ## Upgrades a machine stack 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. def upgradeMachineStack(self, serialised, filename): parser = configparser.ConfigParser(interpolation=None) parser.read_string(serialised) From 72575eaf370c99a148edd942636dac28fd4bb0a6 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 22 Aug 2017 10:44:15 +0200 Subject: [PATCH 30/54] Rename function to _acquireNextUniqueCustomFdmPrinterExtruderStackIdIndex() CURA-4188 --- .../VersionUpgrade25to26/VersionUpgrade25to26.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index d270d0f2b7..2b8a5fe69c 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -131,7 +131,7 @@ class VersionUpgrade25to26(VersionUpgrade): if definition_container_id == "custom" and not self._checkCustomFdmPrinterHasExtruderStack(machine_id): # go through all extruders and make sure that this custom FDM printer has 8 extruder stacks. - self._getNextUniqueCustomFdmPrinterExtruderStackIdIndex() + self._acquireNextUniqueCustomFdmPrinterExtruderStackIdIndex() for position in range(8): self._createCustomFdmPrinterExtruderStack(machine_id, position, quality_container_id, material_container_id) @@ -145,7 +145,8 @@ class VersionUpgrade25to26(VersionUpgrade): return [filename], [output.getvalue()] - def _getNextUniqueCustomFdmPrinterExtruderStackIdIndex(self): + ## Acquires the next unique extruder stack index number for the Custom FDM Printer. + def _acquireNextUniqueCustomFdmPrinterExtruderStackIdIndex(self): extruder_stack_dir = Resources.getPath(CuraApplication.ResourceTypes.ExtruderStack) file_name_list = os.listdir(extruder_stack_dir) file_name_list = [os.path.basename(file_name) for file_name in file_name_list] From 3d75342a11398c060b189d26225a457d5851d1ca Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 22 Aug 2017 10:51:13 +0200 Subject: [PATCH 31/54] Stop the loop if any extruder is found CURA-4188 --- .../VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index 2b8a5fe69c..88de81d10b 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -190,6 +190,7 @@ class VersionUpgrade25to26(VersionUpgrade): if machine_id != parser["metadata"]["machine"]: continue has_extruders = True + break return has_extruders From 812e262f394abdb4c5bab976886e3d106131941b Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 22 Aug 2017 11:28:43 +0200 Subject: [PATCH 32/54] When deserialising a material, also update the material derived from it CURA-4204 --- .../XmlMaterialProfile/XmlMaterialProfile.py | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 41d45cfc9b..c81e23b219 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -548,7 +548,17 @@ class XmlMaterialProfile(InstanceContainer): if machine_compatibility: new_material_id = self.id + "_" + machine_id - new_material = XmlMaterialProfile(new_material_id) + # The child or derived material container may already exist. This can happen when a material in a + # project file and the a material in Cura have the same ID. + # In the case if a derived material already exists, override that material container because if + # the data in the parent material has been changed, the derived ones should be updated too. + found_materials = ContainerRegistry.getInstance().findInstanceContainers(id = new_material_id) + is_new_material = False + if found_materials: + new_material = found_materials[0] + else: + new_material = XmlMaterialProfile(new_material_id) + is_new_material = True # Update the private directly, as we want to prevent the lookup that is done when using setName new_material._name = self.getName() @@ -562,7 +572,8 @@ class XmlMaterialProfile(InstanceContainer): new_material._dirty = False - ContainerRegistry.getInstance().addContainer(new_material) + if is_new_material: + ContainerRegistry.getInstance().addContainer(new_material) hotends = machine.iterfind("./um:hotend", self.__namespaces) for hotend in hotends: @@ -594,7 +605,15 @@ class XmlMaterialProfile(InstanceContainer): new_hotend_id = self.id + "_" + machine_id + "_" + hotend_id.replace(" ", "_") - new_hotend_material = XmlMaterialProfile(new_hotend_id) + # Same as machine compatibility, keep the derived material containers consistent with the parent + # material + found_materials = ContainerRegistry.getInstance().findInstanceContainers(id = new_hotend_id) + is_new_material = False + if found_materials: + new_hotend_material = found_materials[0] + else: + new_hotend_material = XmlMaterialProfile(new_hotend_id) + is_new_material = True # Update the private directly, as we want to prevent the lookup that is done when using setName new_hotend_material._name = self.getName() @@ -612,7 +631,8 @@ class XmlMaterialProfile(InstanceContainer): new_hotend_material._dirty = False - ContainerRegistry.getInstance().addContainer(new_hotend_material) + if is_new_material: + ContainerRegistry.getInstance().addContainer(new_hotend_material) def _addSettingElement(self, builder, instance): try: From 39ab740adb013023ad408a4a3b2575d19a1a6f11 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 22 Aug 2017 13:35:51 +0200 Subject: [PATCH 33/54] Adding binding for per-object settings to update stack ID CURA-4186 The stack ID to use for a setting in per-object settings is not updated when it is set to limit to extruder. --- .../PerObjectSettingsPanel.qml | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index c30c6c8d6a..9b235aeac8 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -151,10 +151,43 @@ Item { UM.SettingPropertyProvider { id: inheritStackProvider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: UM.ActiveTool.properties.getValue("ContainerID") key: model.key watchedProperties: [ "limit_to_extruder" ] } + + Binding + { + target: provider + property: "containerStackId" + when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0); + value: + { + // associate this binding with Cura.MachineManager.activeMachineId in the beginning so this + // binding will be triggered when activeMachineId is changed too. + // Otherwise, if this value only depends on the extruderIds, it won't get updated when the + // machine gets changed. + var activeMachineId = Cura.MachineManager.activeMachineId; + + if(!model.settable_per_extruder || machineExtruderCount.properties.value == 1) + { + //Not settable per extruder or there only is global, so we must pick global. + return activeMachineId; + } + if(inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) + { + //We have limit_to_extruder, so pick that stack. + return ExtruderManager.extruderIds[String(inheritStackProvider.properties.limit_to_extruder)]; + } + if(ExtruderManager.activeExtruderStackId) + { + //We're on an extruder tab. Pick the current extruder. + return ExtruderManager.activeExtruderStackId; + } + //No extruder tab is selected. Pick the global stack. Shouldn't happen any more since we removed the global tab. + return activeMachineId; + } + } } } } From 64f6cd237f28a9fb76c1f2242f4f9e27412b53cb Mon Sep 17 00:00:00 2001 From: Mark Date: Tue, 22 Aug 2017 13:58:01 +0200 Subject: [PATCH 34/54] Rename Print tab to Monitor CURA-4106 --- resources/qml/Topbar.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 1b5792124e..210b9e1cfa 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -57,7 +57,7 @@ Rectangle id: showMonitor height: UM.Theme.getSize("sidebar_header").height onClicked: base.startMonitoringPrint() - text: catalog.i18nc("@title:tab", "Print") + text: catalog.i18nc("@title:tab", "Monitor") iconSource: printerConnected ? UM.Theme.getIcon("tab_monitor_with_status") : UM.Theme.getIcon("tab_monitor") property color overlayColor: { From 28670edf8ea9eed28b08deae86e36f08bd7f1c18 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 22 Aug 2017 16:11:14 +0200 Subject: [PATCH 35/54] Align profile dropdown box correctly CURA-4147 --- resources/qml/Sidebar.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index 969848f456..66d5c520f5 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -248,6 +248,7 @@ Rectangle width: parent.width * 0.7 + UM.Theme.getSize("default_margin").width height: UM.Theme.getSize("setting_control").height + anchors.left: globalProfileLabel.right anchors.right: parent.right tooltip: Cura.MachineManager.activeQualityName style: UM.Theme.styles.sidebar_header_button From 18b88065f45f8a871763a635808237729c66bf8e Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 22 Aug 2017 16:40:11 +0200 Subject: [PATCH 36/54] Render build plate slightly lower than grid to prevent Z fighting Looks much better. Contributes to issue CURA-4150. --- cura/BuildVolume.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 2757a37609..7514f15c14 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -174,6 +174,7 @@ class BuildVolume(SceneNode): self._plate_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader")) theme = Application.getInstance().getTheme() self._plate_shader.setUniformValue("u_color", Color(*theme.getColor("buildplate").getRgb())) + self._plate_shader.setUniformValue("u_z_bias", 0.01) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) renderer.queueNode(self, mesh = self._origin_mesh) From 16764f47507192f4573cf470c08963e43bf8a716 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 22 Aug 2017 17:37:23 +0200 Subject: [PATCH 37/54] Create user containers for newly created custom FDM printer extruders CURA-4188 The newly created extruder stacks don't have user containers, so the user changes cannot be saved. This fix makes sure that in the upgrade, user containers will be created. --- .../VersionUpgrade25to26.py | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index 88de81d10b..5b3632a095 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -204,6 +204,9 @@ class VersionUpgrade25to26(VersionUpgrade): # create a definition changes container for this stack definition_changes_parser = self._getCustomFdmPrinterDefinitionChanges(stack_id) definition_changes_id = definition_changes_parser["general"]["name"] + # create a user settings container + user_settings_parser = self._getCustomFdmPrinterUserSettings(stack_id) + user_settings_id = user_settings_parser["general"]["name"] parser = configparser.ConfigParser() parser.add_section("general") @@ -217,7 +220,7 @@ class VersionUpgrade25to26(VersionUpgrade): parser["metadata"]["position"] = str(position) parser.add_section("containers") - parser["containers"]["0"] = "empty" + parser["containers"]["0"] = user_settings_id parser["containers"]["1"] = "empty_quality_changes" parser["containers"]["2"] = quality_id parser["containers"]["3"] = material_id @@ -229,15 +232,22 @@ class VersionUpgrade25to26(VersionUpgrade): definition_changes_parser.write(definition_changes_output) definition_changes_filename = quote_plus(definition_changes_id) + ".inst.cfg" + user_settings_output = io.StringIO() + user_settings_parser.write(user_settings_output) + user_settings_filename = quote_plus(user_settings_id) + ".inst.cfg" + extruder_output = io.StringIO() parser.write(extruder_output) extruder_filename = quote_plus(stack_id) + ".extruder.cfg" extruder_stack_dir = Resources.getPath(CuraApplication.ResourceTypes.ExtruderStack) definition_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.DefinitionChangesContainer) + user_settings_dir = Resources.getPath(CuraApplication.ResourceTypes.UserInstanceContainer) with open(os.path.join(definition_changes_dir, definition_changes_filename), "w") as f: f.write(definition_changes_output.getvalue()) + with open(os.path.join(user_settings_dir, user_settings_filename), "w") as f: + f.write(user_settings_output.getvalue()) with open(os.path.join(extruder_stack_dir, extruder_filename), "w") as f: f.write(extruder_output.getvalue()) @@ -261,3 +271,25 @@ class VersionUpgrade25to26(VersionUpgrade): parser.add_section("values") return parser + + ## Creates a user settings container which doesn't contain anything for the Custom FDM Printers. + # The container ID will be automatically generated according to the given stack name. + def _getCustomFdmPrinterUserSettings(self, stack_id: str): + # For the extruder stacks created in the upgrade, also create user_settings containers so the user changes + # will be saved. + user_settings_id = stack_id + "_user" + + parser = configparser.ConfigParser() + parser.add_section("general") + parser["general"]["version"] = str(2) + parser["general"]["name"] = user_settings_id + parser["general"]["definition"] = "custom" + + parser.add_section("metadata") + parser["metadata"]["extruder"] = stack_id + parser["metadata"]["type"] = "user" + parser["metadata"]["setting_version"] = str(1) + + parser.add_section("values") + + return parser From 90860c67c29a92a1dc25bffda0775198ab7b536d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 23 Aug 2017 09:23:04 +0200 Subject: [PATCH 38/54] Minor tweaks suggested by fieldOfView See the comments in this commit: https://github.com/Ultimaker/Cura/commit/c4d23437f2ef5889405bd987247f3bccbb11935a --- plugins/ChangeLogPlugin/ChangeLog.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/ChangeLogPlugin/ChangeLog.txt b/plugins/ChangeLogPlugin/ChangeLog.txt index 3e101919d4..97651ecd1c 100755 --- a/plugins/ChangeLogPlugin/ChangeLog.txt +++ b/plugins/ChangeLogPlugin/ChangeLog.txt @@ -36,7 +36,7 @@ A dark theme for Cura. Select this theme to reduce eyestrain when working in dar The top bar user interface been improved so that “Prepare” and “Print” have moved from the right side of the interface to the left side. *New keyboard shortcuts -Models can now be manipulated on the build plate using hotkeys Q, A, Z, W, and tab keys. Q selects “move”, A selects “scale”, Z selects “rotate”, and W selects “mirror”. Use the tab key to navigate between interfaces. +Models can now be manipulated on the build plate using hotkeys Q, A, Z, W, and tab keys. Q selects “move”, A selects “scale”, Z selects “rotate”, and W selects “mirror”. Use the tab key to navigate between settings. *Plugin browser Easily download and install plugins using an integrated plugin browser. Go to “Extensions > Plugin Browser > Browse plugins” to select it. @@ -61,7 +61,7 @@ Polish language support added. This can be selected in the preferences menu. - Crashes when adding printers - Jerk fixes - Z-hop over-extrusion - +- Material diameter in machine settings *3rd party printers - Peopoly Moai From 2d0a4d443dd1de5a695d7ff894d80b3756661320 Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 23 Aug 2017 10:54:46 +0200 Subject: [PATCH 39/54] Switch material and print core CURA-4147 --- resources/qml/SidebarHeader.qml | 80 ++++++++++++++++----------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 6f0ae9e196..840a7067ce 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -160,46 +160,6 @@ Column visible: !extruderSelectionRow.visible } - // Print core row - Item - { - id: printCoreRow - height: UM.Theme.getSize("sidebar_setup").height - visible: Cura.MachineManager.hasVariants && !sidebar.monitoringPrint && !sidebar.hideSettings - - anchors - { - left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("default_margin").width - } - - Text - { - id: printCoreLabel - text: Cura.MachineManager.activeDefinitionVariantsName; - width: parent.width * 0.45 - UM.Theme.getSize("default_margin").width - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); - } - - ToolButton { - id: printCoreSelection - text: Cura.MachineManager.activeVariantName - tooltip: Cura.MachineManager.activeVariantName; - visible: Cura.MachineManager.hasVariants - - height: UM.Theme.getSize("setting_control").height - width: parent.width * 0.7 + UM.Theme.getSize("default_margin").width - anchors.right: parent.right - style: UM.Theme.styles.sidebar_header_button - activeFocusOnPress: true; - - menu: NozzleMenu { extruderIndex: base.currentExtruderIndex } - } - } - // Material Row Item { @@ -256,6 +216,46 @@ Column } } + // Print core row + Item + { + id: printCoreRow + height: UM.Theme.getSize("sidebar_setup").height + visible: Cura.MachineManager.hasVariants && !sidebar.monitoringPrint && !sidebar.hideSettings + + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width + } + + Text + { + id: printCoreLabel + text: Cura.MachineManager.activeDefinitionVariantsName; + width: parent.width * 0.45 - UM.Theme.getSize("default_margin").width + font: UM.Theme.getFont("default"); + color: UM.Theme.getColor("text"); + } + + ToolButton { + id: printCoreSelection + text: Cura.MachineManager.activeVariantName + tooltip: Cura.MachineManager.activeVariantName; + visible: Cura.MachineManager.hasVariants + + height: UM.Theme.getSize("setting_control").height + width: parent.width * 0.7 + UM.Theme.getSize("default_margin").width + anchors.right: parent.right + style: UM.Theme.styles.sidebar_header_button + activeFocusOnPress: true; + + menu: NozzleMenu { extruderIndex: base.currentExtruderIndex } + } + } + // Material info row Item { From 32a863d9dca4f465397225f576247997175d104a Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Sun, 20 Aug 2017 16:52:56 +0200 Subject: [PATCH 40/54] Find a material with the correct diameter when adding a printer --- cura/Settings/CuraContainerStack.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index cdda14ee18..eeb170c489 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -432,6 +432,7 @@ class CuraContainerStack(ContainerStack): # - If the machine definition has a metadata entry "has_machine_materials", the definition of the material should # be the same as the machine definition for this stack. Otherwise, the definition should be "fdmprinter". # - The container should have a metadata entry "type" with value "material". + # - The material should have an approximate diameter that matches the machine # - If the machine definition has a metadata entry "has_variants" and set to True, the "variant" metadata entry of # the material should be the same as the ID of the variant in the stack. Only applies if "has_machine_materials" is also True. # - If the stack currently has a material set, try to find a material that matches the current material by name. @@ -460,6 +461,9 @@ class CuraContainerStack(ContainerStack): if preferred_material: search_criteria["id"] = preferred_material + approximate_material_diameter = str(round(self.getProperty("material_diameter", "value"))) + search_criteria["approximate_diameter"] = approximate_material_diameter + materials = ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) if not materials: Logger.log("w", "The preferred material \"{material}\" could not be found for stack {stack}", material = preferred_material, stack = self.id) From 7a2493dd2fb79f406f0539cc79e250e7f384b194 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 23 Aug 2017 12:31:20 +0200 Subject: [PATCH 41/54] Use per-object stack instead of the active extruder CURA-4186 --- plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 9b235aeac8..07a8fc21bc 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -179,10 +179,10 @@ Item { //We have limit_to_extruder, so pick that stack. return ExtruderManager.extruderIds[String(inheritStackProvider.properties.limit_to_extruder)]; } - if(ExtruderManager.activeExtruderStackId) + if(UM.ActiveTool.properties.getValue("ContainerID")) { //We're on an extruder tab. Pick the current extruder. - return ExtruderManager.activeExtruderStackId; + return UM.ActiveTool.properties.getValue("ContainerID"); } //No extruder tab is selected. Pick the global stack. Shouldn't happen any more since we removed the global tab. return activeMachineId; From 904682945a49d1ce46138debb7d40ba07122fa25 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 23 Aug 2017 12:48:19 +0200 Subject: [PATCH 42/54] Decreased the value of the u_z_bias, so the plate quad is drawn again. CURA-4150 --- cura/BuildVolume.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 7514f15c14..bc5398cb1c 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -174,7 +174,7 @@ class BuildVolume(SceneNode): self._plate_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader")) theme = Application.getInstance().getTheme() self._plate_shader.setUniformValue("u_color", Color(*theme.getColor("buildplate").getRgb())) - self._plate_shader.setUniformValue("u_z_bias", 0.01) + self._plate_shader.setUniformValue("u_z_bias", 0.000001) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) renderer.queueNode(self, mesh = self._origin_mesh) From b1160c2c370a30fe7b7224aee0b741ea88b37f92 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 23 Aug 2017 14:02:02 +0200 Subject: [PATCH 43/54] Labels in layerview now correctly use font Fixes #2309 --- plugins/LayerView/LayerView.qml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index ad952f6ca1..3b02aa1ecd 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -71,7 +71,7 @@ Item id: layersLabel anchors.left: parent.left text: catalog.i18nc("@label","View Mode: Layers") - font.bold: true + font: UM.Theme.getFont("default_bold"); color: UM.Theme.getColor("text") Layout.fillWidth: true elide: Text.ElideMiddle; @@ -90,6 +90,7 @@ Item id: layerViewTypesLabel anchors.left: parent.left text: catalog.i18nc("@label","Color scheme") + font: UM.Theme.getFont("default"); visible: !UM.LayerView.compatibilityMode Layout.fillWidth: true color: UM.Theme.getColor("text") @@ -148,6 +149,7 @@ Item id: compatibilityModeLabel anchors.left: parent.left text: catalog.i18nc("@label","Compatibility Mode") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") visible: UM.LayerView.compatibilityMode Layout.fillWidth: true @@ -210,6 +212,7 @@ Item text: model.name elide: Text.ElideRight color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") anchors.verticalCenter: parent.verticalCenter anchors.left: extrudersModelCheckBox.left; anchors.right: extrudersModelCheckBox.right; @@ -275,6 +278,7 @@ Item Label { text: label + font: UM.Theme.getFont("default") elide: Text.ElideRight color: UM.Theme.getColor("text") anchors.verticalCenter: parent.verticalCenter @@ -340,6 +344,7 @@ Item Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height Layout.preferredWidth: UM.Theme.getSize("layerview_row").width color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") } } } From d662770b225fa066815af644851644b87a8f198f Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 23 Aug 2017 16:27:26 +0200 Subject: [PATCH 44/54] Fix setting new material for stacks CURA-4204 When a new material is created during project file loading, the material for each stack is set according to the parent material ID, but actually the child material should be used. This fix uses a hack to find the corresponding child material for a stack so when a user chooses to create a new material during project file loading, the material can be correctly set. --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 62 ++++++++++++++------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 8fdb120189..5747001a64 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -814,29 +814,26 @@ class ThreeMFWorkspaceReader(WorkspaceReader): each_extruder_stack.definitionChanges = each_changes_container if self._resolve_strategies["material"] == "new": + # the actual material instance container can have an ID such as + # __ + # which cannot be determined immediately, so here we use a HACK to find the right new material + # instance ID: + # - get the old material IDs for all material + # - find the old material with the longest common prefix in ID, that's the old material + # - update the name by replacing the old prefix with the new + # - find the new material container and set it to the stack + old_to_new_material_dict = {} for each_material in material_containers: - old_material = global_stack.material + # find the material's old name + for old_id, new_id in self._id_mapping.items(): + if each_material.getId() == new_id: + old_to_new_material_dict[old_id] = each_material + break - # 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: - 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 + # replace old material in global and extruder stacks with new + self._replaceStackMaterialWithNew(global_stack, old_to_new_material_dict) + for each_extruder_stack in extruder_stacks: + self._replaceStackMaterialWithNew(each_extruder_stack, old_to_new_material_dict) if extruder_stacks: for stack in extruder_stacks: @@ -861,6 +858,29 @@ class ThreeMFWorkspaceReader(WorkspaceReader): nodes = [] return nodes + def _replaceStackMaterialWithNew(self, stack, old_new_material_dict): + old_material_id_in_stack = stack.material.getId() + best_matching_old_material_id = None + best_matching_old_meterial_prefix_length = -1 + for old_parent_material_id in old_new_material_dict: + if len(old_parent_material_id) < best_matching_old_meterial_prefix_length: + continue + if len(old_parent_material_id) <= len(old_material_id_in_stack): + if old_parent_material_id == old_material_id_in_stack[0:len(old_parent_material_id)]: + best_matching_old_meterial_prefix_length = len(old_parent_material_id) + best_matching_old_material_id = old_parent_material_id + + if best_matching_old_material_id is None: + return + + new_material_id = old_new_material_dict[best_matching_old_material_id].getId() + old_material_id_in_stack[len(best_matching_old_material_id):] + new_material_containers = self._container_registry.findInstanceContainers(id = new_material_id, type = "material") + if not new_material_containers: + Logger.log("e", "Cannot find new material container [%s]", new_material_id) + return + + stack.material = new_material_containers[0] + def _stripFileToId(self, file): mime_type = MimeTypeDatabase.getMimeTypeForFile(file) file = mime_type.stripExtension(file) From c37782d5441e79b09ee69de40d0e6e505d7e337c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 23 Aug 2017 17:19:42 +0200 Subject: [PATCH 45/54] Stop slicing when a new slice is needed CURA-4206 --- plugins/CuraEngineBackend/CuraEngineBackend.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 3710d33965..d94c3be94f 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -427,6 +427,7 @@ class CuraEngineBackend(QObject, Backend): ## Convenient function: set need_slicing, emit state and clear layer data def needsSlicing(self): + self.stopSlicing() self._need_slicing = True self.processingProgress.emit(0.0) self.backendStateChange.emit(BackendState.NotStarted) From 3805d2ff9e3310d982bd558f9e2714f74709f372 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 23 Aug 2017 17:37:58 +0200 Subject: [PATCH 46/54] Add comments for HACK in project loading CURA-4204 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 30 +++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 5747001a64..6c6451c4c4 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -858,7 +858,35 @@ class ThreeMFWorkspaceReader(WorkspaceReader): nodes = [] return nodes + ## HACK: Replaces the material container in the given stack with a newly created material container. + # This function is used when the user chooses to resolve material conflicts by creating new ones. def _replaceStackMaterialWithNew(self, stack, old_new_material_dict): + # The material containers in the project file are 'parent' material such as "generic_pla", + # but a material container used in a global/extruder stack is a 'child' material, + # such as "generic_pla_ultimaker3_AA_0.4", which can be formalised as the following: + # + # __ + # + # In the project loading, when a user chooses to resolve material conflicts by creating new ones, + # the old 'parent' material ID and the new 'parent' material ID are known, but not the child material IDs. + # In this case, the global stack and the extruder stacks need to use the newly created material, but the + # material containers they use are 'child' material. So, here, we need to find the right 'child' material for + # the stacks. + # + # This hack approach works as follows: + # - No matter there is a child material or not, the actual material we are looking for has the prefix + # "", which is the old material name. For the material in a stack, we know that the new + # material's ID will be "_blabla..", so we just need to replace the old material ID + # with the new one to get the new 'child' material. + # - Because the material containers have IDs such as "m #nn", if we use simple prefix matching, there can + # be a problem in the following scenario: + # - there are two materials in the project file, namely "m #1" and "m #11" + # - the child materials in use are for example: "m #1_um3_aa04", "m #11_um3_aa04" + # - if we only check for a simple prefix match, then "m #11_um3_aa04" will match with "m #1", but they + # are not the same material + # To avoid this, when doing the prefix matching, we use the result with the longest mactching prefix. + + # find the old material ID old_material_id_in_stack = stack.material.getId() best_matching_old_material_id = None best_matching_old_meterial_prefix_length = -1 @@ -873,12 +901,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if best_matching_old_material_id is None: return + # find the new material container new_material_id = old_new_material_dict[best_matching_old_material_id].getId() + old_material_id_in_stack[len(best_matching_old_material_id):] new_material_containers = self._container_registry.findInstanceContainers(id = new_material_id, type = "material") if not new_material_containers: Logger.log("e", "Cannot find new material container [%s]", new_material_id) return + # replace the material in the given stack stack.material = new_material_containers[0] def _stripFileToId(self, file): From 3d44d3c4caf1db536048382f4aa6a1cbe578d904 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 23 Aug 2017 17:42:39 +0200 Subject: [PATCH 47/54] Add logging and minor fix for project loading CURA-4204 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 6c6451c4c4..3eb224fb15 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -832,8 +832,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # replace old material in global and extruder stacks with new self._replaceStackMaterialWithNew(global_stack, old_to_new_material_dict) - for each_extruder_stack in extruder_stacks: - self._replaceStackMaterialWithNew(each_extruder_stack, old_to_new_material_dict) + if extruder_stacks: + for each_extruder_stack in extruder_stacks: + self._replaceStackMaterialWithNew(each_extruder_stack, old_to_new_material_dict) if extruder_stacks: for stack in extruder_stacks: @@ -899,6 +900,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): best_matching_old_material_id = old_parent_material_id if best_matching_old_material_id is None: + Logger.log("w", "Cannot find any matching old material ID for stack [%s] material [%s]. Something can go wrong", + stack.getId(), old_material_id_in_stack) return # find the new material container From c43b7f6f1b44a8e1850d00742fd2addcd002b2cb Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 24 Aug 2017 14:42:39 +0200 Subject: [PATCH 48/54] Update Creality CR10 Beta definition The printer was also renamed to a more specific name. These are updates I'm getting from Michael. --- ...0.def.json => creality_cr10_beta.def.json} | 52 ++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) rename resources/definitions/{creality_cr10.def.json => creality_cr10_beta.def.json} (54%) diff --git a/resources/definitions/creality_cr10.def.json b/resources/definitions/creality_cr10_beta.def.json similarity index 54% rename from resources/definitions/creality_cr10.def.json rename to resources/definitions/creality_cr10_beta.def.json index 6c37d4fb38..f482a49e2f 100644 --- a/resources/definitions/creality_cr10.def.json +++ b/resources/definitions/creality_cr10_beta.def.json @@ -1,6 +1,6 @@ { - "id": "creality-cr10", - "name": "Creality CR-10", + "id": "creality-cr10_beta", + "name": "Creality CR-10 Beta", "version": 2, "inherits": "fdmprinter", "metadata": { @@ -20,6 +20,48 @@ "machine_depth": { "default_value": 300 }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "layer_height": { + "default_value": 0.2 + }, + "layer_height_0": { + "default_value": 0.2 + }, + "top_bottom_thickness": { + "default_value": 0.6 + }, + "top_bottom_pattern": { + "default_value": "concentric" + }, + "infill_pattern": { + "value": "'triangles'" + }, + "retraction_enable": { + "default_value": true + }, + "retraction_amount": { + "default_value": 5 + }, + "retraction_speed": { + "default_value": 40 + }, + "cool_min_layer_time": { + "default_value": 15 + }, + "adhesion_type": { + "default_value": "skirt" + }, + "skirt_line_count": { + "default_value": 4 + }, + "skirt_gap": { + "default_value": 5 + }, "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute Positioning\nG28 ; home all axes\nG1 Z5 F3000 ; lift\nG1 X20 Y2 F1500 ; avoid binder clips\nG1 Z0.2 F3000 ; get ready to prime\nG92 E0 ; reset extrusion distance\nG1 X120 E10 F600 ; prime nozzle\nG1 X150 F5000 ; quick wipe" }, @@ -38,11 +80,17 @@ "acceleration_print": { "default_value": 500 }, + "acceleration_travel": { + "default_value": 500 + }, "jerk_enabled": { "default_value": true }, "jerk_print": { "default_value": 20 + }, + "jerk_travel": { + "default_value": 20 } } } \ No newline at end of file From 4caad8f3b9aa15a5e37a69fb137dc7d569a6f07b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 24 Aug 2017 14:53:15 +0200 Subject: [PATCH 49/54] Add Creality CR10S4 and S5 definitions They use the same settings as the normal one but they are larger printers. --- .../definitions/creality_cr10s4_beta.def.json | 24 +++++++++++++++++++ .../definitions/creality_cr10s5_beta.def.json | 24 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 resources/definitions/creality_cr10s4_beta.def.json create mode 100644 resources/definitions/creality_cr10s5_beta.def.json diff --git a/resources/definitions/creality_cr10s4_beta.def.json b/resources/definitions/creality_cr10s4_beta.def.json new file mode 100644 index 0000000000..2b700536ec --- /dev/null +++ b/resources/definitions/creality_cr10s4_beta.def.json @@ -0,0 +1,24 @@ +{ + "id": "creality-cr10s4_beta", + "name": "Creality CR-10 S4 Beta", + "version": 2, + "inherits": "creality_cr10_beta", + "metadata": { + "visible": true, + "author": "Michael Wildermuth", + "manufacturer": "Creality3D", + "category": "Other", + "file_formats": "text/x-gcode" + }, + "overrides": { + "machine_width": { + "default_value": 400 + }, + "machine_height": { + "default_value": 400 + }, + "machine_depth": { + "default_value": 400 + } + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr10s5_beta.def.json b/resources/definitions/creality_cr10s5_beta.def.json new file mode 100644 index 0000000000..c68b83bbbc --- /dev/null +++ b/resources/definitions/creality_cr10s5_beta.def.json @@ -0,0 +1,24 @@ +{ + "id": "creality-cr10s5_beta", + "name": "Creality CR-10 S5 Beta", + "version": 2, + "inherits": "creality_cr10_beta", + "metadata": { + "visible": true, + "author": "Michael Wildermuth", + "manufacturer": "Creality3D", + "category": "Other", + "file_formats": "text/x-gcode" + }, + "overrides": { + "machine_width": { + "default_value": 500 + }, + "machine_height": { + "default_value": 500 + }, + "machine_depth": { + "default_value": 500 + } + } +} \ No newline at end of file From a1fdcd0e489aab45f2cb20949ffe0a75d665e4f1 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 24 Aug 2017 15:32:41 +0200 Subject: [PATCH 50/54] Update prime tower settings for PVA This reduces the jerk considerably and makes use of the new prime tower purge settings. --- resources/definitions/fdmprinter.def.json | 2 +- resources/variants/ultimaker3_bb0.8.inst.cfg | 2 ++ resources/variants/ultimaker3_bb04.inst.cfg | 2 ++ resources/variants/ultimaker3_extended_bb0.8.inst.cfg | 2 ++ resources/variants/ultimaker3_extended_bb04.inst.cfg | 2 ++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 0eff9e470f..36580f7785 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4616,7 +4616,7 @@ "unit": "mm³", "default_value": 0, "minimum_value": "0", - "maximum_value_warning": "0.5", + "maximum_value_warning": "1", "settable_per_mesh": false, "settable_per_extruder": true }, diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index ddb1aa3c7e..8ed7c92511 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -24,6 +24,7 @@ infill_overlap = 0 infill_pattern = triangles infill_wipe_dist = 0 jerk_enabled = True +jerk_prime_tower = =math.ceil(jerk_print * 2 / 25) jerk_print = 25 jerk_support = =math.ceil(jerk_print * 15 / 25) jerk_support_interface = =math.ceil(jerk_support * 10 / 15) @@ -38,6 +39,7 @@ material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = False +prime_tower_purge_volume = 1 prime_tower_wipe_enabled = True raft_acceleration = =acceleration_layer_0 raft_airgap = 0 diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index b5698dea54..a5aa03f1fa 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -14,11 +14,13 @@ acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500) cool_fan_speed_max = =cool_fan_speed gradual_support_infill_steps = 2 +jerk_prime_tower = =math.ceil(jerk_print * 2 / 25) jerk_support = =math.ceil(jerk_print * 15 / 25) jerk_support_interface = =math.ceil(jerk_support * 10 / 15) jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = BB 0.4 +prime_tower_purge_volume = 1 raft_base_speed = 20 raft_interface_speed = 20 raft_speed = 25 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index 55ed280f36..886167f714 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -24,6 +24,7 @@ infill_overlap = 0 infill_pattern = triangles infill_wipe_dist = 0 jerk_enabled = True +jerk_prime_tower = =math.ceil(jerk_print * 2 / 25) jerk_print = 25 jerk_support = =math.ceil(jerk_print * 15 / 25) jerk_support_interface = =math.ceil(jerk_support * 10 / 15) @@ -38,6 +39,7 @@ material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = False +prime_tower_purge_volume = 1 prime_tower_wipe_enabled = True raft_acceleration = =acceleration_layer_0 raft_airgap = 0 diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index 7393b0a24a..eb9eefed0c 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -14,11 +14,13 @@ acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500) cool_fan_speed_max = =cool_fan_speed gradual_support_infill_steps = 2 +jerk_prime_tower = =math.ceil(jerk_print * 2 / 25) jerk_support = =math.ceil(jerk_print * 15 / 25) jerk_support_interface = =math.ceil(jerk_support * 10 / 15) jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = BB 0.4 +prime_tower_purge_volume = 1 raft_base_speed = 20 raft_interface_speed = 20 raft_speed = 25 From 4b4f971222a1d7c65679b416d4c3113b7a1c1483 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 25 Aug 2017 09:17:55 +0200 Subject: [PATCH 51/54] Make 'other' the default category This should make it a bit easier for others to create a new definition since there is less for them to 'have to know'. Previously they would be required to fill in as category Other, but now they can just leave the category out. --- resources/definitions/101Hero.def.json | 1 - resources/definitions/3dator.def.json | 1 - resources/definitions/abax_pri3.def.json | 1 - resources/definitions/abax_pri5.def.json | 1 - resources/definitions/abax_titan.def.json | 1 - resources/definitions/alya3dp.def.json | 1 - resources/definitions/bfb.def.json | 1 - resources/definitions/bq_hephestos.def.json | 1 - resources/definitions/bq_hephestos_2.def.json | 1 - resources/definitions/bq_hephestos_xl.def.json | 1 - resources/definitions/bq_witbox.def.json | 1 - resources/definitions/bq_witbox_2.def.json | 1 - resources/definitions/cartesio.def.json | 1 - resources/definitions/creality_cr10_beta.def.json | 1 - resources/definitions/creality_cr10s4_beta.def.json | 1 - resources/definitions/creality_cr10s5_beta.def.json | 1 - resources/definitions/dagoma_discoeasy200.def.json | 1 - resources/definitions/delta_go.def.json | 1 - resources/definitions/deltabot.def.json | 1 - resources/definitions/easyarts_ares.def.json | 1 - resources/definitions/fdmprinter.def.json | 2 +- resources/definitions/folgertech_FT-5.def.json | 1 - resources/definitions/grr_neo.def.json | 1 - resources/definitions/helloBEEprusa.def.json | 1 - resources/definitions/imade3d_jellybox.def.json | 1 - resources/definitions/innovo_inventor.def.json | 1 - resources/definitions/julia.def.json | 1 - resources/definitions/kemiq_q2_beta.def.json | 1 - resources/definitions/kemiq_q2_gama.def.json | 1 - resources/definitions/kossel_mini.def.json | 1 - resources/definitions/kossel_pro.def.json | 1 - resources/definitions/kupido.def.json | 1 - resources/definitions/m180.def.json | 1 - resources/definitions/makeR_pegasus.def.json | 1 - resources/definitions/makeR_prusa_tairona_i3.def.json | 1 - resources/definitions/makeit_pro_l.def.json | 1 - resources/definitions/makeit_pro_m.def.json | 1 - resources/definitions/maker_starter.def.json | 1 - resources/definitions/makerbotreplicator.def.json | 1 - resources/definitions/mankati_fullscale_xt_plus.def.json | 1 - resources/definitions/mendel90.def.json | 1 - resources/definitions/ord.def.json | 1 - resources/definitions/peopoly_moai.def.json | 1 - resources/definitions/printrbot_play.def.json | 1 - resources/definitions/printrbot_play_heated.def.json | 1 - resources/definitions/printrbot_simple.def.json | 1 - resources/definitions/printrbot_simple_extended.def.json | 1 - resources/definitions/prusa_i3.def.json | 1 - resources/definitions/prusa_i3_mk2.def.json | 1 - resources/definitions/prusa_i3_xl.def.json | 1 - resources/definitions/punchtec_connect_xl.def.json | 1 - resources/definitions/renkforce_rf100.def.json | 1 - resources/definitions/rigid3d.def.json | 1 - resources/definitions/rigid3d_3rdgen.def.json | 1 - resources/definitions/rigid3d_hobby.def.json | 1 - resources/definitions/rigid3d_zero.def.json | 1 - resources/definitions/rigid3d_zero2.def.json | 1 - resources/definitions/rigidbot.def.json | 1 - resources/definitions/rigidbot_big.def.json | 1 - resources/definitions/robo_3d_r1.def.json | 1 - resources/definitions/tam.def.json | 1 - resources/definitions/ultimaker.def.json | 1 + resources/definitions/ultimaker2.def.json | 1 - resources/definitions/ultimaker2_extended.def.json | 1 - resources/definitions/ultimaker2_extended_plus.def.json | 1 - resources/definitions/ultimaker2_go.def.json | 1 - resources/definitions/ultimaker2_plus.def.json | 1 - resources/definitions/ultimaker3.def.json | 1 - resources/definitions/ultimaker3_extended.def.json | 1 - resources/definitions/ultimaker_original.def.json | 1 - resources/definitions/ultimaker_original_dual.def.json | 1 - resources/definitions/ultimaker_original_plus.def.json | 1 - resources/definitions/uniqbot_one.def.json | 1 - resources/definitions/vertex_k8400.def.json | 1 - resources/definitions/vertex_k8400_dual.def.json | 1 - resources/definitions/zone3d_printer.def.json | 1 - 76 files changed, 2 insertions(+), 75 deletions(-) diff --git a/resources/definitions/101Hero.def.json b/resources/definitions/101Hero.def.json index c629cb3769..3d19aef626 100644 --- a/resources/definitions/101Hero.def.json +++ b/resources/definitions/101Hero.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "rikky", "manufacturer": "101Hero", - "category": "Other", "machine_extruder_trains": { "0": "fdmextruder" diff --git a/resources/definitions/3dator.def.json b/resources/definitions/3dator.def.json index fd67f3b797..b72a49a35b 100644 --- a/resources/definitions/3dator.def.json +++ b/resources/definitions/3dator.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "3Dator GmbH", "manufacturer": "3Dator GmbH", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "supports_usb_connection": true, diff --git a/resources/definitions/abax_pri3.def.json b/resources/definitions/abax_pri3.def.json index cf1f2b466d..fa826e6f94 100644 --- a/resources/definitions/abax_pri3.def.json +++ b/resources/definitions/abax_pri3.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "ABAX 3d Technologies", "manufacturer": "ABAX 3d Technologies", - "category": "Other", "file_formats": "text/x-gcode" }, "overrides": { diff --git a/resources/definitions/abax_pri5.def.json b/resources/definitions/abax_pri5.def.json index aa2a7eec22..b5588e5c96 100644 --- a/resources/definitions/abax_pri5.def.json +++ b/resources/definitions/abax_pri5.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "ABAX 3d Technologies", "manufacturer": "ABAX 3d Technologies", - "category": "Other", "file_formats": "text/x-gcode" }, "overrides": { diff --git a/resources/definitions/abax_titan.def.json b/resources/definitions/abax_titan.def.json index 75f1267b4f..53b768c93f 100644 --- a/resources/definitions/abax_titan.def.json +++ b/resources/definitions/abax_titan.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "ABAX 3d Technologies", "manufacturer": "ABAX 3d Technologies", - "category": "Other", "file_formats": "text/x-gcode" }, "overrides": { diff --git a/resources/definitions/alya3dp.def.json b/resources/definitions/alya3dp.def.json index 8d1eb6730c..5fa6630f51 100644 --- a/resources/definitions/alya3dp.def.json +++ b/resources/definitions/alya3dp.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "ALYA", "manufacturer": "ALYA", - "category": "Other", "file_formats": "text/x-gcode" }, diff --git a/resources/definitions/bfb.def.json b/resources/definitions/bfb.def.json index b685b3d94d..fddec169c5 100644 --- a/resources/definitions/bfb.def.json +++ b/resources/definitions/bfb.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "BFB", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0] }, diff --git a/resources/definitions/bq_hephestos.def.json b/resources/definitions/bq_hephestos.def.json index 9a49ecc1ae..91eeecb500 100644 --- a/resources/definitions/bq_hephestos.def.json +++ b/resources/definitions/bq_hephestos.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "BQ", "manufacturer": "BQ", - "category": "Other", "file_formats": "text/x-gcode", "platform": "bq_hephestos_platform.stl", "platform_offset": [ 0, -82, 0] diff --git a/resources/definitions/bq_hephestos_2.def.json b/resources/definitions/bq_hephestos_2.def.json index 68f06e390f..272e547af0 100644 --- a/resources/definitions/bq_hephestos_2.def.json +++ b/resources/definitions/bq_hephestos_2.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "BQ", "manufacturer": "BQ", - "category": "Other", "platform": "bq_hephestos_2_platform.stl", "platform_offset": [6, 1320, 0 ], "file_formats": "text/x-gcode" diff --git a/resources/definitions/bq_hephestos_xl.def.json b/resources/definitions/bq_hephestos_xl.def.json index 504f94c0ed..a5a183b1e9 100644 --- a/resources/definitions/bq_hephestos_xl.def.json +++ b/resources/definitions/bq_hephestos_xl.def.json @@ -7,7 +7,6 @@ "visible": true, "manufacturer": "BQ", "author": "BQ", - "category": "Other", "file_formats": "text/x-code", "platform": "bq_hephestos_platform.stl", "platform_offset": [ 0, -82, 0] diff --git a/resources/definitions/bq_witbox.def.json b/resources/definitions/bq_witbox.def.json index 4dfa3c805f..ca14151e7a 100644 --- a/resources/definitions/bq_witbox.def.json +++ b/resources/definitions/bq_witbox.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "BQ", "manufacturer": "BQ", - "category": "Other", "file_formats": "text/x-gcode", "platform": "bq_witbox_platform.stl", "platform_offset": [ 0, -145, -38] diff --git a/resources/definitions/bq_witbox_2.def.json b/resources/definitions/bq_witbox_2.def.json index a3ef0925ba..f634d9c9c8 100644 --- a/resources/definitions/bq_witbox_2.def.json +++ b/resources/definitions/bq_witbox_2.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "BQ", "manufacturer": "BQ", - "category": "Other", "file_formats": "text/x-gcode", "platform": "bq_witbox_platform.stl", "platform_offset": [0, -145, -38] diff --git a/resources/definitions/cartesio.def.json b/resources/definitions/cartesio.def.json index e5253f3b75..45b0111209 100644 --- a/resources/definitions/cartesio.def.json +++ b/resources/definitions/cartesio.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Scheepers", "manufacturer": "Cartesio bv", - "category": "Other", "file_formats": "text/x-gcode", "has_machine_quality": true, diff --git a/resources/definitions/creality_cr10_beta.def.json b/resources/definitions/creality_cr10_beta.def.json index f482a49e2f..3567370cfa 100644 --- a/resources/definitions/creality_cr10_beta.def.json +++ b/resources/definitions/creality_cr10_beta.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Michael Wildermuth", "manufacturer": "Creality3D", - "category": "Other", "file_formats": "text/x-gcode" }, "overrides": { diff --git a/resources/definitions/creality_cr10s4_beta.def.json b/resources/definitions/creality_cr10s4_beta.def.json index 2b700536ec..9eae48e2be 100644 --- a/resources/definitions/creality_cr10s4_beta.def.json +++ b/resources/definitions/creality_cr10s4_beta.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Michael Wildermuth", "manufacturer": "Creality3D", - "category": "Other", "file_formats": "text/x-gcode" }, "overrides": { diff --git a/resources/definitions/creality_cr10s5_beta.def.json b/resources/definitions/creality_cr10s5_beta.def.json index c68b83bbbc..594d40ab83 100644 --- a/resources/definitions/creality_cr10s5_beta.def.json +++ b/resources/definitions/creality_cr10s5_beta.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Michael Wildermuth", "manufacturer": "Creality3D", - "category": "Other", "file_formats": "text/x-gcode" }, "overrides": { diff --git a/resources/definitions/dagoma_discoeasy200.def.json b/resources/definitions/dagoma_discoeasy200.def.json index 718c5b0873..8f1a792bc0 100755 --- a/resources/definitions/dagoma_discoeasy200.def.json +++ b/resources/definitions/dagoma_discoeasy200.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Dagoma", "manufacturer": "Dagoma", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2.png", "platform": "discoeasy200.stl", diff --git a/resources/definitions/delta_go.def.json b/resources/definitions/delta_go.def.json index ccb659f973..ed8e2dc773 100644 --- a/resources/definitions/delta_go.def.json +++ b/resources/definitions/delta_go.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Deltaprintr", "manufacturer": "Deltaprintr", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0], "platform": "" diff --git a/resources/definitions/deltabot.def.json b/resources/definitions/deltabot.def.json index 1132f7e7bb..cee5ab1be1 100644 --- a/resources/definitions/deltabot.def.json +++ b/resources/definitions/deltabot.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Danny Lu", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0] }, diff --git a/resources/definitions/easyarts_ares.def.json b/resources/definitions/easyarts_ares.def.json index 12273ed9ce..8d3e5338b6 100644 --- a/resources/definitions/easyarts_ares.def.json +++ b/resources/definitions/easyarts_ares.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "nliaudat", "manufacturer": "EasyArts (discontinued)", - "category": "Other", "file_formats": "text/x-gcode" }, "overrides": { diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 8474d38eb3..9ca3937123 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6,7 +6,7 @@ { "type": "machine", "author": "Ultimaker", - "category": "Ultimaker", + "category": "Other", "manufacturer": "Unknown", "setting_version": 1, "file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g", diff --git a/resources/definitions/folgertech_FT-5.def.json b/resources/definitions/folgertech_FT-5.def.json index a7709e9395..71c6987a1a 100644 --- a/resources/definitions/folgertech_FT-5.def.json +++ b/resources/definitions/folgertech_FT-5.def.json @@ -6,7 +6,6 @@ "visible": true, "author": "Jaime van Kessel & Paul Bussiere", "manufacturer": "Folger Tech", - "category": "Other", "file_formats": "text/x-gcode", "platform": "FT-5_build_plate.stl" }, diff --git a/resources/definitions/grr_neo.def.json b/resources/definitions/grr_neo.def.json index d09126f3e4..42c2e75319 100644 --- a/resources/definitions/grr_neo.def.json +++ b/resources/definitions/grr_neo.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Simon Cor", "manufacturer": "German RepRap", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker.png", "platform": "grr_neo_platform.stl" diff --git a/resources/definitions/helloBEEprusa.def.json b/resources/definitions/helloBEEprusa.def.json index 0fee04f2e9..660e182187 100755 --- a/resources/definitions/helloBEEprusa.def.json +++ b/resources/definitions/helloBEEprusa.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "BEEVERYCREATIVE", "manufacturer": "BEEVERYCREATIVE", - "category": "Other", "platform": "BEEVERYCREATIVE-helloBEEprusa.stl", "platform_offset": [-226, -75, -196], "file_formats": "text/x-gcode", diff --git a/resources/definitions/imade3d_jellybox.def.json b/resources/definitions/imade3d_jellybox.def.json index 86b34bfd5c..0c0f29c070 100644 --- a/resources/definitions/imade3d_jellybox.def.json +++ b/resources/definitions/imade3d_jellybox.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "IMADE3D", "manufacturer": "IMADE3D", - "category": "Other", "platform": "imade3d_jellybox_platform.stl", "platform_offset": [ 0, -0.3, 0], "file_formats": "text/x-gcode", diff --git a/resources/definitions/innovo_inventor.def.json b/resources/definitions/innovo_inventor.def.json index 4b169c5e31..5fc6c83ca2 100644 --- a/resources/definitions/innovo_inventor.def.json +++ b/resources/definitions/innovo_inventor.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Adam Rumjahn", "manufacturer": "Innovo", - "category": "Other", "file_formats": "text/x-gcode", "platform": "inventor_platform.stl", "platform_offset": [-180, -0.25, 160] diff --git a/resources/definitions/julia.def.json b/resources/definitions/julia.def.json index a0eda65bb7..fe10473596 100644 --- a/resources/definitions/julia.def.json +++ b/resources/definitions/julia.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Fracktal", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0] }, diff --git a/resources/definitions/kemiq_q2_beta.def.json b/resources/definitions/kemiq_q2_beta.def.json index 911fc584a9..d5bb8a895e 100644 --- a/resources/definitions/kemiq_q2_beta.def.json +++ b/resources/definitions/kemiq_q2_beta.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "KEMIQ", "manufacturer": "KEMIQ", - "category": "Other", "file_formats": "text/x-gcode", "platform": "kemiq_q2.stl", "has_machine_quality": true, diff --git a/resources/definitions/kemiq_q2_gama.def.json b/resources/definitions/kemiq_q2_gama.def.json index 4f803ecdb8..1cb1b45c21 100644 --- a/resources/definitions/kemiq_q2_gama.def.json +++ b/resources/definitions/kemiq_q2_gama.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "KEMIQ", "manufacturer": "KEMIQ", - "category": "Other", "file_formats": "text/x-gcode", "platform": "kemiq_q2.stl", "has_machine_quality": true, diff --git a/resources/definitions/kossel_mini.def.json b/resources/definitions/kossel_mini.def.json index e0e4665570..d915c148a3 100644 --- a/resources/definitions/kossel_mini.def.json +++ b/resources/definitions/kossel_mini.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Claudio Sampaio (Patola)", "manufacturer": "Other", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "platform": "kossel_platform.stl", diff --git a/resources/definitions/kossel_pro.def.json b/resources/definitions/kossel_pro.def.json index c9dbd63a50..58f1c7f94e 100644 --- a/resources/definitions/kossel_pro.def.json +++ b/resources/definitions/kossel_pro.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Chris Petersen", "manufacturer": "OpenBeam", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "platform": "kossel_pro_build_platform.stl", diff --git a/resources/definitions/kupido.def.json b/resources/definitions/kupido.def.json index 97be1a0152..8dec63f6ec 100644 --- a/resources/definitions/kupido.def.json +++ b/resources/definitions/kupido.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Kupido", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0] }, diff --git a/resources/definitions/m180.def.json b/resources/definitions/m180.def.json index 04859d87b9..1e8ac1767b 100644 --- a/resources/definitions/m180.def.json +++ b/resources/definitions/m180.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ruben Dulek", "manufacturer": "Malyan", - "category": "Other", "file_formats": "application/x3g" }, diff --git a/resources/definitions/makeR_pegasus.def.json b/resources/definitions/makeR_pegasus.def.json index 08f7702666..b164b2983f 100644 --- a/resources/definitions/makeR_pegasus.def.json +++ b/resources/definitions/makeR_pegasus.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "makeR", "manufacturer": "makeR", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "platform": "makeR_pegasus_platform.stl", diff --git a/resources/definitions/makeR_prusa_tairona_i3.def.json b/resources/definitions/makeR_prusa_tairona_i3.def.json index 612497d012..0e2320089f 100644 --- a/resources/definitions/makeR_prusa_tairona_i3.def.json +++ b/resources/definitions/makeR_prusa_tairona_i3.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "makeR", "manufacturer": "makeR", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "platform": "makeR_prusa_tairona_i3_platform.stl", diff --git a/resources/definitions/makeit_pro_l.def.json b/resources/definitions/makeit_pro_l.def.json index 30043cd906..36f7354b64 100644 --- a/resources/definitions/makeit_pro_l.def.json +++ b/resources/definitions/makeit_pro_l.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "NA", "manufacturer": "NA", - "category": "Other", "file_formats": "text/x-gcode", "has_materials": false, "supported_actions": [ "MachineSettingsAction", "UpgradeFirmware" ], diff --git a/resources/definitions/makeit_pro_m.def.json b/resources/definitions/makeit_pro_m.def.json index abaec4c81f..f45e0b6635 100644 --- a/resources/definitions/makeit_pro_m.def.json +++ b/resources/definitions/makeit_pro_m.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "NA", "manufacturer": "NA", - "category": "Other", "file_formats": "text/x-gcode", "has_materials": false, "supported_actions": [ "MachineSettingsAction", "UpgradeFirmware" ], diff --git a/resources/definitions/maker_starter.def.json b/resources/definitions/maker_starter.def.json index e4c09c75f2..8358ba0064 100644 --- a/resources/definitions/maker_starter.def.json +++ b/resources/definitions/maker_starter.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "tvlgiao", "manufacturer": "3DMaker", - "category": "Other", "file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj", "icon": "icon_ultimaker2.png", "platform": "makerstarter_platform.stl" diff --git a/resources/definitions/makerbotreplicator.def.json b/resources/definitions/makerbotreplicator.def.json index d762db67fc..7844976912 100644 --- a/resources/definitions/makerbotreplicator.def.json +++ b/resources/definitions/makerbotreplicator.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "MakerBot", - "category": "Other", "file_formats": "application/x3g", "platform_offset": [ 0, 0, 0] }, diff --git a/resources/definitions/mankati_fullscale_xt_plus.def.json b/resources/definitions/mankati_fullscale_xt_plus.def.json index c841859962..6c3115b1dc 100644 --- a/resources/definitions/mankati_fullscale_xt_plus.def.json +++ b/resources/definitions/mankati_fullscale_xt_plus.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "RBC", "manufacturer": "Mankati", - "category": "Other", "file_formats": "text/x-gcode", "platform": "mankati_fullscale_xt_plus_platform.stl" }, diff --git a/resources/definitions/mendel90.def.json b/resources/definitions/mendel90.def.json index fee035cdd9..60f3307758 100644 --- a/resources/definitions/mendel90.def.json +++ b/resources/definitions/mendel90.def.json @@ -7,7 +7,6 @@ { "visible": true, "author": "Bo Herrmannsen", - "category": "Other", "manufacturer": "Nophead", "file_formats": "text/x-gcode", "platform": "mendel90_platform.stl", diff --git a/resources/definitions/ord.def.json b/resources/definitions/ord.def.json index bedd8c3121..d9909c4f1f 100644 --- a/resources/definitions/ord.def.json +++ b/resources/definitions/ord.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "ORD Solutions", - "category": "Other", "file_formats": "text/x-gcode", "machine_extruder_trains": { diff --git a/resources/definitions/peopoly_moai.def.json b/resources/definitions/peopoly_moai.def.json index 4bbb033fb7..6b0e0ae547 100644 --- a/resources/definitions/peopoly_moai.def.json +++ b/resources/definitions/peopoly_moai.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "fieldOfView", "manufacturer": "Peopoly", - "category": "Other", "file_formats": "text/x-gcode", "has_machine_quality": true, "has_materials": false diff --git a/resources/definitions/printrbot_play.def.json b/resources/definitions/printrbot_play.def.json index bce67364f8..452b5e131f 100644 --- a/resources/definitions/printrbot_play.def.json +++ b/resources/definitions/printrbot_play.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Chris Pearson", "manufacturer": "Printrbot", - "category": "Other", "file_formats": "text/x-gcode", "platform": "printrbot_play.stl" }, diff --git a/resources/definitions/printrbot_play_heated.def.json b/resources/definitions/printrbot_play_heated.def.json index 878a4f358f..02157a0913 100644 --- a/resources/definitions/printrbot_play_heated.def.json +++ b/resources/definitions/printrbot_play_heated.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Chris Pearson", "manufacturer": "Printrbot", - "category": "Other", "file_formats": "text/x-gcode", "platform": "" }, diff --git a/resources/definitions/printrbot_simple.def.json b/resources/definitions/printrbot_simple.def.json index b0ece54f8f..eba47c88ae 100644 --- a/resources/definitions/printrbot_simple.def.json +++ b/resources/definitions/printrbot_simple.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Calvindog717", "manufacturer": "PrintrBot", - "category": "Other", "platform": "printrbot_simple_metal_platform.stl", "platform_offset": [0, -3.45, 0], "file_formats": "text/x-gcode" diff --git a/resources/definitions/printrbot_simple_extended.def.json b/resources/definitions/printrbot_simple_extended.def.json index 4cf9cb477c..b08e0c7d5d 100644 --- a/resources/definitions/printrbot_simple_extended.def.json +++ b/resources/definitions/printrbot_simple_extended.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "samsector", "manufacturer": "PrintrBot", - "category": "Other", "platform": "printrbot_simple_metal_upgrade.stl", "platform_offset": [0, -0.3, 0], "file_formats": "text/x-gcode" diff --git a/resources/definitions/prusa_i3.def.json b/resources/definitions/prusa_i3.def.json index 307246dbc9..4f0f5b13d7 100644 --- a/resources/definitions/prusa_i3.def.json +++ b/resources/definitions/prusa_i3.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Quillford", "manufacturer": "Prusajr", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "platform": "prusai3_platform.stl" diff --git a/resources/definitions/prusa_i3_mk2.def.json b/resources/definitions/prusa_i3_mk2.def.json index 02af039867..d4425728d4 100644 --- a/resources/definitions/prusa_i3_mk2.def.json +++ b/resources/definitions/prusa_i3_mk2.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Apsu", "manufacturer": "Prusa Research", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "platform": "prusai3_platform.stl", diff --git a/resources/definitions/prusa_i3_xl.def.json b/resources/definitions/prusa_i3_xl.def.json index 9d792f8249..e49838c95f 100644 --- a/resources/definitions/prusa_i3_xl.def.json +++ b/resources/definitions/prusa_i3_xl.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "guigashm", "manufacturer": "Prusajr", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2.png", "platform": "prusai3_xl_platform.stl" diff --git a/resources/definitions/punchtec_connect_xl.def.json b/resources/definitions/punchtec_connect_xl.def.json index ce4245a04f..16ba59dcb7 100644 --- a/resources/definitions/punchtec_connect_xl.def.json +++ b/resources/definitions/punchtec_connect_xl.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Punchtec", - "category": "Other", "file_formats": "text/x-gcode", "machine_extruder_trains": { diff --git a/resources/definitions/renkforce_rf100.def.json b/resources/definitions/renkforce_rf100.def.json index caf9b11860..55e764800a 100644 --- a/resources/definitions/renkforce_rf100.def.json +++ b/resources/definitions/renkforce_rf100.def.json @@ -5,7 +5,6 @@ "inherits": "fdmprinter", "metadata": { "author": "Simon Peter (based on RF100.ini by Conrad Electronic SE)", - "category": "Other", "file_formats": "text/x-gcode", "manufacturer": "Renkforce", "visible": true diff --git a/resources/definitions/rigid3d.def.json b/resources/definitions/rigid3d.def.json index b167646f6e..75e435f880 100644 --- a/resources/definitions/rigid3d.def.json +++ b/resources/definitions/rigid3d.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Rigid3D", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0] }, diff --git a/resources/definitions/rigid3d_3rdgen.def.json b/resources/definitions/rigid3d_3rdgen.def.json index e7c73ed54d..3191817ecd 100644 --- a/resources/definitions/rigid3d_3rdgen.def.json +++ b/resources/definitions/rigid3d_3rdgen.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Rigid3D", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0] }, diff --git a/resources/definitions/rigid3d_hobby.def.json b/resources/definitions/rigid3d_hobby.def.json index 09ba77f63c..02e3cc514c 100644 --- a/resources/definitions/rigid3d_hobby.def.json +++ b/resources/definitions/rigid3d_hobby.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Rigid3D", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0] }, diff --git a/resources/definitions/rigid3d_zero.def.json b/resources/definitions/rigid3d_zero.def.json index d5f8c1ef6a..7e99112621 100644 --- a/resources/definitions/rigid3d_zero.def.json +++ b/resources/definitions/rigid3d_zero.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Rigid3D", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0] }, diff --git a/resources/definitions/rigid3d_zero2.def.json b/resources/definitions/rigid3d_zero2.def.json index ddb98b0eb2..e2a77db895 100644 --- a/resources/definitions/rigid3d_zero2.def.json +++ b/resources/definitions/rigid3d_zero2.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Rigid3D", "manufacturer": "Rigid3D", - "category": "Other", "has_materials": false, "file_formats": "text/x-gcode", "platform": "rigid3d_zero2_platform.stl", diff --git a/resources/definitions/rigidbot.def.json b/resources/definitions/rigidbot.def.json index 1f63af8758..d183554947 100644 --- a/resources/definitions/rigidbot.def.json +++ b/resources/definitions/rigidbot.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "RBC", "manufacturer": "RigidBot", - "category": "Other", "file_formats": "text/x-gcode", "platform": "rigidbot_platform.stl" }, diff --git a/resources/definitions/rigidbot_big.def.json b/resources/definitions/rigidbot_big.def.json index 8ba52303dd..33c4fd3d27 100644 --- a/resources/definitions/rigidbot_big.def.json +++ b/resources/definitions/rigidbot_big.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "RBC", "manufacturer": "RigidBot", - "category": "Other", "file_formats": "text/x-gcode", "platform": "rigidbotbig_platform.stl" }, diff --git a/resources/definitions/robo_3d_r1.def.json b/resources/definitions/robo_3d_r1.def.json index b137b2054b..88b3fba01f 100644 --- a/resources/definitions/robo_3d_r1.def.json +++ b/resources/definitions/robo_3d_r1.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Robo 3D", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0] }, diff --git a/resources/definitions/tam.def.json b/resources/definitions/tam.def.json index 87dba5f027..93ebe43ea6 100644 --- a/resources/definitions/tam.def.json +++ b/resources/definitions/tam.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "typeamachines", "manufacturer": "typeamachines", - "category": "Other", "file_formats": "text/x-gcode", "platform": "tam_series1.stl", "platform_offset": [-580.0, -6.23, 253.5], diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index adf0ec8054..b11a84164a 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -6,6 +6,7 @@ "metadata": { "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", + "category": "Ultimaker", "visible": false }, "overrides": { diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index f1db386e0d..1931e5f8e3 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", - "category": "Ultimaker", "weight": 3, "file_formats": "text/x-gcode", "icon": "icon_ultimaker2.png", diff --git a/resources/definitions/ultimaker2_extended.def.json b/resources/definitions/ultimaker2_extended.def.json index 687369d559..b83f24ed3a 100644 --- a/resources/definitions/ultimaker2_extended.def.json +++ b/resources/definitions/ultimaker2_extended.def.json @@ -6,7 +6,6 @@ "metadata": { "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", - "category": "Ultimaker", "weight": 3, "file_formats": "text/x-gcode", "icon": "icon_ultimaker2.png", diff --git a/resources/definitions/ultimaker2_extended_plus.def.json b/resources/definitions/ultimaker2_extended_plus.def.json index 15256064f3..525aaf5b72 100644 --- a/resources/definitions/ultimaker2_extended_plus.def.json +++ b/resources/definitions/ultimaker2_extended_plus.def.json @@ -6,7 +6,6 @@ "metadata": { "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", - "category": "Ultimaker", "quality_definition": "ultimaker2_plus", "weight": 2, "file_formats": "text/x-gcode", diff --git a/resources/definitions/ultimaker2_go.def.json b/resources/definitions/ultimaker2_go.def.json index 0803a91571..abf10ef680 100644 --- a/resources/definitions/ultimaker2_go.def.json +++ b/resources/definitions/ultimaker2_go.def.json @@ -6,7 +6,6 @@ "metadata": { "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", - "category": "Ultimaker", "weight": 3, "file_formats": "text/x-gcode", "icon": "icon_ultimaker2.png", diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index ef5420e77a..7214e6b7fe 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -6,7 +6,6 @@ "metadata": { "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", - "category": "Ultimaker", "weight": 1, "file_formats": "text/x-gcode", "platform": "ultimaker2_platform.obj", diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index ba1caeddb5..6221fa6228 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -6,7 +6,6 @@ "metadata": { "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", - "category": "Ultimaker", "visible": true, "file_formats": "text/x-gcode", "platform": "ultimaker3_platform.obj", diff --git a/resources/definitions/ultimaker3_extended.def.json b/resources/definitions/ultimaker3_extended.def.json index 7cf90a1a90..e47ccf4ba3 100644 --- a/resources/definitions/ultimaker3_extended.def.json +++ b/resources/definitions/ultimaker3_extended.def.json @@ -6,7 +6,6 @@ "metadata": { "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", - "category": "Ultimaker", "quality_definition": "ultimaker3", "visible": true, "file_formats": "text/x-gcode", diff --git a/resources/definitions/ultimaker_original.def.json b/resources/definitions/ultimaker_original.def.json index 82f309cc13..ef2f5fae5c 100644 --- a/resources/definitions/ultimaker_original.def.json +++ b/resources/definitions/ultimaker_original.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", - "category": "Ultimaker", "weight": 4, "file_formats": "text/x-gcode", "icon": "icon_ultimaker.png", diff --git a/resources/definitions/ultimaker_original_dual.def.json b/resources/definitions/ultimaker_original_dual.def.json index 38dd2f0a04..8745434360 100644 --- a/resources/definitions/ultimaker_original_dual.def.json +++ b/resources/definitions/ultimaker_original_dual.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", - "category": "Ultimaker", "weight": 4, "file_formats": "text/x-gcode", "icon": "icon_ultimaker.png", diff --git a/resources/definitions/ultimaker_original_plus.def.json b/resources/definitions/ultimaker_original_plus.def.json index 013e8bd717..8e401d550c 100644 --- a/resources/definitions/ultimaker_original_plus.def.json +++ b/resources/definitions/ultimaker_original_plus.def.json @@ -6,7 +6,6 @@ "metadata": { "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", - "category": "Ultimaker", "weight": 4, "file_formats": "text/x-gcode", "icon": "icon_ultimaker.png", diff --git a/resources/definitions/uniqbot_one.def.json b/resources/definitions/uniqbot_one.def.json index 7ec5f162ea..410f7e57a6 100644 --- a/resources/definitions/uniqbot_one.def.json +++ b/resources/definitions/uniqbot_one.def.json @@ -6,7 +6,6 @@ "metadata": { "author": "Unimatech", "manufacturer": "Unimatech", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2.png" }, diff --git a/resources/definitions/vertex_k8400.def.json b/resources/definitions/vertex_k8400.def.json index ac7ccd5e93..a23e1fc893 100644 --- a/resources/definitions/vertex_k8400.def.json +++ b/resources/definitions/vertex_k8400.def.json @@ -6,7 +6,6 @@ "metadata": { "visible": true, "manufacturer": "Velleman", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "platform": "Vertex_build_panel.stl", diff --git a/resources/definitions/vertex_k8400_dual.def.json b/resources/definitions/vertex_k8400_dual.def.json index f6b3d6cfbb..9e24bab5d3 100644 --- a/resources/definitions/vertex_k8400_dual.def.json +++ b/resources/definitions/vertex_k8400_dual.def.json @@ -6,7 +6,6 @@ "metadata": { "visible": true, "manufacturer": "Velleman", - "category": "Other", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "platform": "Vertex_build_panel.stl", diff --git a/resources/definitions/zone3d_printer.def.json b/resources/definitions/zone3d_printer.def.json index 1663ffdf2b..a1ed56c7ef 100644 --- a/resources/definitions/zone3d_printer.def.json +++ b/resources/definitions/zone3d_printer.def.json @@ -7,7 +7,6 @@ "visible": true, "author": "Ultimaker", "manufacturer": "Unknown", - "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0] }, From 90583bd56d82d48e6358245940307aab65ced90d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 25 Aug 2017 09:22:07 +0200 Subject: [PATCH 52/54] Replace tabs with spaces And fix the alignment while we're at it. --- resources/definitions/delta_go.def.json | 66 ++++++++++++------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/resources/definitions/delta_go.def.json b/resources/definitions/delta_go.def.json index ed8e2dc773..36e0787039 100644 --- a/resources/definitions/delta_go.def.json +++ b/resources/definitions/delta_go.def.json @@ -4,38 +4,38 @@ "version": 2, "inherits": "fdmprinter", "metadata": { - "visible": true, - "author": "Deltaprintr", - "manufacturer": "Deltaprintr", - "file_formats": "text/x-gcode", - "platform_offset": [ 0, 0, 0], - "platform": "" - }, + "visible": true, + "author": "Deltaprintr", + "manufacturer": "Deltaprintr", + "file_formats": "text/x-gcode", + "platform_offset": [0, 0, 0], + "platform": "" + }, "overrides": { - "machine_name": { "default_value": "Delta Go" }, - "material_diameter": { "default_value": 1.75 }, - "default_material_print_temperature": { "default_value": 210 }, - "speed_travel": { "default_value": 150 }, - "prime_tower_size": { "default_value": 8.66 }, - "infill_sparse_density": { "default_value": 10 }, - "speed_wall_x": { "default_value": 30 }, - "speed_wall_0": { "default_value": 30 }, - "speed_topbottom": { "default_value": 20 }, - "layer_height": { "default_value": 0.15 }, - "speed_print": { "default_value": 30 }, - "machine_heated_bed": { "default_value": false }, - "machine_center_is_zero": { "default_value": true }, - "machine_height": { "default_value": 154 }, - "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "machine_depth": { "default_value": 115 }, - "machine_width": { "default_value": 115 }, - "raft_airgap": { "default_value": 0.15 }, - "retraction_hop_enabled": { "value": "True" }, - "retraction_amount": { "default_value": 4.1 }, - "retraction_speed": { "default_value": 500 }, - "retraction_hop": { "value": "0.2" }, - "retraction_hop_only_when_collides": { "value": "True" }, - "brim_width": { "value": "5" }, - "machine_shape": { "default_value": "elliptic"} - } + "machine_name": { "default_value": "Delta Go" }, + "material_diameter": { "default_value": 1.75 }, + "default_material_print_temperature": { "default_value": 210 }, + "speed_travel": { "default_value": 150 }, + "prime_tower_size": { "default_value": 8.66 }, + "infill_sparse_density": { "default_value": 10 }, + "speed_wall_x": { "default_value": 30 }, + "speed_wall_0": { "default_value": 30 }, + "speed_topbottom": { "default_value": 20 }, + "layer_height": { "default_value": 0.15 }, + "speed_print": { "default_value": 30 }, + "machine_heated_bed": { "default_value": false }, + "machine_center_is_zero": { "default_value": true }, + "machine_height": { "default_value": 154 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_depth": { "default_value": 115 }, + "machine_width": { "default_value": 115 }, + "raft_airgap": { "default_value": 0.15 }, + "retraction_hop_enabled": { "value": "True" }, + "retraction_amount": { "default_value": 4.1 }, + "retraction_speed": { "default_value": 500 }, + "retraction_hop": { "value": "0.2" }, + "retraction_hop_only_when_collides": { "value": "True" }, + "brim_width": { "value": "5" }, + "machine_shape": { "default_value": "elliptic"} + } } From 9cea356a183750bc933ccd714506522d96af5b25 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 25 Aug 2017 09:22:47 +0200 Subject: [PATCH 53/54] Replace tabs with spaces As per our code style standard. --- resources/definitions/makeR_prusa_tairona_i3.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/makeR_prusa_tairona_i3.def.json b/resources/definitions/makeR_prusa_tairona_i3.def.json index 0e2320089f..caccb2ebe6 100644 --- a/resources/definitions/makeR_prusa_tairona_i3.def.json +++ b/resources/definitions/makeR_prusa_tairona_i3.def.json @@ -10,7 +10,7 @@ "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "platform": "makeR_prusa_tairona_i3_platform.stl", - "platform_offset": [-2,0,0] + "platform_offset": [-2, 0, 0] }, "overrides": { From 2ac67a7d348edd0877875cca8fa5461bf471e33a Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Sun, 27 Aug 2017 22:04:46 +0200 Subject: [PATCH 54/54] Fix setting the Gantry height setting in Machine Settings --- plugins/MachineSettingsAction/MachineSettingsAction.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.qml b/plugins/MachineSettingsAction/MachineSettingsAction.qml index b5d6a6e649..40d3b5a960 100644 --- a/plugins/MachineSettingsAction/MachineSettingsAction.qml +++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml @@ -233,6 +233,7 @@ Cura.MachineAction property string label: catalog.i18nc("@label", "Gantry height") property string unit: catalog.i18nc("@label", "mm") property string tooltip: catalog.i18nc("@tooltip", "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\".") + property bool forceUpdateOnChange: true } Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height }