Blender (jusqu'à 2.49)
|
Python
Module
Window : imiter un raccourci clavier
06/08/2006
|
|
Module
Window : imiter un raccourci clavier
Equivalent
de Maj-S, 4 Cursor to selection,
suivi de Ckey, recentrer la
fenêtre 3D
Variation
: PADPERIOD (point du pavé numérique)
Variation
: mode Edit, Curseur vers un ou plusieurs sommets sélectionnés
Variation
: pour raccourci ctrl-t et menu Space Handler Scripts
Note
au sujet de l'utilisation du module Mathutils
Equivalent de
Maj-S, 4 suivi de Ckey
# =================
# Similar to Shift-S, 4 followed by Ckey
# =================
# Equivalent de Maj-S, 4 suivi de Ckey
# =================
import Blender
try:
[x,y,z,w]=Blender.Object.GetSelected()[0].getMatrix()[3]
# update 30/04
Blender.Window.SetCursorPos([x,y,z])
Blender.Window.RedrawAll()
winid = Blender.Window.GetScreenInfo(Blender.Window.Types.VIEW3D)[0]['id']
Blender.Window.SetKeyQualifiers(Blender.Window.Qual.SHIFT)
Blender.Window.SetKeyQualifiers(0)
Blender.Window.RedrawAll()
Blender.Window.QAdd(winid, Blender.Draw.CKEY,1)
Blender.Window.QHandle(winid)
except :
pass |
Variation
avec PADPERIOD (point du pavé numérique)
# =================
# Variation
# =================
# Similar to Shift-S, 4 followed by PADPERIOD
# =================
# Equivalent de
# Shift-S, 4 suivi de PADPERIOD (centrer la vue sur objet selectionne
pas curseur 3d)
#
# =================
import Blender
try:
[x,y,z,w]=Blender.Object.GetSelected()[0].getMatrix()[3]
# update 30/04
Blender.Window.SetCursorPos([x,y,z])
Blender.Window.RedrawAll()
winid = Blender.Window.GetScreenInfo(Blender.Window.Types.VIEW3D)[0]['id']
Blender.Window.SetKeyQualifiers(Blender.Window.Qual.SHIFT)
Blender.Window.SetKeyQualifiers(0)
Blender.Window.RedrawAll()
Blender.Window.QAdd(winid, Blender.Draw.PADPERIOD,1)
Blender.Window.QHandle(winid)
except :
pass |
Variation
en mode Edit, curseur vers un ou plusieurs sommets selctionnés
Voir aussi :
Imiter le bouton Center
New
et
imiter
le bouton Center Cursor
(Lien
Elysiun)
# =================
# Similar to Shift-S, 4 followed by Ckey in edit mode
# =================
# Equivalent de Shift-S, 4 suivi de Ckey en mode edit
# =================
# #
# Mise a jour / Update : 30/04
#
# fonctionne aussi sur un sommet ou un groupe de sommets
# se'lectionne' en mode edit . Dans le cas d'un groupe de sommets
# le curseur 3D sera place' sur les coordonne'es moyennes des sommets
.
#
# Now take the location of a selected vertex or a group of vertice
.
# In the case of a vertice group, the cursor 3d will be placed on the
# average co-ordinates .
# =================
import Blender
def multmat(M,v):
x = v.co [0]; y=v.co[1]; z=v.co[2]
x1 = (x * M[0][0]) + (y * M[1][0]) +
(z * M[2][0])
y1 = (x * M[0][1]) + (y * M[1][1]) +
(z * M[2][1])
z1 = (x * M[0][2]) + (y * M[1][2]) +
(z * M[2][2])
v.co[0]=x1+M[3][0]; v.co[1]=y1+M[3][1];
v.co[2]=z1+M[3][2]
return v
try :
MATRIX=Blender.Object.GetSelected()[0].matrix
editmode=0
if Blender.Window.EditMode() :
editmode=1
Blender.Window.EditMode(0)
VERTS=Blender.Object.GetSelected()[0].getData().verts
SELV=[v for v in VERTS if v.sel==1]
if len(SELV)>0:
coord=[0.0,0.0,0.0]
for v in SELV :
print v.co
v=multmat(MATRIX,v)
print v.co
for n in [0,1,2]:
coord[n]+=v.co[n]
print coord
for n in [0,1,2]:
coord[n]/=len(SELV)
x=coord[0]
y=coord[1]
z=coord[2]
print x,y,z
else:
x,y,z,w=MATRIX[3]
Blender.Window.SetCursorPos([x,y,z])
Blender.Window.RedrawAll()
winid = Blender.Window.GetScreenInfo(Blender.Window.Types.VIEW3D)[0]['id']
Blender.Window.SetKeyQualifiers(Blender.Window.Qual.SHIFT)
Blender.Window.SetKeyQualifiers(0)
Blender.Window.RedrawAll()
Blender.Window.QAdd(winid, Blender.Draw.CKEY,1)
Blender.Window.QHandle(winid)
if editmode :
Blender.Window.EditMode(1)
except :
pass |
Variation
pour utilisation à partir d'un raccourci, Maj-t, dans la fenêtre
3D.
Le script doit être
chargé une première fois dans la fenêtre texte .
L'en-tête :
# SPACEHANDLER.VIEW3D.EVENT
le rend immédiatement
visible dans le menu View/ Space Handler Scripts de la fenêtre
3D . Il suffit de le cocher pour le rendre disponible . |
# SPACEHANDLER.VIEW3D.EVENT
import Blender
from Blender import Draw
from Blender import Window
evt = Blender.event
print Window.GetKeyQualifiers()
if evt == Draw.TKEY and Window.GetKeyQualifiers() == 3:
def multmat(M,v):
x = v.co [0]; y=v.co[1]; z=v.co[2]
x1 = (x * M[0][0]) + (y * M[1][0]) +
(z * M[2][0])
y1 = (x * M[0][1]) + (y * M[1][1]) +
(z * M[2][1])
z1 = (x * M[0][2]) + (y * M[1][2]) +
(z * M[2][2])
v.co[0]=x1+M[3][0]; v.co[1]=y1+M[3][1];
v.co[2]=z1+M[3][2]
return v
try :
MATRIX=Blender.Object.GetSelected()[0].matrix
editmode=0
if Blender.Window.EditMode() :
editmode=1
Blender.Window.EditMode(0)
VERTS=Blender.Object.GetSelected()[0].getData().verts
SELV=[v for v in VERTS if v.sel==1]
if len(SELV)>0:
coord=[0.0,0.0,0.0]
for v in SELV :
print v.co
v=multmat(MATRIX,v)
print v.co
for n in [0,1,2]:
coord[n]+=v.co[n]
print coord
for n in [0,1,2]:
coord[n]/=len(SELV)
x=coord[0]
y=coord[1]
z=coord[2]
print x,y,z
else:
x,y,z,w=MATRIX[3]
Blender.Window.SetCursorPos([x,y,z])
Blender.Window.RedrawAll()
winid = Blender.Window.GetScreenInfo(Blender.Window.Types.VIEW3D)[0]['id']
Blender.Window.SetKeyQualifiers(Blender.Window.Qual.SHIFT)
Blender.Window.SetKeyQualifiers(0)
Blender.Window.RedrawAll()
Blender.Window.QAdd(winid, Blender.Draw.CKEY,1)
Blender.Window.QHandle(winid)
if editmode :
Blender.Window.EditMode(1)
except :
pass
Blender.event = None |
Note
au sujet de l'utilisation de mathutils
Certains utilisateurs
ont eu l'occasion de trouver, et de me faire savoir publiquement,
que ces scripts étaient ou dépassés ou manquaient
leur but puisque , à leur avis, ils ne présentaient pas l'API
python de Blender sous sont meilleur angle, c'est-à-dire :
le plus récent et le plus "moderne" en utilisant les dernières
inovations incluses dans le module Mathutils . Au moment où cette
page est mise à jour le module Mathutils reste encore souvent source
d'erreurs par manque de clarté et, comme finalement, il ne fait
que remplacer les fonctions qui sont clairement visibles dans notre travail,
il ne semble vraiment pas nécessaire, ni prudent, de passer par
son intermédiaire . |
Les questions concernant cette page
peuvent être posées sur :
news://news.zoo-logique.org/3D.Blender
|