[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4394] contrib/py/scripts/addons/ object_print3d_utils: add overhang check for printers that have limits for their overhang.
Campbell Barton
ideasman42 at gmail.com
Tue Mar 19 22:06:17 CET 2013
Revision: 4394
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4394
Author: campbellbarton
Date: 2013-03-19 21:06:16 +0000 (Tue, 19 Mar 2013)
Log Message:
-----------
add overhang check for printers that have limits for their overhang.
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/ui.py
Modified: contrib/py/scripts/addons/object_print3d_utils/__init__.py
===================================================================
--- contrib/py/scripts/addons/object_print3d_utils/__init__.py 2013-03-19 17:00:12 UTC (rev 4393)
+++ contrib/py/scripts/addons/object_print3d_utils/__init__.py 2013-03-19 21:06:16 UTC (rev 4394)
@@ -71,12 +71,6 @@
description="Path to directory where the files are created",
default="//", maxlen=1024, subtype="DIR_PATH",
)
- angle_sharp = FloatProperty(
- name="Angle",
- subtype='ANGLE',
- default=math.radians(160.0),
- min=0.0, max=math.radians(180.0),
- )
thickness_min = FloatProperty(
name="Thickness",
description="Minimum thickness",
@@ -98,6 +92,18 @@
default=math.radians(15.0),
min=0.0, max=math.radians(180.0),
)
+ angle_sharp = FloatProperty(
+ name="Angle",
+ subtype='ANGLE',
+ default=math.radians(160.0),
+ min=0.0, max=math.radians(180.0),
+ )
+ angle_overhang = FloatProperty(
+ name="Angle",
+ subtype='ANGLE',
+ default=0.0,
+ min=0.0, max=math.radians(90.0),
+ )
classes = (
ui.Print3DToolBarObject,
@@ -111,6 +117,7 @@
operators.Print3DCheckIntersections,
operators.Print3DCheckThick,
operators.Print3DCheckSharp,
+ operators.Print3DCheckOverhang,
operators.Print3DCheckAll,
operators.Print3DCleanIsolated,
Modified: contrib/py/scripts/addons/object_print3d_utils/operators.py
===================================================================
--- contrib/py/scripts/addons/object_print3d_utils/operators.py 2013-03-19 17:00:12 UTC (rev 4393)
+++ contrib/py/scripts/addons/object_print3d_utils/operators.py 2013-03-19 21:06:16 UTC (rev 4394)
@@ -231,6 +231,41 @@
return execute_check(self, context)
+class Print3DCheckOverhang(Operator):
+ """Check faces don't overhang past a certain angle"""
+ bl_idname = "mesh.print3d_check_overhang"
+ bl_label = "Print3D Check Overhang"
+
+ @staticmethod
+ def main_check(obj, info):
+ import math
+ from mathutils import Vector
+
+ scene = bpy.context.scene
+ print_3d = scene.print_3d
+ angle_overhang = (math.pi / 2.0) - print_3d.angle_overhang
+
+ if angle_overhang == math.pi:
+ info.append(("Skipping Overhang", ()))
+ return
+
+ bm = mesh_helpers.bmesh_copy_from_object(obj, transform=True, triangulate=False)
+ bm.normal_update()
+
+ z_down = Vector((0, 0, -1.0))
+ z_down_angle = z_down.angle
+
+ faces_overhang = [ele.index for ele in bm.faces
+ if z_down_angle(ele.normal) < angle_overhang]
+
+ info.append(("Overhang Face: %d" % len(faces_overhang),
+ (bmesh.types.BMFace, faces_overhang)))
+ bm.free()
+
+ def execute(self, context):
+ return execute_check(self, context)
+
+
class Print3DCheckAll(Operator):
"""Run all checks"""
bl_idname = "mesh.print3d_check_all"
@@ -242,6 +277,7 @@
Print3DCheckDegenerate,
Print3DCheckThick,
Print3DCheckSharp,
+ Print3DCheckOverhang,
)
def execute(self, context):
Modified: contrib/py/scripts/addons/object_print3d_utils/ui.py
===================================================================
--- contrib/py/scripts/addons/object_print3d_utils/ui.py 2013-03-19 17:00:12 UTC (rev 4393)
+++ contrib/py/scripts/addons/object_print3d_utils/ui.py 2013-03-19 21:06:16 UTC (rev 4394)
@@ -89,6 +89,9 @@
rowsub = col.row()
rowsub.operator("mesh.print3d_check_sharp", text="Edge Sharp")
rowsub.prop(print_3d, "angle_sharp", text="")
+ rowsub = col.row()
+ rowsub.operator("mesh.print3d_check_overhang", text="Overhang")
+ rowsub.prop(print_3d, "angle_overhang", text="")
col = layout.column()
col.operator("mesh.print3d_check_all", text="Check All")
More information about the Bf-extensions-cvs
mailing list