Aller au contenu
weSkelDOCUMENTATION
Documentation/Référence API/ObjectSet

ObjectSet

Ensembles Maya : ajout, retrait, lecture et capture des membres.

ClassAPI 2.0ORGANIZATION
objectNodeDGNodeContainerBaseObjectSet
from weSkel.src.core.node.dg.object_set.lib import ObjectSet

À exécuter dans Maya ou dans un processus mayapy initialisé. L’import om n’est nécessaire que si votre script utilise des types OpenMaya.

Élément Valeur
Classe ObjectSet
Module weSkel.src.core.node.dg.object_set.lib
Type Maya objectSet
Parent direct ContainerBase
Inventaire Membres définis ou redéfinis ici ; les membres hérités sont regroupés par parent dans chaque rubrique.

Signature : ObjectSet(node) → ObjectSet.

Paramètre Type accepté Défaut
node str | om.MObject | om.MObjectHandle | om.MFnDependencyNode | om.MFnSet Obligatoire

Enveloppe un nœud existant ou prépare un wrapper pour un nom absent ; ne crée pas le nœud. Utiliser create() séparément. Un objet ou type incompatible peut lever TypeError. L’identité partagée peut renvoyer un wrapper compatible déjà enregistré.

Propriétés Python définies ou redéfinies ici. L : lecture seule ; L/E : setter disponible, avec les restrictions précisées dans la fiche. Les types om.* appartiennent à maya.api.OpenMaya.

Propriété Type retourné Accès
mfn_set Optional[om.MFnSet] L
members om.MSelectionList L/E
flatten bool L/E

node.mfn_setLecture seule

Function set natif du set live, ou None si indisponible.

Élément Type / comportement
Retour Optional[om.MFnSet]
Type observé sur géométrie live MFnSet

node.membersLecture / écriture

Membres live sous forme de om.MSelectionList ; valeur préparée en mémoire sans nœud live.

Élément Type / comportement
Retour om.MSelectionList
Type observé sur géométrie live MSelectionList
Valeur du setter om.MSelectionList

Avant toute initialisation des membres, le getter peut renvoyer None, malgré son annotation. Le setter remplace les membres en deux étapes (vidage, puis ajout), sans transaction de rollback.

node.flattenLecture / écriture

Active la lecture récursive des sets imbriqués via la propriété members. Ne modifie pas la scène à lui seul.

Élément Type / comportement
Retour bool
Type observé sur géométrie live bool
Valeur du setter bool
Propriétés héritées de DGNode15
Propriété Type retourné Accès Description
dep_fn om.MFnDependencyNode L Function set live ; objet non attaché si le nœud est absent.
uuid str | None L UUID live, ou dernière valeur mémorisée si elle reste disponible.
name str | None L/E Nom live, sinon nom mémorisé.
absolute_name str | None L Nom absolu de namespace renvoyé par MFnDependencyNode.absoluteName() ; None sans nœud.
stripped_name str | None L/E Nom sans namespace, ou None si aucun nom.
namespace str | None L/E Namespace normalisé comme a:b ; None à la racine.
plugs Plugs | None L Gestionnaire des plugs du nœud live ; None sinon.
is_valid_dep_fn bool L Compatibilité du function set avec le MObject courant.
is_default_node bool L Indique un nœud par défaut de Maya ; False sans nœud.
is_from_referenced_file bool L Indique un nœud issu d’un fichier référencé ; False sans nœud.
is_locked bool L/E Verrouillage du nœud, distinct des locks de plugs.
is_shared bool L État partagé renvoyé par Maya ; False sans nœud.
plugin_name str | None L Nom du plugin Maya associé, éventuellement chaîne vide ; None sans nœud.
affect_animation bool L Résultat de MFnDependencyNode.affectsAnimation() ; False sans nœud.
type str | None L/E Type natif live ou type mémorisé.
Propriétés héritées de Node10
Propriété Type retourné Accès Description
mobject om.MObject L/E Objet Maya live, ou objet nul.
mobject_handle om.MObjectHandle L/E Handle associé au nœud.
api_type int | None L Identifiant du type API Maya.
api_type_str str L Nom du type API, par exemple "kTime".
exists bool L Le wrapper possède actuellement un nœud live.
is_null bool L L’objet Maya retourné est nul.
is_alive bool L L’objet existe avec un handle valide et vivant.
is_valid_handle bool L Validité du handle mémorisé.
is_dag_node bool L Compatibilité avec om.MFn.kDagNode.
hash_code int L Hash du handle Maya.

