[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4368] contrib/py/scripts/addons/ object_print3d_utils: print cm3 for volume and cm2 for area.

Campbell Barton ideasman42 at gmail.com
Tue Mar 12 19:20:42 CET 2013


Revision: 4368
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4368
Author:   campbellbarton
Date:     2013-03-12 18:20:42 +0000 (Tue, 12 Mar 2013)
Log Message:
-----------
print cm3 for volume and cm2 for area.

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-12 14:17:13 UTC (rev 4367)
+++ contrib/py/scripts/addons/object_print3d_utils/mesh_helpers.py	2013-03-12 18:20:42 UTC (rev 4368)
@@ -189,7 +189,7 @@
 
 
 def bmesh_check_thick_object(obj, thickness):
-    
+
     import bpy
 
     # Triangulate

Modified: contrib/py/scripts/addons/object_print3d_utils/operators.py
===================================================================
--- contrib/py/scripts/addons/object_print3d_utils/operators.py	2013-03-12 14:17:13 UTC (rev 4367)
+++ contrib/py/scripts/addons/object_print3d_utils/operators.py	2013-03-12 18:20:42 UTC (rev 4368)
@@ -36,6 +36,16 @@
 from . import report
 
 
+def clean_float(text):
+    # strip trailing zeros: 0.000 -> 0.0
+    index = text.rfind(".")
+    if index != -1:
+        index += 2
+        head, tail = text[:index], text[index:]
+        tail = tail.rstrip("0")
+        text = head + tail
+    return text
+
 # ---------
 # Mesh Info
 
@@ -45,16 +55,22 @@
     bl_label = "Print3D Info Volume"
 
     def execute(self, context):
+        scene = context.scene
+        unit = scene.unit_settings
+        scale = 1.0 if unit.system == 'NONE' else unit.scale_length
         obj = context.active_object
 
         bm = mesh_helpers.bmesh_copy_from_object(obj)
-        area = mesh_helpers.bmesh_calc_volume(bm)
+        volume = mesh_helpers.bmesh_calc_volume(bm)
         bm.free()
-        
-        # TODO, units!
-        report.update(("Volume: %.4f" % area,
-                      None))
 
+        info = []
+        info.append(("Volume: %s³" % clean_float("%.4f" % volume),
+                    None))
+        info.append(("%s cm³" % clean_float("%.4f" % ((volume * scale) / (0.01 * 0.01 * 0.01) )),
+                    None))
+
+        report.update(*info)
         return {'FINISHED'}
 
 
@@ -64,16 +80,20 @@
     bl_label = "Print3D Info Area"
 
     def execute(self, context):
+        scene = context.scene
+        unit = scene.unit_settings
+        scale = 1.0 if unit.system == 'NONE' else unit.scale_length
         obj = context.active_object
 
         bm = mesh_helpers.bmesh_copy_from_object(obj)
         area = mesh_helpers.bmesh_calc_area(bm)
         bm.free()
-        
-        # TODO, units!
+
         info = []
-        info.append(("Area: %.4f" % area,
+        info.append(("Area: %s²" % clean_float("%.4f" % area),
                     None))
+        info.append(("%s cm²" % clean_float("%.4f" % ((area * scale) / (0.01 * 0.01))),
+                    None))
         report.update(*info)
         return {'FINISHED'}
 
@@ -331,7 +351,7 @@
         else:
             return {'CANCELLED'}
 
-    
+
 class Print3DCleanThin(Operator):
     """Ensure minimum thickness"""
     bl_idname = "mesh.print3d_clean_thin"
@@ -384,7 +404,7 @@
 
         try:
             for i in bm_array:
-                elems[i].select_set(True) 
+                elems[i].select_set(True)
         except:
             # possible arrays are out of sync
             self.report({'WARNING'}, "Report is out of date, re-run check")



More information about the Bf-extensions-cvs mailing list