User Tools

Site Tools


doc_opener

====== Differences ====== This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
doc_opener [2015/08/20 09:25]
swann [a. initSceneProperties]
doc_opener [2015/08/20 12:07] (current)
swann [c. custompath operator]
Line 172: Line 172:
    ​ressources.command.append("​! missing field !")    ​ressources.command.append("​! missing field !")
        
 +</​code>​
 +
 +Nous allons maintenant parcourir un des opérateurs crée pour l'​addon. Il faut savoir que dans Blender, les Operateurs représentent un des outils les plus pratiques pour le développement pour de nombreuses raisons( ils sont facilement accessible pour l'​utilisateur,​ ils peuvent prendre des arguments,​etc,​...).\\
 +Dans l'​Opener,​ j'​utilise aussi les opérateurs à des fins ergonomiques pour mettre en place des boutons. En fin de compte, chaque boutons est un opérateur auquel on a assigné une icône lors de son appel dans l'​interface.
 +
 +
 +==== c. custompath operator====
 +
 +Pour apprendre à faire un opérateur de base, suivez le lien suivant:​[[http://​www.blender.org/​api/​blender_python_api_2_57_release/​bpy.types.Operator.html|Blender Operator Guide]]\\
 +
 +La première partie de l'​opérateur consiste naturellement à déclarer les différents champs est variables nécessaire:​
 +<code python>
 +#Entête avec héritage de l'​object Operator de blender, nécessaire à chaque fois que l'on créer un opérateur
 +class OBJECT_OT_custompath(bpy.types.Operator):​
 + ​bl_idname = "​object.custom_path"​
 + ​bl_label = "​open"​
 + ​__doc__ = "" ​  
 +    ​
 + ​filename_ext = ""​
 + ​filter_glob = StringProperty(default="",​ options={'​HIDDEN'​},​subtype='​DIR_PATH'​) ​   ​
 +        ​
 +
 + #​Variable stockant le chemin choisi
 + ​filepath = StringProperty(name="​File Path", description="​Filepath importing store dir", maxlen= 1024)
 + #​optionnel,​ récupère les fichiers séléctionnés ​
 + files = CollectionProperty(
 +  name="​File Path",
 +  type=bpy.types.OperatorFileListElement)
 +</​code>​
 +
 +Ici il s'agit du corps de l'​opérateur,​ la fonction execute va s'​éxecuter à chaque appel de l'​opérateur. Il en est de même ,pour les fonctions draw et invoke. ​
 +<code python>
 + def execute(self,​ context):
 +  #ajout du chemin sélectionné ​   ​
 +  ressources.Items.append((str(self.properties.filepath),​str(self.properties.filepath),""​))
 +  #Création du tuple temporaire
 +  t=(str(self.properties.filepath),​str(self.properties.filepath)))
 +  #Mise à jour de la liste des dossier racine
 +  interface.UpdateEnum(bpy.types.Scene,​ressources.Items,'​Store',​t)
 +        ​
 +  #Sauvegarde du dossier sélectionné de manière persistante
 +  persistence.write_config()
 +  #Find de fonction
 +  return {'​FINISHED'​}
 +  ​
 +  #Fonction d'​affichage de l'​explorateur de fichier
 +  def draw(self, context):
 +   ​self.layout.operator('​file.select_all_toggle'​) ​       ​
 +  def invoke(self,​ context, event):
 +   wm = context.window_manager
 +   ​wm.fileselect_add(self)
 +   ​return {'​RUNNING_MODAL'​} ​    
 </​code>​ </​code>​
 ---- ----
doc_opener.1440062757.txt.gz · Last modified: 2015/08/20 09:25 by swann