Les defaults et flags ci-dessous sont les déclarations des specs, pas une garantie de valeur live. Un descriptor peut renvoyer un proxy : .value lit sa valeur ; .plug donne accès au Plug. Les noms des proxies décrivent le résultat, sans demander d’importer des classes privées. Les types observés proviennent d’un cas de contrôle ; une entrée géométrique non connectée peut notamment valoir None.

Pour une écriture dont il faut vérifier l’échec, utiliser explicitement le Plug et contrôler le résultat live. Les setters de descriptors ne propagent pas tous les échecs natifs.

Propriété Plug Maya Retour
annotation annotation _ValuePlugProxy · .value: str
dn_set_members dnSetMembers list
dag_set_members dagSetMembers list
edge_only_set edgeOnlySet _ValuePlugProxy · .value: bool
edit_points_only_set editPointsOnlySet _ValuePlugProxy · .value: bool
facets_only_set facetsOnlySet _ValuePlugProxy · .value: bool
group_nodes groupNodes list
is_layer isLayer _ValuePlugProxy · .value: bool
member_wireframe_color memberWireframeColor _ValuePlugProxy · .value: int
partition partition None
renderable_only_set renderableOnlySet _ValuePlugProxy · .value: bool
used_by usedBy list
vertices_only_set verticesOnlySet _ValuePlugProxy · .value: bool

node.annotationSpec native

Accès au plug natif annotation.

Élément Type / comportement
Chemin Maya annotation
Retour de la propriété _ValuePlugProxy · .value: str
Type déclaré typed:string
Défaut déclaré ''
Flags input, output, stored
Lecture node.annotation.value
Affectation du descriptor node.annotation = value

node.dn_set_membersSpec native

Accès au plug natif dnSetMembers.

Élément Type / comportement
Chemin Maya dnSetMembers
Retour de la propriété list
Type déclaré array:typed:generic
Défaut déclaré ()
Flags array, input, connectable

node.dag_set_membersSpec native

Accès au plug natif dagSetMembers.

Élément Type / comportement
Chemin Maya dagSetMembers
Retour de la propriété list
Type déclaré array:typed:generic
Défaut déclaré ()
Flags array, input, connectable

node.edge_only_setSpec native

Accès au plug natif edgeOnlySet.

Élément Type / comportement
Chemin Maya edgeOnlySet
Retour de la propriété _ValuePlugProxy · .value: bool
Type déclaré numeric:bool
Défaut déclaré False
Flags input, output, stored
Lecture node.edge_only_set.value
Affectation du descriptor node.edge_only_set = value

node.edit_points_only_setSpec native

Accès au plug natif editPointsOnlySet.

Élément Type / comportement
Chemin Maya editPointsOnlySet
Retour de la propriété _ValuePlugProxy · .value: bool
Type déclaré numeric:bool
Défaut déclaré False
Flags input, output, stored
Lecture node.edit_points_only_set.value
Affectation du descriptor node.edit_points_only_set = value

node.facets_only_setSpec native

Accès au plug natif facetsOnlySet.

Élément Type / comportement
Chemin Maya facetsOnlySet
Retour de la propriété _ValuePlugProxy · .value: bool
Type déclaré numeric:bool
Défaut déclaré False
Flags input, output, stored
Lecture node.facets_only_set.value
Affectation du descriptor node.facets_only_set = value

node.group_nodesSpec native

Accès au plug natif groupNodes.

Élément Type / comportement
Chemin Maya groupNodes
Retour de la propriété list
Type déclaré array:typed:message
Défaut déclaré ()
Flags array, input, connectable

