mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-06-26 01:15:28 -06:00
Do not move objects if auto-arrange fails
CURA-12169 When doing an explicit auto-arrange that can not find a complete solution, it is better not to move the objects because they will probably end up in a weird position
This commit is contained in:
parent
36b5a40563
commit
e19f5ee330
3 changed files with 9 additions and 4 deletions
|
@ -40,7 +40,7 @@ class ArrangeObjectsJob(Job):
|
|||
|
||||
found_solution_for_all = False
|
||||
try:
|
||||
found_solution_for_all = arranger.arrange()
|
||||
found_solution_for_all = arranger.arrange(only_if_full_success = True)
|
||||
except: # If the thread crashes, the message should still close
|
||||
Logger.logException("e",
|
||||
"Unable to arrange the objects on the buildplate. The arrange algorithm has crashed.")
|
||||
|
|
|
@ -16,12 +16,16 @@ class Arranger:
|
|||
"""
|
||||
raise NotImplementedError
|
||||
|
||||
def arrange(self, add_new_nodes_in_scene: bool = False) -> bool:
|
||||
def arrange(self, add_new_nodes_in_scene: bool = False, only_if_full_success: bool = False) -> bool:
|
||||
"""
|
||||
Find placement for a set of scene nodes, and move them by using a single grouped operation.
|
||||
:param add_new_nodes_in_scene: Whether to create new scene nodes before applying the transformations and rotations
|
||||
:return: found_solution_for_all: Whether the algorithm found a place on the buildplate for all the objects
|
||||
"""
|
||||
grouped_operation, not_fit_count = self.createGroupOperationForArrange(add_new_nodes_in_scene)
|
||||
grouped_operation.push()
|
||||
return not_fit_count == 0
|
||||
full_success = not_fit_count == 0
|
||||
|
||||
if full_success or not only_if_full_success:
|
||||
grouped_operation.push()
|
||||
|
||||
return full_success
|
||||
|
|
|
@ -84,6 +84,7 @@ class MultiplyObjectsJob(Job):
|
|||
arranger = Nest2DArrange(nodes, Application.getInstance().getBuildVolume(), fixed_nodes, factor=1000)
|
||||
|
||||
group_operation, not_fit_count = arranger.createGroupOperationForArrange(add_new_nodes_in_scene=True)
|
||||
found_solution_for_all = not_fit_count == 0
|
||||
|
||||
if nodes_to_add_without_arrange:
|
||||
for nested_node in nodes_to_add_without_arrange:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue