Merge branch '3.1' into print_simulation_view

This commit is contained in:
Aleksei S 2017-11-20 14:32:22 +01:00
commit 9337cc8a7f
17 changed files with 58 additions and 19 deletions

View file

@ -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

View file

@ -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."),

View file

@ -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():

View file

@ -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}

View file

@ -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",

View file

@ -1,7 +1,7 @@
{
"id": "cartesio_extruder_0",
"version": 2,
"name": "Extruder 0",
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "cartesio",

View file

@ -1,7 +1,7 @@
{
"id": "cartesio_extruder_1",
"version": 2,
"name": "Extruder 1",
"name": "Extruder 2",
"inherits": "fdmextruder",
"metadata": {
"machine": "cartesio",

View file

@ -1,7 +1,7 @@
{
"id": "cartesio_extruder_2",
"version": 2,
"name": "Extruder 2",
"name": "Extruder 3",
"inherits": "fdmextruder",
"metadata": {
"machine": "cartesio",

View file

@ -1,7 +1,7 @@
{
"id": "cartesio_extruder_3",
"version": 2,
"name": "Extruder 3",
"name": "Extruder 4",
"inherits": "fdmextruder",
"metadata": {
"machine": "cartesio",

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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)