diff options
Diffstat (limited to 'space_view3d_display_tools/select_tools.py')
-rw-r--r-- | space_view3d_display_tools/select_tools.py | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/space_view3d_display_tools/select_tools.py b/space_view3d_display_tools/select_tools.py index ca429384..5327ba7f 100644 --- a/space_view3d_display_tools/select_tools.py +++ b/space_view3d_display_tools/select_tools.py @@ -210,6 +210,108 @@ class HideRenderAllSelected(Operator): return {'FINISHED'} +class OBJECT_OT_HideShowByTypeTemplate(): + + bl_options = {'UNDO','REGISTER'} + + type = bpy.props.EnumProperty(items=( + ('MESH', 'Mesh', ''), + ('CURVE', 'Curve', ''), + ('SURFACE', 'Surface', ''), + ('META', 'Meta', ''), + ('FONT', 'Font', ''), + ('ARMATURE', 'Armature', ''), + ('LATTICE', 'Lattice', ''), + ('EMPTY', 'Empty', ''), + ('CAMERA', 'Camera', ''), + ('LAMP', 'Lamp', ''), + ('ALL', 'All', '')), + name='Type', + description='Type', + default='LAMP', + options={'ANIMATABLE'}) + + def execute(self, context): + + scene = bpy.context.scene + objects = [] + eligible_objects = [] + + # Only Selected? + if self.hide_selected: + objects = bpy.context.selected_objects + else: + objects = scene.objects + + # Only Specific Types? + Filter layers + for obj in objects: + for i in range(0,20): + if obj.layers[i] & scene.layers[i]: + if self.type == 'ALL' or obj.type == self.type: + if obj not in eligible_objects: + eligible_objects.append(obj) + objects = eligible_objects + eligible_objects = [] + + + # Only Render Restricted? + if self.hide_render_restricted: + for obj in objects: + if obj.hide_render == self.hide_or_show: + eligible_objects.append(obj) + objects = eligible_objects + eligible_objects = [] + + # Perform Hiding / Showing + for obj in objects: + obj.hide = self.hide_or_show + + return {'FINISHED'} + + def invoke(self, context, event): + return self.execute(context) + + +## show hide by type ## by Felix Schlitter +class OBJECT_OT_HideByType(OBJECT_OT_HideShowByTypeTemplate, Operator): + bl_idname = 'object.hide_by_type' + bl_label = 'Hide By Type' + hide_or_show = bpy.props.BoolProperty( + name="Hide", + description="Inverse effect", + options={'HIDDEN'}, + default=1 + ) + hide_selected = bpy.props.BoolProperty( + name="Selected", + description="Hide only selected objects", + default=0 + ) + hide_render_restricted = bpy.props.BoolProperty( + name="Only Render-Restricted", + description="Hide only render restricted objects", + default=0 + ) + +class OBJECT_OT_ShowByType(OBJECT_OT_HideShowByTypeTemplate, Operator): + bl_idname = 'object.show_by_type' + bl_label = 'Show By Type' + hide_or_show = bpy.props.BoolProperty( + name="Hide", + description="Inverse effect", + options={'HIDDEN'}, + default=0 + ) + hide_selected = bpy.props.BoolProperty( + name="Selected", + options={'HIDDEN'}, + default=0 + ) + hide_render_restricted = bpy.props.BoolProperty( + name="Only Renderable", + description="Show only non render restricted objects", + default=0 + ) # Register def register(): |