Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrendon Murphy <meta.androcto1@gmail.com>2015-06-22 08:28:17 +0300
committerBrendon Murphy <meta.androcto1@gmail.com>2015-06-22 08:28:17 +0300
commit1883ee23fb258e05c91b4fb2121d7150b6673cd9 (patch)
tree9ff6d4bd8068b989d0cb844f4bffba00f8498dd4 /add_mesh_extra_objects/add_empty_as_parent.py
parentffaddb3a6f59dc9a2177c27391c8fd8444af3257 (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.py100
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')
+