node.is_layerSpec native

Accès au plug natif isLayer.

Élément Type / comportement
Chemin Maya isLayer
Retour de la propriété _ValuePlugProxy · .value: bool
Type déclaré numeric:bool
Défaut déclaré False
Flags input, output, stored
Lecture node.is_layer.value
Affectation du descriptor node.is_layer = value

node.member_wireframe_colorSpec native

Accès au plug natif memberWireframeColor.

Élément Type / comportement
Chemin Maya memberWireframeColor
Retour de la propriété _ValuePlugProxy · .value: int
Type déclaré numeric:short
Défaut déclaré -1
Flags input, output, connectable, stored
Lecture node.member_wireframe_color.value
Affectation du descriptor node.member_wireframe_color = value

node.partitionSpec native

Accès au plug natif partition.

Élément Type / comportement
Chemin Maya partition
Retour de la propriété None
Type déclaré message
Défaut déclaré None
Flags input, output, connectable

Le setter du descriptor refuse l’affectation ; utiliser les opérations de connexion du Plug.

node.renderable_only_setSpec native

Accès au plug natif renderableOnlySet.

Élément Type / comportement
Chemin Maya renderableOnlySet
Retour de la propriété _ValuePlugProxy · .value: bool
Type déclaré numeric:bool
Défaut déclaré False
Flags input, output, stored
Lecture node.renderable_only_set.value
Affectation du descriptor node.renderable_only_set = value

node.used_bySpec native

Accès au plug natif usedBy.

Élément Type / comportement
Chemin Maya usedBy
Retour de la propriété list
Type déclaré array:typed:message
Défaut déclaré ()
Flags array, input, output, connectable

node.vertices_only_setSpec native

Accès au plug natif verticesOnlySet.

Élément Type / comportement
Chemin Maya verticesOnlySet
Retour de la propriété _ValuePlugProxy · .value: bool
Type déclaré numeric:bool
Défaut déclaré False
Flags input, output, stored
Lecture node.vertices_only_set.value
Affectation du descriptor node.vertices_only_set = value
Specs héritées de ContainerBase21
Propriété Plug Maya Retour Description
black_box blackBox _ValuePlugProxy · .value: bool Présentation du container en boîte noire dans Maya.
border_connections borderConnections list[str] Données de connexions à la frontière du container.
creator creator _ValuePlugProxy · .value: str Métadonnée de créateur du container.
creation_date creationDate _ValuePlugProxy · .value: str Métadonnée de date de création.
custom_treatment customTreatment _ValuePlugProxy · .value: str Traitement personnalisé du container.
hyper_layout hyperLayout None Connexion au layout de l’Hypergraph.
icon_name iconName _ValuePlugProxy · .value: str Nom d’icône associé au container.
is_collapsed isCollapsed _ValuePlugProxy · .value: bool État replié du container dans les vues Maya.
is_hierarchical_connection isHierarchicalConnection TypedArrayProxy Indicateurs de connexions hiérarchiques.
rmb_command rmbCommand _ValuePlugProxy · .value: str Commande de menu contextuel associée au container.
template_name templateName _ValuePlugProxy · .value: str Nom du template du container.
template_path templatePath _ValuePlugProxy · .value: str Chemin du template du container.
template_version templateVersion _ValuePlugProxy · .value: int Version du template du container.
container_type containerType _ValuePlugProxy · .value: str Métadonnée de type du container.
ui_treatment uiTreatment _ValuePlugProxy · .value: int Mode de présentation du container.
view_mode viewMode _ValuePlugProxy · .value: int Mode de vue du container.
view_name viewName _ValuePlugProxy · .value: str Nom de la vue du container.
published_node_info publishedNodeInfo ArrayCompoundProxy Tableau des informations sur les nœuds publiés.
published_node publishedNodeInfo[].publishedNode IndexedPathProxy Connexion vers le nœud publié à un indice donné.
is_hierarchical_node publishedNodeInfo[].isHierarchicalNode IndexedPathProxy Indicateur hiérarchique d’un nœud publié.
published_node_type publishedNodeInfo[].publishedNodeType IndexedPathProxy Type déclaré d’un nœud publié.
Specs héritées de DGNode6
Propriété Plug Maya Retour Description
message message None Plug de message du nœud ; sert aux connexions, sans valeur numérique.
frozen frozen _ValuePlugProxy · .value: bool État natif de gel de l’évaluation.
is_historically_interesting isHistoricallyInteresting _ValuePlugProxy · .value: int Niveau d’intérêt du nœud dans l’historique Maya.
bin_membership binMembership _ValuePlugProxy · .value: str Appartenance aux bins Maya.
caching_enabled caching _ValuePlugProxy · .value: bool Activation du cache natif du nœud.
caching_node_state nodeState _ValuePlugProxy · .value: int État d’évaluation natif nodeState.
Méthode Retour
create None
snapshot ObjectSetSnapshot
finalize None
get_members om.MSelectionList
clear_members None
add_members None
add_member None
remove_members None
remove_member None
is_member bool

