Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-02-15 03:33:47 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-02-15 03:33:47 +0300
commit58ba89b5bec5a2b7b74ef93fe18f0a3811cb48db (patch)
treec637d3314827ddc39e98aedd261c66e69ddf1549 /release
parent70f1b8cc4061fac81413c723b973386050e2561e (diff)
Fix T54075: Align Objects fails w/ empty mesh
Diffstat (limited to 'release')
-rw-r--r--release/scripts/startup/bl_operators/object_align.py34
1 files changed, 17 insertions, 17 deletions
diff --git a/release/scripts/startup/bl_operators/object_align.py b/release/scripts/startup/bl_operators/object_align.py
index 8669c2ddbd6..03b0d4f04a2 100644
--- a/release/scripts/startup/bl_operators/object_align.py
+++ b/release/scripts/startup/bl_operators/object_align.py
@@ -24,7 +24,7 @@ from bpy.types import Operator
from mathutils import Vector
-def GlobalBB_LQ(bb_world):
+def worldspace_bounds_from_object_bounds(bb_world):
# Initialize the variables with the 8th vertex
left, right, front, back, down, up = (
@@ -66,7 +66,7 @@ def GlobalBB_LQ(bb_world):
return (Vector((left, front, up)), Vector((right, back, down)))
-def GlobalBB_HQ(scene, obj):
+def worldspace_bounds_from_object_data(scene, obj):
matrix_world = obj.matrix_world.copy()
@@ -75,20 +75,20 @@ def GlobalBB_HQ(scene, obj):
me = obj.to_mesh(scene=scene, apply_modifiers=True, settings='PREVIEW')
verts = me.vertices
- val = matrix_world * verts[-1].co
+ val = matrix_world * (verts[-1].co if verts else Vector((0.0, 0.0, 0.0)))
- left, right, front, back, down, up = (val[0],
- val[0],
- val[1],
- val[1],
- val[2],
- val[2],
- )
+ left, right, front, back, down, up = (
+ val[0],
+ val[0],
+ val[1],
+ val[1],
+ val[2],
+ val[2],
+ )
# Test against all other verts
- for i in range(len(verts) - 1):
-
- vco = matrix_world * verts[i].co
+ for v in verts:
+ vco = matrix_world * v.co
# X Range
val = vco[0]
@@ -155,9 +155,9 @@ def align_objects(context,
for obj, bb_world in objects:
if bb_quality and obj.type == 'MESH':
- GBB = GlobalBB_HQ(scene, obj)
+ GBB = worldspace_bounds_from_object_data(scene, obj)
else:
- GBB = GlobalBB_LQ(bb_world)
+ GBB = worldspace_bounds_from_object_bounds(bb_world)
Left_Front_Up = GBB[0]
Right_Back_Down = GBB[1]
@@ -219,9 +219,9 @@ def align_objects(context,
bb_world = [matrix_world * Vector(v[:]) for v in obj.bound_box]
if bb_quality and obj.type == 'MESH':
- GBB = GlobalBB_HQ(scene, obj)
+ GBB = worldspace_bounds_from_object_data(scene, obj)
else:
- GBB = GlobalBB_LQ(bb_world)
+ GBB = worldspace_bounds_from_object_bounds(bb_world)
Left_Front_Up = GBB[0]
Right_Back_Down = GBB[1]