diff --git a/CuraEngineBackend.py b/CuraEngineBackend.py index 5583a3270e..06d61c62dd 100644 --- a/CuraEngineBackend.py +++ b/CuraEngineBackend.py @@ -30,6 +30,8 @@ class CuraEngineBackend(Backend): self._message_handlers[Cura_pb2.GCode] = self._onGCodeMessage self._message_handlers[Cura_pb2.ObjectPrintTime] = self._onObjectPrintTimeMessage + self._center = None + def getEngineCommand(self): return [Preferences.getPreference("BackendLocation"), '--connect', "127.0.0.1:{0}".format(self._port)] @@ -43,7 +45,7 @@ class CuraEngineBackend(Backend): self._onChanged() def _onSlicedObjectListMessage(self, message): - job = ProcessSlicedObjectListJob.ProcessSlicedObjectListJob(message) + job = ProcessSlicedObjectListJob.ProcessSlicedObjectListJob(message, self._center) job.start() def _onProgressMessage(self, message): @@ -128,6 +130,8 @@ class CuraEngineBackend(Backend): posZ.value = str(int(0)).encode('utf-8') self._socket.sendMessage(posmsg) + self._center = center + self._socket.sendMessage(msg) self._changeTimer = None diff --git a/ProcessSlicedObjectListJob.py b/ProcessSlicedObjectListJob.py index f92832e234..2819153758 100644 --- a/ProcessSlicedObjectListJob.py +++ b/ProcessSlicedObjectListJob.py @@ -10,10 +10,11 @@ import numpy import struct class ProcessSlicedObjectListJob(Job): - def __init__(self, message): + def __init__(self, message, center): super().__init__(description = 'Processing sliced object') self._message = message self._scene = Application.getInstance().getController().getScene() + self._center = center def run(self): objectIdMap = {} @@ -21,6 +22,8 @@ class ProcessSlicedObjectListJob(Job): if type(node) is SceneNode and node.getMeshData(): objectIdMap[id(node)] = node + layerHeight = Application.getInstance().getMachineSettings().getSettingValueByKey('layer_height') + for object in self._message.objects: mesh = objectIdMap[object.id].getMeshData() @@ -31,7 +34,9 @@ class ProcessSlicedObjectListJob(Job): 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) points /= 1000 - points = numpy.insert(points, 1, layer.id / 10, axis = 1) + points = numpy.insert(points, 1, layer.id * layerHeight, axis = 1) + points[:,0] -= self._center.x + points[:,2] -= self._center.z layerData.addPolygon(layer.id, polygon.type, points) mesh.layerData = layerData