Blender a des fonctions de type Property qui fournissent une interface utilisateur afin que les utilisateurs puissent spécifier des valeurs, et parmi elles, il y a EnumProperty ** qui crée une ** boîte de sélection. Il n'y avait pas de problème avec cette fonction et la définition de la sélection de manière statique, mais j'étais un peu confus lors de la ** définition de la sélection de manière dynamique **, donc pour ceux qui ont rencontré le même problème Je voudrais vous présenter.
Voici un exemple de code pour définir la sélection de manière statique à des fins de comparaison avec le cas de sa définition dynamique. ** Une boîte de sélection est créée en spécifiant la liste créée à l'avance dans les éléments **.
static_append.py
import bpy
from by.props import *
#Éléments que vous souhaitez afficher dans la zone de sélection
axis = (
("X", "X-axis", ""), # (identifiant,Nom d'affichage de l'interface utilisateur,Texte explicatif)
("Y", "Y-axis", ""),
("Z", "Z-axis", ""))
transform_axis = EnumProperty(
name = "Transform Axis", #Nom
description = "Transform Axis", #Texte explicatif
items = axis) #Liste d'articles à afficher dans la boîte de sélection
Ensuite, l'exemple de code qui définit dynamiquement les éléments de sélection est illustré ci-dessous. Ici, ** item spécifie une fonction pour créer une liste d'articles **.
Les éléments à définir sont définis dans la fonction qui crée la liste d'éléments et la liste d'éléments créée est renvoyée comme valeur de retour de la fonction. ** La fonction spécifiée dans items est appelée à chaque fois que la variable object_list est référencée **, donc les items de sélection peuvent être définis dynamiquement.
dynamic_append.py
import bpy
from bpy.props import *
#Une fonction qui crée une liste d'éléments que vous souhaitez afficher dans la zone de sélection
def get_object_list_callback(scene, context):
items = []
#Traitement pour ajouter des articles aux articles...
return items
object_list = EnumProperty(
name = "Object List", #Nom
description = "Object List", #Texte explicatif
items = get_object_list_callback) #Fonction pour créer une liste d'articles
Recommended Posts