#!BPY
# """
# Name: 'Add armature modifier''
# Blender: 245
# Group: 'Animation'
# Tooltip: 'Add the selected armature to the selected object.'
# """
# -*- coding: Latin-1 -*-
__author__ = 'Jm Soler'
__version__ = '0.0.1 2008/04/26'
__url__ = ["""jms's site, http://jmsoler.free.fr/didacticiel/blender/tutor/bpy_massive_add_armature.htm""",
"""Support forum, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender"""
]
__email__ = ["jms, jmsoler:free.fr"]
__bpydoc__ = """\
This macro adds a modifier armature to all the selected objets (if they
can support
modifier).
Cette macro ajoute un modificateur armature à tous les objets
sélectionnés (s\'ils peuvent supporter ce type de modificiateur).
How to:
select a lot of mesh, curve, surface
Blender objects and,
at least, an armature. Then, just call
this script.
Sélectionnez un certain nombre
d'objet de type maillage,
courbe ou surface et, au moins, une
armature. Ensuite,
il suffit d'appeler le script.
"""
import Blender
# prendre la scene courante
scene = Blender.Scene.GetCurrent()
# dans les objets de la scene courante
# vérifier qu'il y ait bien une armature
Armature= [ob for ob in scene.objects.selected if ob.type=='Armature']
# si c'est le cas (la liste n'est pas vide)
if Armature :
# on crée un drapeau
AJOUT=0
# pour tous les objets de la liste...
for objet in scene.objects.selected:
# .. si on obje est soit un mesh, soit une coube soit une
surface
# et, surtout si l'armature n'est pas déjà
lié à cet objet...
if objet.type in ['Mesh','Curve','Surface'] and\
len([m for m in objet.modifiers
if m != Blender.Modifier.Types.ARMATURE])==0:
# on ajoute un modificateur
aramture
# dans la liste de
l'objet
objet.modifiers.append(Blender.Modifier.Types.ARMATURE)
# On précise
qu'il s'agit de la première armature
# trouvé ci-dessus.
objet.modifiers[-1][Blender.Modifier.Settings.OBJECT]
=Armature[0]
objet.makeDisplayList()
# on augmente la valeur
du drapeau
AJOUT+=1
# si le drapeau est activé, donc supérieur à
1
# on force l'interface graphique à se redessiner
if AJOUT :
Blender.Window.RedrawAll()
|