Arrange All now places excessive objects outside build plate. CURA-3239

This commit is contained in:
Jack Ha 2017-04-06 09:47:57 +02:00
parent 8f6a210c75
commit ed0fb1b0ab
2 changed files with 15 additions and 9 deletions

View file

@ -72,7 +72,7 @@ class Arrange:
self.place(x, y, hull_shape_arr) # take place before the next one
else:
Logger.log("d", "Could not find spot!")
new_node.setPosition(Vector(200, 0, 100 + i * 20))
new_node.setPosition(Vector(200, 0, 100 - i * 20))
nodes.append(new_node)
return nodes

22
cura/ArrangeObjectsJob.py Normal file → Executable file
View file

@ -6,6 +6,7 @@ from UM.Scene.SceneNode import SceneNode
from UM.Math.Vector import Vector
from UM.Operations.SetTransformOperation import SetTransformOperation
from UM.Operations.GroupedOperation import GroupedOperation
from UM.Logger import Logger
from UM.Message import Message
from UM.i18n import i18nCatalog
i18n_catalog = i18nCatalog("cura")
@ -54,20 +55,25 @@ class ArrangeObjectsJob(Job):
start_priority = 0
best_spot = arranger.bestSpot(offset_shape_arr, start_prio=start_priority, step=10)
x, y = best_spot.x, best_spot.y
last_size = size
last_priority = best_spot.priority
node.removeDecorator(ZOffsetDecorator)
if node.getBoundingBox():
center_y = node.getWorldPosition().y - node.getBoundingBox().bottom
else:
center_y = 0
if x is not None: # We could find a place
last_size = size
last_priority = best_spot.priority
arranger.place(x, y, hull_shape_arr) # take place before the next one
node.removeDecorator(ZOffsetDecorator)
if node.getBoundingBox():
center_y = node.getWorldPosition().y - node.getBoundingBox().bottom
else:
center_y = 0
grouped_operation.addOperation(SetTransformOperation(node, Vector(x, center_y, y)))
else:
Logger.log("d", "Arrange all: could not find spot!")
grouped_operation.addOperation(SetTransformOperation(node, Vector(200, center_y, - idx * 20)))
status_message.setProgress((idx + 1) / len(nodes_arr) * 100)
Job.yieldThread()
grouped_operation.push()
status_message.hide()
status_message.hide()