[PYTHON] [Blender] Comment obtenir l'ordre de sélection des sommets, des côtés et des faces d'un objet

Je vais vous présenter comment obtenir l'ordre sélectionné des sommets, des côtés et des faces d'un objet lors de l'ajout d'une nouvelle fonction du plug-in Blender. Seul celui sélectionné par un clic droit (en supposant la disposition des touches par défaut ci-après) est ciblé. Vous pouvez sélectionner plusieurs sommets, côtés et faces en même temps avec la touche B, mais vous ne pouvez pas obtenir l'ordre de sélection avec Blender pour le moment.

Code source

Ce qui suit est un script pour obtenir l'ordre de sélection de l'objet actuellement sélectionné. N'oubliez pas d'importer bmesh en plus de bpy pour accéder à la structure interne du mixeur. Il inclut le traitement dépendant de la version pour Blender, qui est requis par Blender 2.73. Pour plus d'informations, voir [http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.73/Addons](http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.73] / Addons).

Obtenir l'ordre de sélection des visages

get_face_selection_sequence.py


import bpy
import bmesh   #Nécessite une importation supplémentaire

obj = bpy.context.active_object

bpy.ops.object.mode_set(mode='EDIT')  #Le traitement doit être effectué en mode EDIT
bm = bmesh.from_edit_mesh(obj.data)

#la version blender est 2.Obligatoire lorsque 73 ou plus
if bpy.app.version[0] >= 2 and bpy.app.version[1] >= 73:
    bm.faces.ensure_lookup_table()

#Afficher l'ordre de sélection des visages
for e in bm.select_history:
    if isinstance(e, bmesh.types.BMFace) and e.select:
        print(repr(e))

Obtenir l'ordre de sélection des arêtes

get_edge_selection_sequence.py


import bpy
import bmesh   #Nécessite une importation supplémentaire

obj = bpy.context.active_object

bpy.ops.object.mode_set(mode='EDIT')  #Le traitement doit être effectué en mode EDIT
bm = bmesh.from_edit_mesh(obj.data)

#la version blender est 2.Obligatoire lorsque 73 ou plus
if bpy.app.version[0] >= 2 and bpy.app.version[1] >= 73:
    bm.edges.ensure_lookup_table()

#Afficher l'ordre de sélection des côtés
for e in bm.select_history:
    if isinstance(e, bmesh.types.BMEdge) and e.select:
        print(repr(e))

Obtenir l'ordre de sélection des sommets

get_vert_selection_sequence.py


import bpy
import bmesh   #Nécessite une importation supplémentaire

obj = bpy.context.active_object

bpy.ops.object.mode_set(mode='EDIT')  #Le traitement doit être effectué en mode EDIT
bm = bmesh.from_edit_mesh(obj.data)

#la version blender est 2.Obligatoire lorsque 73 ou plus
if bpy.app.version[0] >= 2 and bpy.app.version[1] >= 73:
    bm.verts.ensure_lookup_table()

#Afficher l'ordre de sélection des sommets
for e in bm.select_history:
    if isinstance(e, bmesh.types.BMVert) and e.select:
        print(repr(e))

Résultat d'exécution

Le résultat de l'exécution est indiqué ci-dessous.

result.py


>>> for e in bm.select_history:
...     if isinstance(e, bmesh.types.BMFace) and e.select:
...         print(repr(e))
<BMFace(0x108482cf0), index=4, totverts=4>
<BMFace(0x108482c80), index=2, totverts=4>
>>>
>>> for e in bm.select_history:
...     if isinstance(e, bmesh.types.BMEdge) and e.select:
...         print(repr(e))
<BMEdge(0x11241f380)>, index=11, verts=(0x10849a960/6, 0x10849a998/7)>
<BMEdge(0x11241f1a0)>, index=5, verts=(0x10849a880/2, 0x10849a8b8/3)>
>>>
>>> for e in bm.select_history:
...     if isinstance(e, bmesh.types.BMVert) and e.select:
...         print(repr(e))
<BMVert(0x10849a960), index=6>
<BMVert(0x10849a8f0), index=4>
>>>

Informations de référence

Recommended Posts

[Blender] Comment obtenir l'ordre de sélection des sommets, des côtés et des faces d'un objet
[Blender] Comment définir dynamiquement les sélections EnumProperty
Obtenir les attributs d'un objet
Comment connaître la structure interne d'un objet en Python
[Python] Comment obtenir le premier et le dernier jour du mois
Une introduction à l'orientation des objets - changeons l'état interne d'un objet
Comment obtenir toutes les clés et valeurs du dictionnaire
Comment obtenir un aperçu de vos données dans Pandas
[Linux] [C / C ++] Comment obtenir la valeur d'adresse de retour d'une fonction et le nom de fonction de l'appelant
Comment obtenir et définir le nom du serveur NTP par DHCP
Comment éliminer le "Les balises doivent être un tableau de hachages." Erreur dans l'API qiita
Comment obtenir la valeur en pixels du point à partir de l'image satellite en spécifiant la latitude et la longitude
Comment obtenir l'ID de Type2Tag NXP NTAG213 avec nfcpy
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
[EC2] Comment installer Chrome et le contenu de chaque commande
Comment obtenir la version Python
Blender n'a pas d'ordre de sélection d'objet
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
J'ai résumé comment changer les paramètres de démarrage de GRUB et GRUB2
J'ai fait un package npm pour obtenir l'ID de la carte IC avec Raspberry Pi et PaSoRi
[Python Kivy] Comment obtenir le chemin du fichier par glisser-déposer
[Python] Comment spécifier la position d'affichage de la fenêtre et la taille de matplotlib
Comment obtenir la différence de date et d'heure en secondes avec Python
Remarque Python: lorsque vous souhaitez connaître les attributs d'un objet
Cliquez sur les liens Selenium afin d'obtenir les éléments des pages individuelles
__Getattr__ et __getattribute__ pour personnaliser l'acquisition des attributs d'objet par des points
Essayez de séparer l'arrière-plan et l'objet en mouvement de la vidéo avec OpenCV
Comment vérifier la version de Django
Comment obtenir une sortie colorée sur la console
Comment enregistrer les informations de point caractéristique de l'image dans un fichier et l'utiliser pour la mise en correspondance
Comment sensibiliser VS Code à l'environnement venv et à ses avantages
[NNabla] Comment obtenir la sortie (variable) de la couche intermédiaire du réseau construit
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
Comment trouver le coefficient de la courbe approximative passant par les sommets en Python
Je souhaite stocker les résultats de% time, %% time, etc. dans un objet (variable)
Remarque: Comment obtenir le dernier jour du mois avec python (ajouté le premier jour du mois)
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Comment calculer la volatilité d'une marque
Comment trouver la zone du diagramme de Boronoi
Comment obtenir de l'aide dans un shell interactif
Comment obtenir des éléments de type dictionnaire de Python 2.7
Comment obtenir les fichiers dans le dossier [Python]
Comment obtenir l'accès par attribut et la conservation de l'ordre d'insertion dans Python dict
Comment démarrer avec Visual Studio Online ~ La fin de l'ère de la construction d'environnement ~
Comment confirmer le théorème de Persival en utilisant matplotlib et la transformée de Fourier de Scipy (FFT)
Passez un tableau de PHP à PYTHON et effectuez un traitement numpy pour obtenir le résultat
Obtenez le titre de Yahoo News et analysez les sentiments
Comment créer un article à partir de la ligne de commande
Comment connaître le numéro de port du service xinetd
Comment obtenir le nom de la variable lui-même 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
J'ai vérifié les versions de Blender et Python
Comment utiliser la commande grep et des exemples fréquents