mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-02 08:44:25 +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.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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user