mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Fixed arranger multiplying too big objects and arrange All. CURA-3676
This commit is contained in:
parent
3e75583f2b
commit
c7a6d42920
2 changed files with 12 additions and 5 deletions
|
@ -984,6 +984,8 @@ class CuraApplication(QtApplication):
|
||||||
continue # Grouped nodes don't need resetting as their parent (the group) is resetted)
|
continue # Grouped nodes don't need resetting as their parent (the group) is resetted)
|
||||||
if not node.isSelectable():
|
if not node.isSelectable():
|
||||||
continue # i.e. node with layer data
|
continue # i.e. node with layer data
|
||||||
|
# Skip nodes that are too big
|
||||||
|
if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth:
|
||||||
nodes.append(node)
|
nodes.append(node)
|
||||||
self.arrange(nodes, fixed_nodes = [])
|
self.arrange(nodes, fixed_nodes = [])
|
||||||
|
|
||||||
|
|
7
cura/MultiplyObjectsJob.py
Normal file → Executable file
7
cura/MultiplyObjectsJob.py
Normal file → Executable file
|
@ -47,13 +47,18 @@ class MultiplyObjectsJob(Job):
|
||||||
|
|
||||||
root = scene.getRoot()
|
root = scene.getRoot()
|
||||||
arranger = Arrange.create(scene_root=root)
|
arranger = Arrange.create(scene_root=root)
|
||||||
|
node_too_big = False
|
||||||
|
if node.getBoundingBox().width < 300 or node.getBoundingBox().depth < 300:
|
||||||
offset_shape_arr, hull_shape_arr = ShapeArray.fromNode(current_node, min_offset=self._min_offset)
|
offset_shape_arr, hull_shape_arr = ShapeArray.fromNode(current_node, min_offset=self._min_offset)
|
||||||
|
else:
|
||||||
|
node_too_big = True
|
||||||
nodes = []
|
nodes = []
|
||||||
found_solution_for_all = True
|
found_solution_for_all = True
|
||||||
for i in range(self._count):
|
for i in range(self._count):
|
||||||
# We do place the nodes one by one, as we want to yield in between.
|
# We do place the nodes one by one, as we want to yield in between.
|
||||||
|
if not node_too_big:
|
||||||
node, solution_found = arranger.findNodePlacement(current_node, offset_shape_arr, hull_shape_arr)
|
node, solution_found = arranger.findNodePlacement(current_node, offset_shape_arr, hull_shape_arr)
|
||||||
if not solution_found:
|
if node_too_big or not solution_found:
|
||||||
found_solution_for_all = False
|
found_solution_for_all = False
|
||||||
new_location = node.getPosition()
|
new_location = node.getPosition()
|
||||||
new_location = new_location.set(z = 100 - i * 20)
|
new_location = new_location.set(z = 100 - i * 20)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue