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

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-11-20 21:59:05 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-11-20 22:01:15 +0400
commit258c32a95672b532bd383fc6ca464127381ae651 (patch)
tree8a43f5ad6d6d9ede6ca719db80b5e4761da53929
parentdf1ee41c55a733c3a2e4241a4c154f49baf9c22e (diff)
Fix T37555: Update 3D toolbox for changes to the BMesh API.
-rw-r--r--object_print3d_utils/mesh_helpers.py9
-rw-r--r--object_print3d_utils/operators.py11
2 files changed, 16 insertions, 4 deletions
diff --git a/object_print3d_utils/mesh_helpers.py b/object_print3d_utils/mesh_helpers.py
index 4996ca69..450e2388 100644
--- a/object_print3d_utils/mesh_helpers.py
+++ b/object_print3d_utils/mesh_helpers.py
@@ -54,7 +54,7 @@ def bmesh_copy_from_object(obj, transform=True, triangulate=True, apply_modifier
bm.transform(obj.matrix_world)
if triangulate:
- bmesh.ops.triangulate(bm, faces=bm.faces, use_beauty=True)
+ bmesh.ops.triangulate(bm, faces=bm.faces)
return bm
@@ -103,6 +103,9 @@ def bmesh_check_self_intersect_object(obj):
"""
import bpy
+ if not obj.data.polygons:
+ return array.array('i', ())
+
# Heres what we do!
#
# * Take original Mesh.
@@ -115,7 +118,7 @@ def bmesh_check_self_intersect_object(obj):
# Triangulate
bm = bmesh_copy_from_object(obj, transform=False, triangulate=False)
face_map_index_org = {f: i for i, f in enumerate(bm.faces)}
- ret = bmesh.ops.triangulate(bm, faces=bm.faces, use_beauty=False)
+ ret = bmesh.ops.triangulate(bm, faces=bm.faces)
face_map = ret["face_map"]
# map new index to original index
face_map_index = {i: face_map_index_org[face_map.get(f, f)] for i, f in enumerate(bm.faces)}
@@ -196,7 +199,7 @@ def bmesh_check_thick_object(obj, thickness):
bm = bmesh_copy_from_object(obj, transform=True, triangulate=False)
# map original faces to their index.
face_index_map_org = {f: i for i, f in enumerate(bm.faces)}
- ret = bmesh.ops.triangulate(bm, faces=bm.faces, use_beauty=False)
+ ret = bmesh.ops.triangulate(bm, faces=bm.faces)
face_map = ret["face_map"]
del ret
# old edge -> new mapping
diff --git a/object_print3d_utils/operators.py b/object_print3d_utils/operators.py
index 7548d165..7ebf5956 100644
--- a/object_print3d_utils/operators.py
+++ b/object_print3d_utils/operators.py
@@ -543,6 +543,10 @@ class Print3DScaleToVolume(Operator):
volume = sum(calc_volume(obj) for obj in context.selected_editable_objects
if obj.type == 'MESH')
+ if volume == 0.0:
+ self.report({'WARNING'}, "Object has zero volume")
+ return {'CANCELLED'}
+
self.volume_init = self.volume = abs(volume)
wm = context.window_manager
@@ -582,12 +586,17 @@ class Print3DScaleToBounds(Operator):
if context.mode == 'EDIT_MESH':
length, axis = calc_length([Vector(v) * obj.matrix_world
- for v in context.edit_object.bound_box])
+ for obj in [context.edit_object]
+ for v in obj.bound_box])
else:
length, axis = calc_length([Vector(v) * obj.matrix_world
for obj in context.selected_editable_objects
if obj.type == 'MESH' for v in obj.bound_box])
+ if length == 0.0:
+ self.report({'WARNING'}, "Object has zero bounds")
+ return {'CANCELLED'}
+
self.length_init = self.length = length
self.axis_init = axis