Merge branch '3.2' of github.com:Ultimaker/Cura into 3.2

This commit is contained in:
Mark 2018-01-18 16:28:51 +01:00
commit 74e9bf051c
4 changed files with 35 additions and 13 deletions

View file

@ -24,6 +24,7 @@ from cura.Settings.ExtruderStack import ExtruderStack
from cura.Settings.GlobalStack import GlobalStack
from cura.Settings.CuraContainerStack import _ContainerIndexes
from cura.QualityManager import QualityManager
from cura.CuraApplication import CuraApplication
from configparser import ConfigParser
import zipfile
@ -750,8 +751,16 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
# If not extruder stacks were saved in the project file (pre 3.1) create one manually
# We re-use the container registry's addExtruderStackForSingleExtrusionMachine method for this
if not extruder_stacks:
stack = self._container_registry.addExtruderStackForSingleExtrusionMachine(global_stack, "fdmextruder")
if self._resolve_strategies["machine"] == "new":
stack = self._container_registry.addExtruderStackForSingleExtrusionMachine(global_stack, "fdmextruder")
else:
stack = global_stack.extruders.get("0")
if not stack:
# this should not happen
Logger.log("e", "Cannot find any extruder in an existing global stack [%s].", global_stack.getId())
if stack:
if global_stack.quality.getId() in ("empty", "empty_quality"):
stack.quality = empty_quality_container
if self._resolve_strategies["machine"] == "override":
# in case the extruder is newly created (for a single-extrusion machine), we need to override
# the existing extruder stack.
@ -991,6 +1000,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
for stack in extruder_stacks:
stack.setNextStack(global_stack)
stack.containersChanged.emit(stack.getTop())
else:
if quality_has_been_changed:
CuraApplication.getInstance().getMachineManager().activeQualityChanged.emit()
# Actually change the active machine.
Application.getInstance().setGlobalContainerStack(global_stack)
@ -1040,13 +1052,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
# 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
best_matching_old_material_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:
if len(old_parent_material_id) < best_matching_old_material_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_prefix_length = len(old_parent_material_id)
best_matching_old_material_id = old_parent_material_id
if best_matching_old_material_id is None:

View file

@ -426,6 +426,13 @@ class CuraEngineBackend(QObject, Backend):
if not isinstance(source, SceneNode):
return
# This case checks if the source node is a node that contains a GCode. In this case the
# cached layer data is removed so the previous data is not rendered - CURA-4821
if source.callDecoration("isBlockSlicing") and source.callDecoration("getLayerData"):
if self._stored_optimized_layer_data:
print(self._stored_optimized_layer_data)
del self._stored_optimized_layer_data[source.callDecoration("getBuildPlateNumber")]
build_plate_changed = set()
source_build_plate_number = source.callDecoration("getBuildPlateNumber")
if source == self._scene.getRoot():

View file

@ -286,7 +286,10 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
gcode_list = getattr(Application.getInstance().getController().getScene(), "gcode_dict")[output_build_plate_number]
if not gcode_list: # Empty build plate
Logger.log("d", "Skipping empty job (build plate number %d).", output_build_plate_number)
return self.sendPrintJob()
if self._job_list:
return self.sendPrintJob()
else:
return
self._send_gcode_start = time.time()
Logger.log("d", "Sending print job [%s] to host, build plate [%s]..." % (file_name, output_build_plate_number))

View file

@ -1168,6 +1168,14 @@
"limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true
},
"optimize_wall_printing_order":
{
"label": "Optimize Wall Printing Order",
"description": "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization.",
"type": "bool",
"default_value": false,
"settable_per_mesh": true
},
"outer_inset_first":
{
"label": "Outer Before Inner Walls",
@ -5338,14 +5346,6 @@
"description": "experimental!",
"children":
{
"optimize_wall_printing_order":
{
"label": "Optimize Wall Printing Order",
"description": "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization.",
"type": "bool",
"default_value": false,
"settable_per_mesh": true
},
"support_skip_some_zags":
{
"label": "Break Up Support In Chunks",