[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4370] contrib/py/scripts/addons/ object_print3d_utils: include modifiers in volume/area info
Campbell Barton
ideasman42 at gmail.com
Wed Mar 13 15:27:13 CET 2013
Revision: 4370
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4370
Author: campbellbarton
Date: 2013-03-13 14:27:13 +0000 (Wed, 13 Mar 2013)
Log Message:
-----------
include modifiers in volume/area info
Modified Paths:
--------------
contrib/py/scripts/addons/object_print3d_utils/mesh_helpers.py
contrib/py/scripts/addons/object_print3d_utils/operators.py
Modified: contrib/py/scripts/addons/object_print3d_utils/mesh_helpers.py
===================================================================
--- contrib/py/scripts/addons/object_print3d_utils/mesh_helpers.py 2013-03-13 07:21:06 UTC (rev 4369)
+++ contrib/py/scripts/addons/object_print3d_utils/mesh_helpers.py 2013-03-13 14:27:13 UTC (rev 4370)
@@ -24,20 +24,28 @@
import array
-def bmesh_copy_from_object(obj, transform=True, triangulate=True):
+def bmesh_copy_from_object(obj, transform=True, triangulate=True, apply_modifiers=False):
"""
Returns a transformed, triangulated copy of the mesh
"""
assert(obj.type == 'MESH')
- me = obj.data
- if obj.mode == 'EDIT':
- bm_orig = bmesh.from_edit_mesh(me)
- bm = bm_orig.copy()
- else:
+ if apply_modifiers and obj.modifiers:
+ import bpy
+ me = obj.to_mesh(bpy.context.scene, True, 'PREVIEW', calc_tessface=False)
bm = bmesh.new()
bm.from_mesh(me)
+ bpy.data.meshes.remove(me)
+ del bpy
+ else:
+ me = obj.data
+ if obj.mode == 'EDIT':
+ bm_orig = bmesh.from_edit_mesh(me)
+ bm = bm_orig.copy()
+ else:
+ bm = bmesh.new()
+ bm.from_mesh(me)
# TODO. remove all customdata layers.
# would save ram
Modified: contrib/py/scripts/addons/object_print3d_utils/operators.py
===================================================================
--- contrib/py/scripts/addons/object_print3d_utils/operators.py 2013-03-13 07:21:06 UTC (rev 4369)
+++ contrib/py/scripts/addons/object_print3d_utils/operators.py 2013-03-13 14:27:13 UTC (rev 4370)
@@ -60,7 +60,7 @@
scale = 1.0 if unit.system == 'NONE' else unit.scale_length
obj = context.active_object
- bm = mesh_helpers.bmesh_copy_from_object(obj)
+ bm = mesh_helpers.bmesh_copy_from_object(obj, apply_modifiers=True)
volume = mesh_helpers.bmesh_calc_volume(bm)
bm.free()
@@ -85,7 +85,7 @@
scale = 1.0 if unit.system == 'NONE' else unit.scale_length
obj = context.active_object
- bm = mesh_helpers.bmesh_copy_from_object(obj)
+ bm = mesh_helpers.bmesh_copy_from_object(obj, apply_modifiers=True)
area = mesh_helpers.bmesh_calc_area(bm)
bm.free()
More information about the Bf-extensions-cvs
mailing list