[PYTHON] [Blender] Comment définir dynamiquement les sélections EnumProperty

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.

Définir les sélections de manière statique

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

Sélections définies dynamiquement

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

Informations de référence

Recommended Posts

[Blender] Comment définir dynamiquement les sélections EnumProperty
[Blender] Comment obtenir l'ordre de sélection des sommets, des côtés et des faces d'un objet
Comment définir la résolution de sortie pour chaque image clé dans Blender
[Blender] Comment définir shape_key avec un script
Comment vérifier la version de Django
Comment régler l'heure du serveur sur l'heure japonaise
Comment configurer l'environnement de développement d'ev3dev [version Windows]
Comment calculer la volatilité d'une marque
Comment trouver la zone du diagramme de Boronoi
Comment connaître le numéro de port du service xinetd
Comment obtenir le nombre de chiffres en Python
Comment connaître le répertoire actuel en Python dans Blender
Comment créer un sous-menu avec le plug-in [Blender]
La décision de scikit-learn Comment visualiser un modèle en bois
[Blender] Résumé de la procédure d'installation / de mise à jour / de désinstallation des modules complémentaires
Définissez la colonne spécifiée de QTableWidget sur ReadOnly StyledItemDelegate
[Introduction à Udemy Python3 + Application] 30. Comment utiliser l'ensemble
[Python] Résumé de la façon de spécifier la couleur de la figure
Comment frapper le document de Magic Function (Line Magic)
Comment accéder à la variable globale du module importé
[Selenium] Comment spécifier le chemin relatif de chromedriver?
Comment utiliser le générateur
Comment utiliser le décorateur
Comment augmenter l'axe
Comment démarrer la première projection
Comment augmenter la vitesse de traitement de l'acquisition de la position des sommets
[Ubuntu] Comment supprimer tout le contenu du répertoire
Comment trouver le nombre optimal de clusters pour les k-moyennes
Comment tester les attributs ajoutés par add_request_method de pyramid
[Blender] Connaître l'état de sélection des objets cachés sur l'outliner
[Python] Comment définir des noms de variables dynamiquement et comparer la vitesse
Comment définir l'attribut de classe html dans le formulaire forms.py de Django
Comment calculer la quantité de calcul appris de ABC134-D
(Note) Comment passer le chemin de votre propre module
Comment exécuter automatiquement la fonction d'exportation de GCP Datastore
Comment augmenter le nombre d'images de jeux de données d'apprentissage automatique
Comment voir le contenu du fichier ipynb du notebook Jupyter
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Comment définir la date au format ISO8601 étendu sur l'index Dataframe
Comment connecter le contenu de la liste dans une chaîne de caractères
Comment calculer le coefficient d'autocorrélation
Comment obtenir et définir le nom du serveur NTP par DHCP
Comment déterminer l'existence d'un élément sélénium en Python
Comment modifier le niveau de journalisation d'Azure SDK pour Python
Comment utiliser le module optparse
Extraire l'index de la set list d'origine correspondant à la liste des sous-ensembles.
Comment implémenter du code Java en arrière-plan de Red Hat (Linux ONE)
Comment connaître la structure interne d'un objet en Python
Résumé de l'utilisation de pandas.DataFrame.loc
Comment changer la couleur du seul bouton pressé avec Tkinter
Comment obtenir l'ID de Type2Tag NXP NTAG213 avec nfcpy
[EC2] Comment installer Chrome et le contenu de chaque commande
Comment vérifier la taille de la mémoire d'une variable en Python
Créez le thème de Pythonista 3 comme Monokai (comment créer votre propre thème)
[Python] Comment obtenir le premier et le dernier jour du mois
Comment lire l'ensemble de données SNLI
Comment obtenir la version Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
[TensorFlow 2] Comment vérifier le contenu de Tensor en mode graphique
[Linux] Comment désactiver la mise à jour automatique du fichier /etc/resolv.conf (AmazonLinux2)