diff options
author | Brendon Murphy <meta.androcto1@gmail.com> | 2015-06-22 08:28:17 +0300 |
---|---|---|
committer | Brendon Murphy <meta.androcto1@gmail.com> | 2015-06-22 08:28:17 +0300 |
commit | 1883ee23fb258e05c91b4fb2121d7150b6673cd9 (patch) | |
tree | 9ff6d4bd8068b989d0cb844f4bffba00f8498dd4 /add_mesh_extra_objects/add_empty_as_parent.py | |
parent | ffaddb3a6f59dc9a2177c27391c8fd8444af3257 (diff) |
update parent to mesh, update & fix crasher in mesh_round_cube, update init.
Diffstat (limited to 'add_mesh_extra_objects/add_empty_as_parent.py')
-rw-r--r-- | add_mesh_extra_objects/add_empty_as_parent.py | 100 |
1 files changed, 79 insertions, 21 deletions
diff --git a/add_mesh_extra_objects/add_empty_as_parent.py b/add_mesh_extra_objects/add_empty_as_parent.py index 86280554..b7431b6d 100644 --- a/add_mesh_extra_objects/add_empty_as_parent.py +++ b/add_mesh_extra_objects/add_empty_as_parent.py @@ -1,57 +1,115 @@ # GPL # Original Author Liero # import bpy -from bpy.props import StringProperty, FloatProperty, BoolProperty, FloatVectorProperty +from bpy.props import StringProperty, BoolProperty, EnumProperty -def centro(objetos): - x = sum([obj.location[0] for obj in objetos])/len(objetos) - y = sum([obj.location[1] for obj in objetos])/len(objetos) - z = sum([obj.location[2] for obj in objetos])/len(objetos) +def centro(sel): + x = sum([obj.location[0] for obj in sel])/len(sel) + y = sum([obj.location[1] for obj in sel])/len(sel) + z = sum([obj.location[2] for obj in sel])/len(sel) return (x,y,z) + class P2E(bpy.types.Operator): bl_idname = 'object.parent_to_empty' - bl_label = 'Parent Selected to Empty' + bl_label = 'Parent to Empty' bl_description = 'Parent selected objects to a new Empty' bl_options = {'REGISTER', 'UNDO'} nombre = StringProperty(name='', default='OBJECTS', description='Give the empty / group a name') - grupo = bpy.props.BoolProperty(name='Create Group', default=False, description='Also link objects to a new group') - cursor = bpy.props.BoolProperty(name='Cursor Location', default=False, description='Add the empty at cursor / selection center') - renombrar = bpy.props.BoolProperty(name='Rename Objects', default=False, description='Rename child objects') + grupo = bpy.props.BoolProperty(name='Create Group', default=False, description='Also add objects to a group') + locat = bpy.props.EnumProperty(name='', items=[('CURSOR','Cursor','Cursor'),('ACTIVE','Active','Active'), + ('CENTER','Center','Selection Center')],description='Empty location', default='CENTER') + renom = bpy.props.BoolProperty(name='Add Prefix', default=False, description='Add prefix to objects name') @classmethod def poll(cls, context): - return (context.object and context.object.select) + objs = context.selected_objects + return (len(objs) > 0) def draw(self, context): layout = self.layout layout.prop(self,'nombre') column = layout.column(align=True) + column.prop(self,'locat') column.prop(self,'grupo') - column.prop(self,'cursor') - column.prop(self,'renombrar') + column.prop(self,'renom') def execute(self, context): - objs = bpy.context.selected_objects - bpy.ops.object.mode_set() - if self.cursor: - loc = context.scene.cursor_location + objs = context.selected_objects + act = context.object + sce = context.scene + try: bpy.ops.object.mode_set() + except: pass + if self.locat == 'CURSOR': + loc = sce.cursor_location + elif self.locat == 'ACTIVE': + loc = act.location else: - loc = centro(objs) + loc = centro(objs) + bpy.ops.object.add(type='EMPTY',location=loc) - bpy.context.object.name = self.nombre + context.object.name = self.nombre + context.object.show_name = True + context.object.show_x_ray = True + if self.grupo: bpy.ops.group.create(name=self.nombre) bpy.ops.group.objects_add_active() + for o in objs: o.select = True if not o.parent: - bpy.ops.object.parent_set(type='OBJECT') + bpy.ops.object.parent_set(type='OBJECT') if self.grupo: bpy.ops.group.objects_add_active() o.select = False for o in objs: - if self.renombrar: + if self.renom: o.name = self.nombre+'_'+o.name - return {'FINISHED'}
\ No newline at end of file + return {'FINISHED'} + + +class PreFix(bpy.types.Operator): + bl_idname = 'object.toggle_prefix' + bl_label = 'Toggle Sufix' + bl_description = 'Toggle parent name as sufix for c' + bl_options = {'REGISTER', 'UNDO'} + + @classmethod + def poll(cls, context): + act = bpy.context.object + return (act and act.type == 'EMPTY') + + def execute(self, context): + act = bpy.context.object + objs = act.children + prefix = act.name+'_' + remove = False + for o in objs: + if o.name.startswith(prefix): + remove = True + break + + if remove == True: + for o in objs: + if o.name.startswith(prefix): + o.name = o.name.partition(prefix)[2] + else: + for o in objs: + o.name = prefix+o.name + + return {'FINISHED'} + + +class PanelP2E(bpy.types.Panel): + bl_label = 'Parent to Empty' + bl_space_type = 'VIEW_3D' + bl_region_type = 'TOOLS' + bl_category = 'Relations' + + def draw(self, context): + layout = self.layout + layout.operator('object.parent_to_empty') + layout.operator('object.toggle_prefix') + |