Im beggining to learn some scripting for blender and decided to make this UI picker for a rig I used called Flex Rig from CG cookie.
https://cgcookie.com/resource/cg-cookie-flex-[B]rig/
[/B]Its not much but here is what I have now:
If any of the more experienced coders could check my code for things I could do better I would appreciate it, thanks.
import bpy
########################################################
#Select a bone operator
class SelectBone(bpy.types.Operator):
"""Tooltip"""
bl_idname = "object.select_bone"
bl_label = "Select given bone"
bone_name = bpy.props.StringProperty(name="bone_name") #the bone to be selected (set in ui)
@classmethod
def poll(cls, context):
return context.active_object is not None
def execute(self, context):
allBones=bpy.context.object.pose.bones #get all bones
for thisbone in allBones:
thisbone.bone.select=False #deselect all bones
allBones[self.bone_name].bone.select=True #select the one we want
return {'FINISHED'}
########################################################
#Show Hide bones
class HideBone(bpy.types.Operator):
"""Tooltip"""
bl_idname = "object.hide_bone"
bl_label = "hide given bone"
@classmethod
def poll(cls, context):
return context.active_object is not None
def execute(self, context):
allBones=bpy.context.object.pose.bones #get all bones
for thisbone in allBones:
if thisbone.bone.select:
thisbone.custom_shape.modifiers["Mask"].show_viewport^=True
return {'FINISHED'}
########################################################
#UI for picker
class CharPicker(bpy.types.Panel):
#Create panel in 3dview tools in new Picker tab
bl_label = "Character Picker"
bl_idname = "OBJECT_PT_Picker"
bl_space_type = 'VIEW_3D'
bl_region_type = 'TOOLS'
bl_category = "Picker"
def draw(self, context):
#put all buttons asigning a bone_name for each
layout = self.layout #layout for buttons
layout.label(text="Pick Bones")
#First the head and neck in the middle
column = layout.column()
split=column.split()
col=split.column()
col=split.column()
col=split.column()
col.operator("object.select_bone",text="head").bone_name="head"
col.operator("object.select_bone",text="neck").bone_name="neck"
col=split.column()
col=split.column()
#now both arms
row = column.row()
row.operator("object.select_bone",text="hand_r").bone_name="hand.ik.R"
row.operator("object.select_bone",text="elbow_r").bone_name="elbow_target.ik.R"
row.operator("object.select_bone",text="shoulder_r").bone_name="shoulder.R"
row.operator("object.select_bone",text="chest").bone_name="chest"
row.operator("object.select_bone",text="shoulder_l").bone_name="shoulder.L"
row.operator("object.select_bone",text="elbow_r").bone_name="elbow_target.ik.L"
row.operator("object.select_bone",text="hand_r").bone_name="hand.ik.L"
#again in the middle the spine,torso,etc
column = layout.column()
split=column.split()
col=split.column()
col=split.column()
col=split.column()
col.operator("object.select_bone",text="spine").bone_name="spine"
col.operator("object.select_bone",text="torso").bone_name="torso"
col.operator("object.select_bone",text="hips").bone_name="hips"
col=split.column()
col=split.column()
#both legs
row = column.row()
row.separator()
row.operator("object.select_bone",text="knee_r").bone_name="knee_target.ik.R"
row.operator("object.select_bone",text="knee_l").bone_name="knee_target.ik.L"
row.separator()
row = column.row()
row.separator()
row.operator("object.select_bone",text="foot_r").bone_name="foot.ik.R"
row.operator("object.select_bone",text="foot_l").bone_name="foot.ik.L"
row.separator()
row = column.row()
row.separator()
row.operator("object.select_bone",text="toe_r").bone_name="toe.ik.R"
row.operator("object.select_bone",text="toe_l").bone_name="toe.ik.L"
row.separator()
#finally the root
column.operator("object.select_bone",text="root").bone_name="root"
#Now the show and hide
layout = self.layout #layout for buttons
layout.label(text="Extra")
column = layout.column()
column.operator("object.hide_bone",text="Show/Hide")
def register():
bpy.utils.register_class(SelectBone)
bpy.utils.register_class(HideBone)
bpy.utils.register_class(CharPicker)
def unregister():
bpy.utils.unregister_class(SelectBone)
bpy.utils.unregister_class(HideBone)
bpy.utils.unregister_class(CharPicker)
if __name__ == "__main__":
register()