forked from bartvdbraak/blender
use decorators for python attributes, added bone.length
This commit is contained in:
parent
bd1de4b4e3
commit
66a013b06a
@ -35,36 +35,14 @@ class Context(StructRNA):
|
|||||||
|
|
||||||
class Object(bpy_types.ID):
|
class Object(bpy_types.ID):
|
||||||
|
|
||||||
def _get_children(self):
|
@property
|
||||||
|
def children(self):
|
||||||
import bpy
|
import bpy
|
||||||
return [child for child in bpy.data.objects if child.parent == self]
|
return [child for child in bpy.data.objects if child.parent == self]
|
||||||
|
|
||||||
children = property(_get_children)
|
|
||||||
|
|
||||||
|
|
||||||
class PoseBone(StructRNA):
|
class PoseBone(StructRNA):
|
||||||
|
|
||||||
def _get_children(self):
|
|
||||||
import bpy
|
|
||||||
obj = self.id_data
|
|
||||||
return [child for child in obj.pose.bones if child.parent == self]
|
|
||||||
|
|
||||||
children = property(_get_children)
|
|
||||||
|
|
||||||
def _get_parent_recursive(self):
|
|
||||||
parent_list = []
|
|
||||||
parent = self.parent
|
|
||||||
|
|
||||||
while parent:
|
|
||||||
if parent:
|
|
||||||
parent_list.append(parent)
|
|
||||||
|
|
||||||
parent = parent.parent
|
|
||||||
|
|
||||||
return parent_list
|
|
||||||
|
|
||||||
parent_recursive = property(_get_parent_recursive)
|
|
||||||
|
|
||||||
def parent_index(self, parent_test):
|
def parent_index(self, parent_test):
|
||||||
'''
|
'''
|
||||||
The same as 'bone in other_bone.parent_recursive' but saved generating a list.
|
The same as 'bone in other_bone.parent_recursive' but saved generating a list.
|
||||||
@ -78,8 +56,28 @@ class PoseBone(StructRNA):
|
|||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
@property
|
||||||
|
def children(self):
|
||||||
|
import bpy
|
||||||
|
obj = self.id_data
|
||||||
|
return [child for child in obj.pose.bones if child.parent == self]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def parent_recursive(self):
|
||||||
|
parent_list = []
|
||||||
|
parent = self.parent
|
||||||
|
|
||||||
|
while parent:
|
||||||
|
if parent:
|
||||||
|
parent_list.append(parent)
|
||||||
|
|
||||||
|
parent = parent.parent
|
||||||
|
|
||||||
|
return parent_list
|
||||||
|
|
||||||
def _get_children_recursive(self):
|
@property
|
||||||
|
def children_recursive(self):
|
||||||
obj = self.id_data
|
obj = self.id_data
|
||||||
bones_children = []
|
bones_children = []
|
||||||
for bone in obj.pose.bones:
|
for bone in obj.pose.bones:
|
||||||
@ -91,7 +89,11 @@ class PoseBone(StructRNA):
|
|||||||
bones_children.sort(key=lambda bone_pair: bone_pair[0])
|
bones_children.sort(key=lambda bone_pair: bone_pair[0])
|
||||||
return [bone for index, bone in bones_children]
|
return [bone for index, bone in bones_children]
|
||||||
|
|
||||||
children_recursive = property(_get_children_recursive)
|
|
||||||
|
class Bone(StructRNA):
|
||||||
|
@property
|
||||||
|
def length(self):
|
||||||
|
return (self.head - self.tail).length
|
||||||
|
|
||||||
|
|
||||||
def ord_ind(i1,i2):
|
def ord_ind(i1,i2):
|
||||||
@ -100,12 +102,12 @@ def ord_ind(i1,i2):
|
|||||||
|
|
||||||
class Mesh(bpy_types.ID):
|
class Mesh(bpy_types.ID):
|
||||||
|
|
||||||
def _get_edge_keys(self):
|
@property
|
||||||
|
def edge_keys(self):
|
||||||
return [edge_key for face in self.faces for edge_key in face.edge_keys]
|
return [edge_key for face in self.faces for edge_key in face.edge_keys]
|
||||||
|
|
||||||
edge_keys = property(_get_edge_keys)
|
@property
|
||||||
|
def edge_face_count_dict(self):
|
||||||
def _get_edge_face_count_dict(self):
|
|
||||||
face_edge_keys = [face.edge_keys for face in self.faces]
|
face_edge_keys = [face.edge_keys for face in self.faces]
|
||||||
face_edge_count = {}
|
face_edge_count = {}
|
||||||
for face_keys in face_edge_keys:
|
for face_keys in face_edge_keys:
|
||||||
@ -117,34 +119,29 @@ class Mesh(bpy_types.ID):
|
|||||||
|
|
||||||
return face_edge_count
|
return face_edge_count
|
||||||
|
|
||||||
edge_face_count_dict = property(_get_edge_face_count_dict)
|
@property
|
||||||
|
def edge_face_count(self):
|
||||||
def _get_edge_face_count(self):
|
|
||||||
edge_face_count_dict = self.edge_face_count_dict
|
edge_face_count_dict = self.edge_face_count_dict
|
||||||
return [edge_face_count_dict.get(ed.key, 0) for ed in mesh.edges]
|
return [edge_face_count_dict.get(ed.key, 0) for ed in mesh.edges]
|
||||||
|
|
||||||
edge_face_count = property(_get_edge_face_count)
|
|
||||||
|
|
||||||
|
|
||||||
class MeshEdge(StructRNA):
|
class MeshEdge(StructRNA):
|
||||||
|
|
||||||
def _get_key(self):
|
@property
|
||||||
|
def key(self):
|
||||||
return ord_ind(*tuple(self.verts))
|
return ord_ind(*tuple(self.verts))
|
||||||
|
|
||||||
key = property(_get_key)
|
|
||||||
|
|
||||||
|
|
||||||
class MeshFace(StructRNA):
|
class MeshFace(StructRNA):
|
||||||
|
|
||||||
def _get_edge_keys(self):
|
@property
|
||||||
|
def edge_keys(self):
|
||||||
verts = tuple(self.verts)
|
verts = tuple(self.verts)
|
||||||
if len(verts)==3:
|
if len(verts)==3:
|
||||||
return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[0])
|
return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[0])
|
||||||
|
|
||||||
return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[3]), ord_ind(verts[3], verts[0])
|
return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[3]), ord_ind(verts[3], verts[0])
|
||||||
|
|
||||||
edge_keys = property(_get_edge_keys)
|
|
||||||
|
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
class OrderedMeta(type):
|
class OrderedMeta(type):
|
||||||
|
Loading…
Reference in New Issue
Block a user