diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index b0cd25a556..b431b5067c 100644 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -62,11 +62,11 @@ class CuraEngineBackend(Backend): self._change_timer.setSingleShot(True) self._change_timer.timeout.connect(self.slice) - self._message_handlers[Cura_pb2.SlicedObjectList] = self._onSlicedObjectListMessage - self._message_handlers[Cura_pb2.Progress] = self._onProgressMessage - self._message_handlers[Cura_pb2.GCodeLayer] = self._onGCodeLayerMessage - self._message_handlers[Cura_pb2.GCodePrefix] = self._onGCodePrefixMessage - self._message_handlers[Cura_pb2.ObjectPrintTime] = self._onObjectPrintTimeMessage + self._message_handlers["cura.proto.SlicedObjectList"] = self._onSlicedObjectListMessage + self._message_handlers["cura.proto.Progress"] = self._onProgressMessage + self._message_handlers["cura.proto.GCodeLayer"] = self._onGCodeLayerMessage + self._message_handlers["cura.proto.GCodePrefix"] = self._onGCodePrefixMessage + self._message_handlers["cura.proto.ObjectPrintTime"] = self._onObjectPrintTimeMessage self._slicing = False self._restart = False diff --git a/plugins/CuraEngineBackend/ProcessSlicedObjectListJob.py b/plugins/CuraEngineBackend/ProcessSlicedObjectListJob.py index c802ca343b..09acab8a7e 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedObjectListJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedObjectListJob.py @@ -55,21 +55,27 @@ class ProcessSlicedObjectListJob(Job): layer_data = LayerData.LayerData() layer_count = 0 - for object in self._message.objects: - layer_count += len(object.layers) + for i in range(self._message.repeatedMessageCount("objects")): + layer_count += self._message.getRepeatedMessage("objects", i).repeatedMessageCount("layers") current_layer = 0 - for object in self._message.objects: + for i in range(self._message.repeatedMessageCount("objects")): + object = self._message.getRepeatedMessage("objects", i) try: node = object_id_map[object.id] except KeyError: continue - for layer in object.layers: + for l in range(object.repeatedMessageCount("layers")): + layer = object.getRepeatedMessage("layers", i) + layer_data.addLayer(layer.id) layer_data.setLayerHeight(layer.id, layer.height) layer_data.setLayerThickness(layer.id, layer.thickness) - for polygon in layer.polygons: + + for p in range(layer.repeatedMessageCount("polygons")): + polygon = layer.getRepeatedMessage("polygons", i) + points = numpy.fromstring(polygon.points, dtype="i8") # Convert bytearray to numpy array points = points.reshape((-1,2)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly. points = numpy.asarray(points, dtype=numpy.float32) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 4d94e5e8a9..156a859ade 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -94,7 +94,8 @@ class StartSliceJob(Job): verts = numpy.array(mesh_data.getVertices()) verts[:,[1,2]] = verts[:,[2,1]] verts[:,1] *= -1 - obj.vertices = verts.tostring() + + obj.vertices = verts self._handlePerObjectSettings(object, obj)