node.create() → NoneMéthode

Crée le set avec la sélection préparée, puis rejoue une éventuelle capture mémorisée. Ne fait rien si le set existe déjà.

Élément Type / comportement
Retour None

node.snapshot(profile: str='rig') → ObjectSetSnapshotMéthode

Capture un dictionnaire d’état SVD et ajoute les champs spécifiques de la classe. Mémorise cette capture sur le wrapper ; ce n’est pas une sauvegarde complète de scène.

Élément Type / comportement
Retour ObjectSetSnapshot
profile str · défaut : 'rig'

Les membres sont enregistrés par noms de nœuds, sans indices de composants ni chemins d’instances complets. Le round-trip documenté concerne des objets entiers.

node.finalize(snapshot: Optional[Mapping[str, Any]]=None, **kwargs) → NoneMéthode

Rejoue la capture parente, restaure flatten et remplace les membres depuis les noms mémorisés.

Élément Type / comportement
Retour None
snapshot Optional[Mapping[str, Any]] · défaut : None
**kwargs Any · défaut : —

Rejoue d’abord la capture parente, puis résout les noms des membres, restaure flatten et remplace la sélection. Un nom introuvable peut interrompre le parcours après des changements déjà appliqués.

node.get_members(flatten: Optional[bool]=False) → om.MSelectionListMéthode

Lit les membres du set live, en incluant les membres des sets imbriqués si flatten=True. Renvoie une sélection vide sans set live.

Élément Type / comportement
Retour om.MSelectionList
flatten Optional[bool] · défaut : False

node.clear_members() → NoneMéthode

Vide le set live et la liste mémorisée ; ne supprime pas les objets membres.

Élément Type / comportement
Retour None

node.add_members(selection_list: MembersLike) → NoneMéthode

Ajoute les objets au set live. Sans set live, remplace la sélection préparée par les objets fournis.

Élément Type / comportement
Retour None
selection_list om.MSelectionList | Sequence[MemberLike] · défaut : —

Sans nœud live, les appels successifs remplacent la sélection préparée au lieu de l’accumuler. Créer le set avant des ajouts successifs. Les conversions de MSelectionList retombent sur les objets : ne pas supposer la préservation des sélections de composants.

node.add_member(member: MemberLike) → NoneMéthode

Ajoute un objet en déléguant à add_members([member]).

Élément Type / comportement
Retour None
member str | om.MObject | om.MObjectHandle | om.MFnDependencyNode | om.MDagPath | om.MFnDagNode · défaut : —

node.remove_members(selection_list: MembersLike) → NoneMéthode

Retire les objets fournis de la sélection et du set live ; ne supprime pas les nœuds.

Élément Type / comportement
Retour None
selection_list om.MSelectionList | Sequence[MemberLike] · défaut : —

node.remove_member(member: MemberLike) → NoneMéthode

Retire un objet s’il est présent ; ne supprime pas le nœud.

