diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 2cf589bfa4..46d9a61254 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -264,10 +264,12 @@ class PrintInformation(QObject): def jobName(self): return self._job_name - def _updateJobName(self): + def _updateJobName(self, empty_name = False): # if the project name is set, we use the project name as the job name, so the job name should not get updated # if a model file is loaded after that. if self._project_name != "": + if empty_name: + self._project_name = "" return if self._base_name == "": @@ -304,12 +306,13 @@ class PrintInformation(QObject): name = os.path.splitext(name)[0] # name is "" when I first had some meshes and afterwards I deleted them so the naming should start again - if name == "" or (self._base_name == "" and self._base_name != name): + is_empty = name == "" + if is_empty or (self._base_name == "" and self._base_name != name): # remove ".curaproject" suffix from (imported) the file name if name.endswith(".curaproject"): name = name[:name.rfind(".curaproject")] self._base_name = name - self._updateJobName() + self._updateJobName(empty_name = is_empty) ## Created an acronymn-like abbreviated machine name from the currently active machine name # Called each time the global stack is switched diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index a5a1a5b584..d35df967b2 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -301,6 +301,26 @@ class CuraEngineBackend(QObject, Backend): self.backendStateChange.emit(BackendState.NotStarted) return + elif job.getResult() == StartSliceJob.StartJobResult.ObjectSettingError: + errors = {} + for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): + stack = node.callDecoration("getStack") + if not stack: + continue + for key in stack.getErrorKeys(): + definition = self._global_container_stack.getBottom().findDefinitions(key = key) + if not definition: + Logger.log("e", "When checking settings for errors, unable to find definition for key {key} in per-object stack.".format(key = key)) + continue + definition = definition[0] + errors[key] = definition.label + error_labels = ", ".join(errors.values()) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}").format(error_labels = error_labels), + title = catalog.i18nc("@info:title", "Unable to slice")) + self._error_message.show() + self.backendStateChange.emit(BackendState.Error) + return + if job.getResult() == StartSliceJob.StartJobResult.BuildPlateError: if Application.getInstance().platformActivity: self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because the prime tower or prime position(s) are invalid."), diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 196b18e094..b922baea52 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -26,6 +26,7 @@ class StartJobResult(IntEnum): NothingToSlice = 4 MaterialIncompatible = 5 BuildPlateError = 6 + ObjectSettingError = 7 #When an error occurs in per-object settings. ## Formatter class that handles token expansion in start/end gcod @@ -105,7 +106,7 @@ class StartSliceJob(Job): continue if self._checkStackForErrors(node.callDecoration("getStack")): - self.setResult(StartJobResult.SettingError) + self.setResult(StartJobResult.ObjectSettingError) return with self._scene.getSceneLock(): diff --git a/resources/definitions/cartesio.def.json b/resources/definitions/cartesio.def.json index 45b0111209..5d6a0fca16 100644 --- a/resources/definitions/cartesio.def.json +++ b/resources/definitions/cartesio.def.json @@ -47,21 +47,24 @@ "material_bed_temp_wait": { "default_value": false }, "prime_tower_enable": { "default_value": true }, "prime_tower_wall_thickness": { "resolve": 0.7 }, - "prime_tower_position_x": { "value": "50" }, - "prime_tower_position_y": { "value": "150" }, + "prime_tower_size": { "value": 24.0 }, + "prime_tower_position_x": { "value": 125 }, + "prime_tower_position_y": { "value": 70 }, "prime_blob_enable": { "default_value": false }, "machine_max_feedrate_z": { "default_value": 20 }, "machine_disallowed_areas": { "default_value": [ [[215, 135], [-215, 135], [-215, 75], [215, 75]] ]}, "machine_start_gcode": { - "default_value": "\nM92 E159 ;2288 for V5 extruder\n\nM104 S120 T1\nM104 S120 T2\nM104 S120 T3\n\nG21\nG90\nM42 S255 P13 ;chamber lights\nM42 S255 P12 ;fume extraction\nM204 S300 ;default acceleration\nM205 X10 ;default jerk\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\nG1 Z10 F600\nG1 X70 Y20 F9000;go to wipe point\n\nM190 S{material_bed_temperature_layer_0}\n\nM117 Heating for 50 sec.\nG4 S20\nM117 Heating for 30 sec.\nG4 S20\nM117 Heating for 10 sec.\nM300 S1200 P1000\nG4 S9\n\nM117 purging nozzle....\nT0\nG92 E0;set E\nG1 E10 F100\nG92 E0\nG1 E-1 F600\n\nM117 wiping nozzle....\nG1 X1 Y24 F3000\nG1 X70 F9000\nG1 Z10 F900\n\nM104 S21 T1\nM104 S21 T2\nM104 S21 T3\n\nM117 Printing .....\n" + "default_value": "\nM92 E159 ;2288 for V5 extruder\n\nM140 S{material_bed_temperature_layer_0}\nM104 S120 T1\nM104 S120 T2\nM104 S120 T3\n\nG21\nG90\nM42 S255 P13 ;chamber lights\nM42 S255 P12 ;fume extraction\nM204 S300 ;default acceleration\nM205 X10 ;default jerk\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\nG1 Z10 F600\nG1 X70 Y20 F9000;go to wipe point\n\nM190 S{material_bed_temperature_layer_0}\n\nM117 Heating for 50 sec.\nG4 S20\nM117 Heating for 30 sec.\nG4 S20\nM117 Heating for 10 sec.\nM300 S1200 P1000\nG4 S9\n\nM117 purging nozzle....\nT0\nG92 E0;set E\nG1 E10 F100\nG92 E0\nG1 E-1 F600\n\nM117 wiping nozzle....\nG1 X1 Y24 F3000\nG1 X70 F9000\nG1 Z10 F900\n\nM104 S21 T1\nM104 S21 T2\nM104 S21 T3\n\nM117 Printing .....\n" }, "machine_end_gcode": { "default_value": "; -- END GCODE --\nM117 cooling down....\nM106 S255\nM140 S5\nM104 S5 T0\nM104 S5 T1\nM104 S5 T2\nM104 S5 T3\n\nG91\nG1 Z1 F900\nG90\n\nG1 X20.0 Y260.0 F6000\nG4 S7\nM84\nG4 S90\nM107\nM42 P12 S0\nM42 P13 S0\nM84\nT0\nM117 Finished.\n; -- end of GCODE --" }, "layer_height": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, "layer_height_0": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, + "retraction_extra_prime_amount": { "minimum_value_warning": "-2.0" }, + "optimize_wall_printing_order": { "default_value": true }, "machine_nozzle_heat_up_speed": {"default_value": 20}, "machine_nozzle_cool_down_speed": {"default_value": 20}, "machine_min_cool_heat_time_window": {"default_value": 5} diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index bf65baf1d9..0fedc4accc 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4945,6 +4945,18 @@ "default_value": false, "settable_per_mesh": true }, + "meshfix_maximum_resolution": + { + "label": "Maximum Resolution", + "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", + "type": "float", + "unit": "mm", + "default_value": 0.01, + "minimum_value": "0.001", + "minimum_value_warning": "0.005", + "maximum_value_warning": "0.1", + "settable_per_mesh": true + }, "multiple_mesh_overlap": { "label": "Merged Meshes Overlap", diff --git a/resources/extruders/cartesio_extruder_0.def.json b/resources/extruders/cartesio_extruder_0.def.json index f1423f3530..5558d9325e 100644 --- a/resources/extruders/cartesio_extruder_0.def.json +++ b/resources/extruders/cartesio_extruder_0.def.json @@ -1,7 +1,7 @@ { "id": "cartesio_extruder_0", "version": 2, - "name": "Extruder 0", + "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { "machine": "cartesio", diff --git a/resources/extruders/cartesio_extruder_1.def.json b/resources/extruders/cartesio_extruder_1.def.json index 402553ff96..f8350f8091 100644 --- a/resources/extruders/cartesio_extruder_1.def.json +++ b/resources/extruders/cartesio_extruder_1.def.json @@ -1,7 +1,7 @@ { "id": "cartesio_extruder_1", "version": 2, - "name": "Extruder 1", + "name": "Extruder 2", "inherits": "fdmextruder", "metadata": { "machine": "cartesio", diff --git a/resources/extruders/cartesio_extruder_2.def.json b/resources/extruders/cartesio_extruder_2.def.json index e8f47772cb..bfc10e75c3 100644 --- a/resources/extruders/cartesio_extruder_2.def.json +++ b/resources/extruders/cartesio_extruder_2.def.json @@ -1,7 +1,7 @@ { "id": "cartesio_extruder_2", "version": 2, - "name": "Extruder 2", + "name": "Extruder 3", "inherits": "fdmextruder", "metadata": { "machine": "cartesio", diff --git a/resources/extruders/cartesio_extruder_3.def.json b/resources/extruders/cartesio_extruder_3.def.json index a3e435470a..f0be53e564 100644 --- a/resources/extruders/cartesio_extruder_3.def.json +++ b/resources/extruders/cartesio_extruder_3.def.json @@ -1,7 +1,7 @@ { "id": "cartesio_extruder_3", "version": 2, - "name": "Extruder 3", + "name": "Extruder 4", "inherits": "fdmextruder", "metadata": { "machine": "cartesio", diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg index 2f401556d4..ff6547dd91 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg index 225b0ec5cf..f3faa9c129 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg index 53e61a81a2..3aa808fab5 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg index e7b179dfe1..f9be12da3a 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg index baa3a1fdce..597187437b 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 30 +speed_print = 15 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg index 81f939f800..6d1fa196ec 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 25 +speed_print = 15 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg index 41b2cc70f0..c570b65350 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg index e5ae6aff1d..0d73b24197 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2)