diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 46d4270da7..14b09c4902 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1428,7 +1428,7 @@ class CuraApplication(QtApplication): self.fileLoaded.emit(filename) arrange_objects_on_load = Preferences.getInstance().getValue("cura/arrange_objects_on_load") - target_build_plate = self.activeBuildPlate if arrange_objects_on_load else -1 + target_build_plate = self.getBuildPlateModel().activeBuildPlate if arrange_objects_on_load else -1 for original_node in nodes: node = CuraSceneNode() # We want our own CuraSceneNode diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 6bf35f49c7..bbc5cd4329 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -165,13 +165,16 @@ class PrintInformation(QObject): def materialNames(self): return self._material_names[self._active_build_plate] + def printTimes(self): + return self._print_time_message_values[self._active_build_plate] + def _onPrintDurationMessage(self, build_plate_number, print_time, material_amounts): Logger.log("d", " ### print duration message for build plate %s", build_plate_number) self._updateTotalPrintTimePerFeature(build_plate_number, print_time) self.currentPrintTimeChanged.emit() self._material_amounts = material_amounts - self._calculateInformation() + self._calculateInformation(build_plate_number) def _updateTotalPrintTimePerFeature(self, build_plate_number, print_time): total_estimated_time = 0 @@ -192,16 +195,16 @@ class PrintInformation(QObject): self._current_print_time[build_plate_number] = Duration(None, self) self._current_print_time[build_plate_number].setDuration(total_estimated_time) - def _calculateInformation(self): + def _calculateInformation(self, build_plate_number): if Application.getInstance().getGlobalContainerStack() is None: return # Material amount is sent as an amount of mm^3, so calculate length from that radius = Application.getInstance().getGlobalContainerStack().getProperty("material_diameter", "value") / 2 - self._material_lengths[self._active_build_plate] = [] - self._material_weights[self._active_build_plate] = [] - self._material_costs[self._active_build_plate] = [] - self._material_names[self._active_build_plate] = [] + self._material_lengths[build_plate_number] = [] + self._material_weights[build_plate_number] = [] + self._material_costs[build_plate_number] = [] + self._material_names[build_plate_number] = [] material_preference_values = json.loads(Preferences.getInstance().getValue("cura/material_settings")) @@ -239,10 +242,10 @@ class PrintInformation(QObject): length = round((amount / (math.pi * radius ** 2)) / 1000, 2) else: length = 0 - self._material_weights[self._active_build_plate].append(weight) - self._material_lengths[self._active_build_plate].append(length) - self._material_costs[self._active_build_plate].append(cost) - self._material_names[self._active_build_plate].append(material_name) + self._material_weights[build_plate_number].append(weight) + self._material_lengths[build_plate_number].append(length) + self._material_costs[build_plate_number].append(cost) + self._material_names[build_plate_number].append(material_name) self.materialLengthsChanged.emit() self.materialWeightsChanged.emit() @@ -253,7 +256,8 @@ class PrintInformation(QObject): if preference != "cura/material_settings": return - self._calculateInformation() + for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + self._calculateInformation(build_plate_number) def _onActiveMaterialChanged(self): if self._active_material_container: @@ -284,7 +288,8 @@ class PrintInformation(QObject): self.currentPrintTimeChanged.emit() def _onMaterialMetaDataChanged(self, *args, **kwargs): - self._calculateInformation() + for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + self._calculateInformation(build_plate_number) @pyqtSlot(str) def setJobName(self, name): diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 859578c3e9..08c89c56a6 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -433,7 +433,6 @@ class CuraEngineBackend(QObject, Backend): self._postponed_scene_change_sources.append(source) return - Logger.log("d", " going to reslice: %s", build_plate_changed) self.stopSlicing() for build_plate_number in build_plate_changed: if build_plate_number not in self._build_plates_to_be_sliced: diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py index 3860590ef7..192354d947 100644 --- a/plugins/GCodeWriter/GCodeWriter.py +++ b/plugins/GCodeWriter/GCodeWriter.py @@ -59,8 +59,9 @@ class GCodeWriter(MeshWriter): Logger.log("e", "GCode Writer does not support non-text mode.") return False + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate scene = Application.getInstance().getController().getScene() - gcode_list = getattr(scene, "gcode_list") + gcode_list = getattr(scene, "gcode_list")[active_build_plate] if gcode_list: for gcode in gcode_list: stream.write(gcode) diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 0514c4dacf..a72c056bc9 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -162,7 +162,7 @@ class SliceInfo(Extension): data["models"].append(model) - print_times = print_information._print_time_message_values + print_times = print_information.printTimes() data["print_times"] = {"travel": int(print_times["travel"].getDisplayString(DurationFormat.Format.Seconds)), "support": int(print_times["support"].getDisplayString(DurationFormat.Format.Seconds)), "infill": int(print_times["infill"].getDisplayString(DurationFormat.Format.Seconds)),