Élément Type / comportement
Retour None
member str | om.MObject | om.MObjectHandle | om.MFnDependencyNode | om.MDagPath | om.MFnDagNode · défaut : —

node.is_member(member: MemberLike) → boolMéthode

Teste la présence de l’objet dans la sélection de membres, par identité MObject.

Élément Type / comportement
Retour bool
member str | om.MObject | om.MObjectHandle | om.MFnDependencyNode | om.MDagPath | om.MFnDagNode · défaut : —
Méthodes héritées de DGNode4
Méthode Retour Description
delete None Déconnecte les connexions live, détache le wrapper puis supprime le nœud.
snapshot_svd SVDSnapshot Capture Source / Value / Destinations pour la liste demandée.
svd SVDView Renvoie une vue live en lecture seule de la source, de la valeur et des destinations ; ce n’est pas une capture figée.
clear_attr_cache None Vide le cache d’attributs de cette instance ; ne supprime aucun nœud et ne vide pas le registre global de wrappers.
Méthodes héritées de Node2
Méthode Retour Description
has_fn(fn_type) bool Tester la compatibilité avec un function set Maya.
clear_node_registry() None Détacher les wrappers enregistrés et vider leur registre partagé.
Attribut Valeur / composition
NODE_TYPE 'objectSet'
SPEC_LAYERS get_dg_specs_all, get_container_base_specs_all, get_object_set_specs_all

NODE_REGISTRY et les autres attributs de classe non redéfinis restent hérités. Les types Snapshot exportés décrivent des dictionnaires ; utiliser node.snapshot() pour effectuer une capture.

Point Comportement
Identité Un nœud recréé sous le même nom est un nouvel objet Maya.
Création et géométrie Le constructeur ne crée rien ; appeler create() avant les opérations live.
Capture Les snapshots peuvent contenir des objets Maya ; ne pas supposer un JSON prêt à exporter ni une reconstruction complète de géométrie.
members Avant toute initialisation des membres, le getter peut renvoyer None, malgré son annotation. Le setter remplace les membres en deux étapes (vidage, puis ajout), sans transaction de rollback.
add_members Sans nœud live, les appels successifs remplacent la sélection préparée au lieu de l’accumuler. Créer le set avant des ajouts successifs. Les conversions de MSelectionList retombent sur les objets : ne pas supposer la préservation des sélections de composants.
snapshot Les membres sont enregistrés par noms de nœuds, sans indices de composants ni chemins d’instances complets. Le round-trip documenté concerne des objets entiers.
finalize Rejoue d’abord la capture parente, puis résout les noms des membres, restaure flatten et remplace la sélection. Un nom introuvable peut interrompre le parcours après des changements déjà appliqués.

Exemple autonome pour le Script Editor Python de Maya. Dans mayapy, initialiser maya.standalone avant ce bloc. La démonstration crée ses propres nœuds et les supprime dans le finally.

from uuid import uuid4
from weSkel.src.core.node.dg.object_set.lib import ObjectSet
from weSkel.src.core.node.dag.transform.lib import Transform
suffix = uuid4().hex[:8]
node = ObjectSet("api_set_" + suffix)
member = Transform("api_set_member_" + suffix)
try:
member.create()
node.create()
node.add_member(member.mobject)
assert node.is_member(member.mobject)
assert node.get_members().length() == 1
state = node.snapshot()
node.clear_members()
assert node.get_members().length() == 0
node.finalize(state)
assert node.is_member(member.mobject)
node.remove_member(member.mobject)
assert not node.is_member(member.mobject)
assert member.exists
print("ObjectSet: membership and snapshot replay OK")
finally:
node.delete(snapshot=False)
member.delete(snapshot=False)

Résultat attendu : ObjectSet: membership and snapshot replay OK.

Checkpoint SDK 87c3486. Inventaire des membres et lectures de contrôle vérifiés sous Maya 2025.3 et 2026.3 ; exemple exécuté dans les deux versions. Les méthodes ne sont pas toutes couvertes par cet exemple. Les limites indiquées restent présentes dans les sources ; le package compilé n’est pas validé par ces contrôles.