Blender (jusqu'à 2.49)
Python
Mesures precises
 
    Début   Index
précédentScript uv painter
script Hot Keys: Suivant

Tester le script de base
Tester le fichier CalliperSquare

Il ne peut pas être utiliser tel quel, il a besoin de quelques objets correctement nommés pour afficher les résultats en temps réel. Les objet nécessaire sont 3 empties nommés respectivement : Origine, Distance, ---> D :

Il est indispensable que l'empty Distance soit parenté à l'empty Origine car sinon des calculs supplémentaires sont nécessaires ; ce qui dans un script interprété n'est pas très rentable en matière de rapidité d'affichage.

Le script doit ensuite être lié à l'objet Distance.

Le principe consiste à calculer la distance qui sépare la position de l'objet Origine de la position de l'objet Distance. Comme les deux objets sont reliés par un lien de parenté, cela revient à simplement calculer la dimension du segment qui sépare la position de l'objet distance de la coordonnée [0.0, 0.0, 0.0].

Le résultat est affiché en remplacement du nom de l'objet ---> D : (qui est lui-même parenté à l'objet distance) ce qui permet de visualiser le nombre en temps réel. Quelques éléments supplémentaires peuvent être ajoutés pour donner l'impression d'avoir un vrai pied à coulisse. Il sera aussi nécessaire de contraindre le mouvement  de ces parties  à suivre les déplacements soit de l'objet distance soit de l'objet origine.
 

# Pied a coulisse (calliper square ?)
#  version 0.3,  jm Soler 24 mars 2003
# -------------------------------------
# Mesure precise entre les deux empties
# -------------------------------------- 
import Blender
from Blender import Object
import math

E1=Object.Get('Origine')
E2=Object.Get('Distance')
 

X0=E2.LocX
Y0=E2.LocY
Z0=E2.LocZ

E2.SizeX=E2.SizeY=E2.SizeZ=.05
E1.SizeX=E1.SizeY=E1.SizeZ=1.0
E1.RotX=E1.RotY=E1.RotZ=0.0

distance=(X0**2+Y0**2+Z0**2)**0.5

if distance!=0.0:
    X1=E2.LocX/distance
    Y1=E2.LocY/distance
    Z1=E2.LocZ/distance

R=Object.Get()
for r in R:
  if r.name.find("--> D: ")!=-1:
     r.name="--> D: %s"%round(distance,3)
  elif r.name.find("---> Z: ")!=-1:
     r.name="---> Z: %s"%round(Z0,3)
  elif r.name.find("---> Y: ")!=-1:
     r.name="---> Y: %s"%round(Y0,3)
  elif r.name.find("---> X: ")!=-1:
     r.name="---> X: %s"%round(X0,3)
#Blender.Redraw()
print "%5.3f"%distance
 

 


 
précédentScript uv painter
 script Hot Keys: Suivant
Vers le  Haut de page

Les questions concernant cette page  peuvent être posées sur  :
 news://news.zoo-logique.org/3D.Blender


 

 

Livre en français
Blender : apprenez, pratiquez, Créez, livre, Ed. Campus Press, coll. Starter Kit
Blender Starter Kit

Forum
FAQ
Lexique
Didacticiels
Compilations
Blender2KT
Débuter
Modelage
Blender python
Materiaux
Lumière
Animation
API python (eng)
Archives nzn
Statistiques
Doc flash Sculptris
Galerie Sculptris

mon site de démos sur youtube