[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4397] contrib/py/scripts/addons/ object_print3d_utils: add distorted face check.
Campbell Barton
ideasman42 at gmail.com
Wed Mar 20 20:12:33 CET 2013
Revision: 4397
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4397
Author: campbellbarton
Date: 2013-03-20 19:12:33 +0000 (Wed, 20 Mar 2013)
Log Message:
-----------
add distorted face check.
Modified Paths:
--------------
contrib/py/scripts/addons/object_print3d_utils/__init__.py
contrib/py/scripts/addons/object_print3d_utils/operators.py
contrib/py/scripts/addons/object_print3d_utils/todo.rst
contrib/py/scripts/addons/object_print3d_utils/ui.py
Modified: contrib/py/scripts/addons/object_print3d_utils/__init__.py
===================================================================
--- contrib/py/scripts/addons/object_print3d_utils/__init__.py 2013-03-19 21:21:59 UTC (rev 4396)
+++ contrib/py/scripts/addons/object_print3d_utils/__init__.py 2013-03-20 19:12:33 UTC (rev 4397)
@@ -26,7 +26,7 @@
"description": "Utilities for 3D printing",
"warning": "",
"wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
- "Scripts/XXX",
+ "Scripts/Modeling/PrintToolbox",
"tracker_url": "",
"support": 'OFFICIAL',
"category": "Mesh"}
@@ -75,7 +75,7 @@
name="Thickness",
description="Minimum thickness",
subtype='DISTANCE',
- default=0.01,
+ default=0.001, # 1mm
min=0.0, max=1.0,
)
threshold_zero = FloatProperty(
@@ -101,7 +101,7 @@
angle_overhang = FloatProperty(
name="Angle",
subtype='ANGLE',
- default=0.0,
+ default=math.radians(45.0),
min=0.0, max=math.radians(90.0),
)
@@ -113,6 +113,7 @@
operators.Print3DInfoArea,
operators.Print3DCheckDegenerate,
+ operators.Print3DCheckDistorted,
operators.Print3DCheckSolid,
operators.Print3DCheckIntersections,
operators.Print3DCheckThick,
Modified: contrib/py/scripts/addons/object_print3d_utils/operators.py
===================================================================
--- contrib/py/scripts/addons/object_print3d_utils/operators.py 2013-03-19 21:21:59 UTC (rev 4396)
+++ contrib/py/scripts/addons/object_print3d_utils/operators.py 2013-03-20 19:12:33 UTC (rev 4397)
@@ -185,6 +185,41 @@
return execute_check(self, context)
+class Print3DCheckDistorted(Operator):
+ """Check for non-flat faces """
+ bl_idname = "mesh.print3d_check_distort"
+ bl_label = "Print3D Check Distorted Faces"
+
+ @staticmethod
+ def main_check(obj, info):
+ import array
+
+ scene = bpy.context.scene
+ print_3d = scene.print_3d
+ angle_distort = print_3d.angle_distort
+
+ def face_is_distorted(ele):
+ no = ele.normal
+ angle_fn = no.angle
+ for loop in ele.loops:
+ if angle_fn(loop.calc_normal(), 1000.0) > angle_distort:
+ return True
+ return False
+
+ bm = mesh_helpers.bmesh_copy_from_object(obj, transform=True, triangulate=False)
+ bm.normal_update()
+
+ faces_distort = array.array('i', (i for i, ele in enumerate(bm.faces) if face_is_distorted(ele)))
+
+ info.append(("Non-Flat Faces: %d" % len(faces_distort),
+ (bmesh.types.BMFace, faces_distort)))
+
+ bm.free()
+
+ def execute(self, context):
+ return execute_check(self, context)
+
+
class Print3DCheckThick(Operator):
"""Check geometry is above the minimum thickness preference """ \
"""(relies on correct normals)"""
@@ -275,6 +310,7 @@
Print3DCheckSolid,
Print3DCheckIntersections,
Print3DCheckDegenerate,
+ Print3DCheckDistorted,
Print3DCheckThick,
Print3DCheckSharp,
Print3DCheckOverhang,
@@ -369,8 +405,9 @@
def face_is_distorted(ele):
no = ele.normal
+ angle_fn = no.angle
for loop in ele.loops:
- if no.angle(loop.calc_normal(), 1000.0) > angle_distort:
+ if angle_fn(loop.calc_normal(), 1000.0) > angle_distort:
return True
return False
Modified: contrib/py/scripts/addons/object_print3d_utils/todo.rst
===================================================================
--- contrib/py/scripts/addons/object_print3d_utils/todo.rst 2013-03-19 21:21:59 UTC (rev 4396)
+++ contrib/py/scripts/addons/object_print3d_utils/todo.rst 2013-03-20 19:12:33 UTC (rev 4397)
@@ -59,8 +59,8 @@
- http://slic3r.org
- https://github.com/makerbot/Miracle-Grue/blob/master/README.md
+- Use a sliver, like slicer, skeinforge, cura, kissslicer, netfabb, ....
-
...not sure yet exactly how this would work, but we could have a `Print` button and it would send the file off and print :).
Modified: contrib/py/scripts/addons/object_print3d_utils/ui.py
===================================================================
--- contrib/py/scripts/addons/object_print3d_utils/ui.py 2013-03-19 21:21:59 UTC (rev 4396)
+++ contrib/py/scripts/addons/object_print3d_utils/ui.py 2013-03-20 19:12:33 UTC (rev 4397)
@@ -84,6 +84,9 @@
rowsub.operator("mesh.print3d_check_degenerate", text="Degenerate")
rowsub.prop(print_3d, "threshold_zero", text="")
rowsub = col.row()
+ rowsub.operator("mesh.print3d_check_distort", text="Distorted")
+ rowsub.prop(print_3d, "angle_distort", text="")
+ rowsub = col.row()
rowsub.operator("mesh.print3d_check_thick", text="Thickness")
rowsub.prop(print_3d, "thickness_min", text="")
rowsub = col.row()
More information about the Bf-extensions-cvs
mailing list