mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-15 10:47:49 -06:00
Do not make center dependant on object position and correct for object position in ProcessSlicedObjectListJob
This commit is contained in:
parent
ad2f839dc1
commit
d85cc0f0bf
2 changed files with 27 additions and 19 deletions
|
@ -150,25 +150,6 @@ class CuraEngineBackend(Backend):
|
||||||
|
|
||||||
self._scene.releaseLock()
|
self._scene.releaseLock()
|
||||||
|
|
||||||
center /= float(len(objects))
|
|
||||||
if not self._settings.getSettingValueByKey('machine_center_is_zero'):
|
|
||||||
center.setX(center.x + self._settings.getSettingValueByKey('machine_width') / 2)
|
|
||||||
center.setZ(center.z + self._settings.getSettingValueByKey('machine_depth') / 2)
|
|
||||||
|
|
||||||
posmsg = Cura_pb2.SettingList()
|
|
||||||
posX = posmsg.settings.add()
|
|
||||||
posX.name = 'position.X'
|
|
||||||
posX.value = str(int(center.x * 1000)).encode('utf-8')
|
|
||||||
posY = posmsg.settings.add()
|
|
||||||
posY.name = 'position.Y'
|
|
||||||
posY.value = str(int(center.z * 1000)).encode('utf-8')
|
|
||||||
posZ = posmsg.settings.add()
|
|
||||||
posZ.name = 'position.Z'
|
|
||||||
posZ.value = str(int(0)).encode('utf-8')
|
|
||||||
self._socket.sendMessage(posmsg)
|
|
||||||
|
|
||||||
self._center = center
|
|
||||||
|
|
||||||
self._socket.sendMessage(msg)
|
self._socket.sendMessage(msg)
|
||||||
|
|
||||||
self._changeTimer = None
|
self._changeTimer = None
|
||||||
|
@ -267,6 +248,16 @@ class CuraEngineBackend(Backend):
|
||||||
settings['extruderOffset1.X'] = int(self._settings.getSettingValueByKey('machine_nozzle_offset_x_1') * 1000)
|
settings['extruderOffset1.X'] = int(self._settings.getSettingValueByKey('machine_nozzle_offset_x_1') * 1000)
|
||||||
settings['extruderOffset1.Y'] = int(self._settings.getSettingValueByKey('machine_nozzle_offset_y_1') * 1000)
|
settings['extruderOffset1.Y'] = int(self._settings.getSettingValueByKey('machine_nozzle_offset_y_1') * 1000)
|
||||||
|
|
||||||
|
if not self._settings.getSettingValueByKey('machine_center_is_zero'):
|
||||||
|
settings['position.X'] = int((self._settings.getSettingValueByKey('machine_width') / 2.0) * 1000)
|
||||||
|
settings['position.Y'] = int((self._settings.getSettingValueByKey('machine_depth') / 2.0) * 1000)
|
||||||
|
self._center = Vector(self._settings.getSettingValueByKey('machine_width') / 2.0, 0.0, self._settings.getSettingValueByKey('machine_depth') / 2.0)
|
||||||
|
else:
|
||||||
|
settings['position.X'] = 0
|
||||||
|
settings['position.Y'] = 0
|
||||||
|
self._center = Vector(0.0, 0.0, 0.0)
|
||||||
|
settings['position.Z'] = 0
|
||||||
|
|
||||||
msg = Cura_pb2.SettingList()
|
msg = Cura_pb2.SettingList()
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
s = msg.settings.add()
|
s = msg.settings.add()
|
||||||
|
@ -425,6 +416,16 @@ class CuraEngineBackend(Backend):
|
||||||
settings['extruderOffset1.X'] = int(self._settings.getSettingValueByKey('machine_nozzle_offset_x_1') * 1000)
|
settings['extruderOffset1.X'] = int(self._settings.getSettingValueByKey('machine_nozzle_offset_x_1') * 1000)
|
||||||
settings['extruderOffset1.Y'] = int(self._settings.getSettingValueByKey('machine_nozzle_offset_y_1') * 1000)
|
settings['extruderOffset1.Y'] = int(self._settings.getSettingValueByKey('machine_nozzle_offset_y_1') * 1000)
|
||||||
|
|
||||||
|
if not self._settings.getSettingValueByKey('machine_center_is_zero'):
|
||||||
|
settings['position.X'] = int((self._settings.getSettingValueByKey('machine_width') / 2.0) * 1000)
|
||||||
|
settings['position.Y'] = int((self._settings.getSettingValueByKey('machine_depth') / 2.0) * 1000)
|
||||||
|
self._center = Vector(self._settings.getSettingValueByKey('machine_width') / 2.0, 0.0, self._settings.getSettingValueByKey('machine_depth') / 2.0)
|
||||||
|
else:
|
||||||
|
settings['position.X'] = 0
|
||||||
|
settings['position.Y'] = 0
|
||||||
|
self._center = Vector(0.0, 0.0, 0.0)
|
||||||
|
settings['position.Z'] = 0
|
||||||
|
|
||||||
msg = Cura_pb2.SettingList()
|
msg = Cura_pb2.SettingList()
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
s = msg.settings.add()
|
s = msg.settings.add()
|
||||||
|
|
|
@ -40,8 +40,15 @@ class ProcessSlicedObjectListJob(Job):
|
||||||
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 * layerHeight, axis = 1)
|
points = numpy.insert(points, 1, layer.id * layerHeight, axis = 1)
|
||||||
|
|
||||||
points[:,0] -= self._center.x
|
points[:,0] -= self._center.x
|
||||||
points[:,2] -= self._center.z
|
points[:,2] -= self._center.z
|
||||||
|
|
||||||
|
points = numpy.pad(points, ((0,0), (0,1)), 'constant', constant_values=(0.0, 1.0))
|
||||||
|
inverse = node.getGlobalTransformation().getInverse().getData()
|
||||||
|
points = points.dot(inverse)
|
||||||
|
points = points[:,0:3]
|
||||||
|
|
||||||
layerData.addPolygon(layer.id, polygon.type, points)
|
layerData.addPolygon(layer.id, polygon.type, points)
|
||||||
|
|
||||||
mesh.layerData = layerData
|
mesh.layerData = layerData
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue