mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-03 01:04:35 +08:00
Account for center and proper layer height when displaying the sliced layers
This commit is contained in:
parent
6f825598c1
commit
645a179bc3
@ -30,6 +30,8 @@ class CuraEngineBackend(Backend):
|
|||||||
self._message_handlers[Cura_pb2.GCode] = self._onGCodeMessage
|
self._message_handlers[Cura_pb2.GCode] = self._onGCodeMessage
|
||||||
self._message_handlers[Cura_pb2.ObjectPrintTime] = self._onObjectPrintTimeMessage
|
self._message_handlers[Cura_pb2.ObjectPrintTime] = self._onObjectPrintTimeMessage
|
||||||
|
|
||||||
|
self._center = None
|
||||||
|
|
||||||
def getEngineCommand(self):
|
def getEngineCommand(self):
|
||||||
return [Preferences.getPreference("BackendLocation"), '--connect', "127.0.0.1:{0}".format(self._port)]
|
return [Preferences.getPreference("BackendLocation"), '--connect', "127.0.0.1:{0}".format(self._port)]
|
||||||
|
|
||||||
@ -43,7 +45,7 @@ class CuraEngineBackend(Backend):
|
|||||||
self._onChanged()
|
self._onChanged()
|
||||||
|
|
||||||
def _onSlicedObjectListMessage(self, message):
|
def _onSlicedObjectListMessage(self, message):
|
||||||
job = ProcessSlicedObjectListJob.ProcessSlicedObjectListJob(message)
|
job = ProcessSlicedObjectListJob.ProcessSlicedObjectListJob(message, self._center)
|
||||||
job.start()
|
job.start()
|
||||||
|
|
||||||
def _onProgressMessage(self, message):
|
def _onProgressMessage(self, message):
|
||||||
@ -128,6 +130,8 @@ class CuraEngineBackend(Backend):
|
|||||||
posZ.value = str(int(0)).encode('utf-8')
|
posZ.value = str(int(0)).encode('utf-8')
|
||||||
self._socket.sendMessage(posmsg)
|
self._socket.sendMessage(posmsg)
|
||||||
|
|
||||||
|
self._center = center
|
||||||
|
|
||||||
self._socket.sendMessage(msg)
|
self._socket.sendMessage(msg)
|
||||||
|
|
||||||
self._changeTimer = None
|
self._changeTimer = None
|
||||||
|
@ -10,10 +10,11 @@ import numpy
|
|||||||
import struct
|
import struct
|
||||||
|
|
||||||
class ProcessSlicedObjectListJob(Job):
|
class ProcessSlicedObjectListJob(Job):
|
||||||
def __init__(self, message):
|
def __init__(self, message, center):
|
||||||
super().__init__(description = 'Processing sliced object')
|
super().__init__(description = 'Processing sliced object')
|
||||||
self._message = message
|
self._message = message
|
||||||
self._scene = Application.getInstance().getController().getScene()
|
self._scene = Application.getInstance().getController().getScene()
|
||||||
|
self._center = center
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
objectIdMap = {}
|
objectIdMap = {}
|
||||||
@ -21,6 +22,8 @@ class ProcessSlicedObjectListJob(Job):
|
|||||||
if type(node) is SceneNode and node.getMeshData():
|
if type(node) is SceneNode and node.getMeshData():
|
||||||
objectIdMap[id(node)] = node
|
objectIdMap[id(node)] = node
|
||||||
|
|
||||||
|
layerHeight = Application.getInstance().getMachineSettings().getSettingValueByKey('layer_height')
|
||||||
|
|
||||||
for object in self._message.objects:
|
for object in self._message.objects:
|
||||||
mesh = objectIdMap[object.id].getMeshData()
|
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 = 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 = numpy.asarray(points, dtype=numpy.float32)
|
||||||
points /= 1000
|
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)
|
layerData.addPolygon(layer.id, polygon.type, points)
|
||||||
|
|
||||||
mesh.layerData = layerData
|
mesh.layerData = layerData
|
||||||
|
Loading…
x
Reference in New Issue
Block a user