1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# GPL # Original Author Liero #
import bpy
from bpy.props import StringProperty, FloatProperty, BoolProperty, FloatVectorProperty
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)
return (x,y,z)
class P2E(bpy.types.Operator):
bl_idname = 'object.parent_to_empty'
bl_label = 'Parent Selected 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')
@classmethod
def poll(cls, context):
return (context.object and context.object.select)
def draw(self, context):
layout = self.layout
layout.prop(self,'nombre')
column = layout.column(align=True)
column.prop(self,'grupo')
column.prop(self,'cursor')
column.prop(self,'renombrar')
def execute(self, context):
objs = bpy.context.selected_objects
bpy.ops.object.mode_set()
if self.cursor:
loc = context.scene.cursor_location
else:
loc = centro(objs)
bpy.ops.object.add(type='EMPTY',location=loc)
bpy.context.object.name = self.nombre
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')
if self.grupo:
bpy.ops.group.objects_add_active()
o.select = False
for o in objs:
if self.renombrar:
o.name = self.nombre+'_'+o.name
return {'FINISHED'}
|