[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60981] trunk/blender: patch [#37218] Split operator for armatures

Campbell Barton ideasman42 at gmail.com
Tue Oct 29 01:10:04 CET 2013


Revision: 60981
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60981
Author:   campbellbarton
Date:     2013-10-29 00:10:03 +0000 (Tue, 29 Oct 2013)
Log Message:
-----------
patch [#37218] Split operator for armatures
from Henrik Aarnio (hjaarnio)

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
    trunk/blender/source/blender/editors/armature/armature_edit.c
    trunk/blender/source/blender/editors/armature/armature_intern.h
    trunk/blender/source/blender/editors/armature/armature_ops.c

Modified: trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_view3d.py	2013-10-29 00:05:03 UTC (rev 60980)
+++ trunk/blender/release/scripts/startup/bl_ui/space_view3d.py	2013-10-29 00:10:03 UTC (rev 60981)
@@ -2389,6 +2389,7 @@
         layout.operator("armature.merge")
         layout.operator("armature.fill")
         layout.operator("armature.delete")
+        layout.operator("armature.split")
         layout.operator("armature.separate")
 
         layout.separator()

Modified: trunk/blender/source/blender/editors/armature/armature_edit.c
===================================================================
--- trunk/blender/source/blender/editors/armature/armature_edit.c	2013-10-29 00:05:03 UTC (rev 60980)
+++ trunk/blender/source/blender/editors/armature/armature_edit.c	2013-10-29 00:10:03 UTC (rev 60981)
@@ -1066,6 +1066,44 @@
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 }
 
+/* ********************************* Split ******************************* */
+
+static int armature_split_exec(bContext *C, wmOperator *UNUSED(op))
+{
+	Object *ob = CTX_data_edit_object(C);
+	bArmature *arm = (bArmature *)ob->data;
+	EditBone *bone;
+
+	for (bone = arm->edbo->first; bone; bone = bone->next){
+		if (bone->parent && (bone->flag & BONE_SELECTED) != (bone->parent->flag & BONE_SELECTED)){
+			bone->parent = NULL;
+			bone->flag &= ~BONE_CONNECTED;
+		}
+	}
+	for (bone = arm->edbo->first; bone; bone = bone->next){
+		ED_armature_ebone_select_set(bone, (bone->flag & BONE_SELECTED) != 0);
+	}
+
+	WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+
+	return OPERATOR_FINISHED;
+}
+
+void ARMATURE_OT_split(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name = "Split";
+	ot->idname = "ARMATURE_OT_split";
+	ot->description = "Split off selected bones from connected unselected bones";
+
+	/* api callbacks */
+	ot->exec = armature_split_exec;
+	ot->poll = ED_operator_editarmature;
+
+	/* flags */
+	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+}
+
 /* ********************************* Delete ******************************* */
 
 /* previously delete_armature */

Modified: trunk/blender/source/blender/editors/armature/armature_intern.h
===================================================================
--- trunk/blender/source/blender/editors/armature/armature_intern.h	2013-10-29 00:05:03 UTC (rev 60980)
+++ trunk/blender/source/blender/editors/armature/armature_intern.h	2013-10-29 00:10:03 UTC (rev 60981)
@@ -78,6 +78,7 @@
 void ARMATURE_OT_fill(struct wmOperatorType *ot);
 void ARMATURE_OT_merge(struct wmOperatorType *ot);
 void ARMATURE_OT_separate(struct wmOperatorType *ot);
+void ARMATURE_OT_split(struct wmOperatorType *ot);
 
 void ARMATURE_OT_autoside_names(struct wmOperatorType *ot);
 void ARMATURE_OT_flip_names(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/armature/armature_ops.c
===================================================================
--- trunk/blender/source/blender/editors/armature/armature_ops.c	2013-10-29 00:05:03 UTC (rev 60980)
+++ trunk/blender/source/blender/editors/armature/armature_ops.c	2013-10-29 00:10:03 UTC (rev 60981)
@@ -74,6 +74,7 @@
 	WM_operatortype_append(ARMATURE_OT_fill);
 	WM_operatortype_append(ARMATURE_OT_merge);
 	WM_operatortype_append(ARMATURE_OT_separate);
+	WM_operatortype_append(ARMATURE_OT_split);
 	
 	WM_operatortype_append(ARMATURE_OT_autoside_names);
 	WM_operatortype_append(ARMATURE_OT_flip_names);
@@ -269,6 +270,7 @@
 	WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", ACTIONMOUSE, KM_CLICK, KM_CTRL, 0);
 	WM_keymap_add_item(keymap, "ARMATURE_OT_fill", FKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "ARMATURE_OT_merge", MKEY, KM_PRESS, KM_ALT, 0);
+	WM_keymap_add_item(keymap, "ARMATURE_OT_split", YKEY, KM_PRESS, 0, 0);
 	
 	WM_keymap_add_item(keymap, "ARMATURE_OT_separate", PKEY, KM_PRESS, KM_CTRL | KM_ALT, 0);
 	




More information about the Bf-blender-cvs mailing list