# -------------------------
# Redimensionne en fonction de la distance
# entre l'objet nomme : "_resize" et l'objet
# "_master" .
# le script doit etre lie a l'objet resize en
# mode redraw .
#
# (c) jm soler, 09/2005
# ------------------------
import Blender
# ------------------------
# pour inverser l'effet
# ------------------------
DIM=0
# ------------------------
# pour conserverla taille d'origine
# ------------------------
ORIGINE=1
# ------------------------
# releve des positions reciproques
# ------------------------
[[x,y,z]]=[o.getLocation() for o in Blender.Object.Get() if o.name.find('resize')!=-1]
[[x1,y1,z1]]=[o.getLocation() for o in Blender.Object.Get() if o.name.find('master')!=-1]
distance=abs((x1-x)**2+(y1-y)**2+(z1-z)**2)**0.5
# ------------------------
# Permet de mettre a jour les valeurs .
#
# Changer provisoirement la valeur pour 1
# Quand la modification est satisfaisante
# il faut modifier de nouveau a la main
# pour reenclancher l'affichage automatique
# des variations de taille .
# ------------------------
RENEW=0
try :
# ------------------------
# renouvelle les valeurs en produisant une
# erreur qui oblige a passer par le contenu
# d'except
# ------------------------
if RENEW==1 :
error="renew"
raise error
# ------------------------
# calcul des valeurs
# ------------------------
if DIM: Size=distance/Blender.D
else: Size=Blender.D/distance
# ------------------------
# raccourci de la variable
# ------------------------
if ORIGINE: BS=Blender.Size[0]
else: BS=[0.0,0.0,0.0]
# ------------------------
# mise a jour des valeurs dans les
# objets
# ------------------------
[o.setSize(Size+BS[0],Size+BS[1],Size+BS[2]) for o in Blender.Object.Get()
if o.name.find('resize')!=-1]
# ------------------------
# fin
# ------------------------
except:
# ------------------------
# les valeurs sont mises en reserve
# dans l'espace de nom du module
# Blender . Pas une bonne habitude
# mais infiniment plus rapide que
# de passer par le module register
# ou d'enregistrer sur le disque
# on pourrait eventuellement stocker
# ces informations dans un objet neutre
# ------------------------
Blender.D=distance
Blender.Size=[o.getSize() for o in Blender.Object.Get() if o.name.find('resize')!=-1] |