Blender (jusqu'à 2.49)
Python et système
modifier un objet Text en ligne de commande
(2008/02/15
dernière mise à jour : 2008/06/10 )
    Début   Index
précédent SVN News
Script : pivot Suivant
 
Modifier un objet texte

Le module Text3d permet de travailler sur ce type objet. La liste des fonctions disponibles se trouve sur ces deux  pages Text3d module  et  Text3d class. Les opératiosn nécessaires consistent à prendre tous les objets de Textes avec la fonction Get() et  à récuperer le contenu avec getText() et y chercher si une chaîne de caractères correspond bien à ce contenu. Ce que l'on peut simplement faire avec le signe ==. Dans l'exemple qui suit, les objets sont rangés dans une liste en utilisant la méthode des listes comprehension qui  est bien plus rapide qu'une boucle for
 

#chargement du module Blender
import Blender

#chargement du module Text3d
from Blender import Text3d

#list comprehension
OBJ =[O for O in Text3d.Get() if O.getText()=="essai"]

if OBJ:
 for O in OBJ :
  O.setText("nouveau texte")

Comment lancer le script et le fichier en même temps

On trouvera des renseignements sur les options acceptées en ligne de commande sur cette page:  Aide en ligne de commande. Il y est indiqué que la commande de lancement d'un script est -P

Est-ce que le script doit/peut être embarqué dans le fichier ?

Ce serait plus simple  qu'il soit embarqué dans le fichier. Ce n'est pas une grande difficulté si le script se trouve dans une fenêtre nommée "Text", on peut écrire ceci dans un fichier commandes :
 

mondisque:\monrepertoire\blender.exe -b mondisque:\tmp\scripts\text.blend -P Text

On peut envisager un fichier texte externe qui sera chargé par lescript. Ce fichier contiendra deux lignes. Sur la première, l'expression qui doit être remplacée et sur la seconde, celle quidoit remplacer.

 Autre détail important, pour que le rendu soit exécuté, il faut préciser un numéro de frame :
 

mondisque:\monrepertoire\blender.exe -b mondisque:\tmp\scripts\text.blend -P Text -f 1 -x 1

Attention 
Quelques tests montrent que la position du nom de script dans la liste des paramètres en ligne est très importante : les opérations  exécutées par le logiciel suivent l'ordre d'apparition dans la ligne de commande. Si le paramètre de nom de ficher suit le numéro de frame au lieu de le précéder  la modification ne sera pas visible puisque le script ne sera exécuté qu'après le rendu.

Un autre difficuIté consiste à passer des textes en ligne. Pour cela on peut ajouter deux expressions en fin de ligne de commande. Le script devra les lire dans la liste des arguments qui se trouve dans la variable argv du module sys de python (attention il ne s'agit pas du sys de Blender). La dernière, sys.argv[-1], sera enregistrée comme NOUVELLE_EXPRESSION, l'avant-dernière, sys.argv[-2], comme ANCIENNE_EXPRESSION.
 

# (c) jmsoler 2008

import sys
ANCIENNE_EXPRESSION=sys.argv[-2]
NOUVELLE_EXPRESSION=sys.argv[-1]

import Blender
from Blender import Text3d
OBJ =[O for O in Text3d.Get() if O.getText()==ANCIENNE_EXPRESSION]
if OBJ:
 for O in OBJ :
  O.setText(NOUVELLE_EXPRESSION)
 

 Pour que le systeme d'exploitation prenne en considèration le  texte complet des expressions, il faut les encadrer avec des guillemets. 
 

J:\stock_logiciel\blender\blender-2.45-windows\blender.exe -b l:\tmp\scripts\script_modifierletexte.blend -P Text  -f 1  -x 1 "fait" "essai13 et refait"

L'exemple de fichier de commandes se trouve dans le fichier blend :
http://jmsoler.free.fr/util/blenderfile/py/script_modifierletexte.blend

Il faudra importer le script dans tous les fichiers blend que l'on veut traiter ou le charger à la volée mais dans ce cas,  là il faut l'exporter et le ranger dans répertoire aussi simple d'accès que
 possible. .blender/scripts, par exemple.
 

précédent SVN News
Script : pivot 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