[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