PDA

Voir la version complète : Constructeur d'un ObjectData



César Vonc
15/11/2019, 09h20
Salut,

J'ai remarqué un comportement que je n'arrive pas à comprendre :

Le constructeur d'un plugin de type ObjectData modifier (comme le Spherify Modifier des exemples) est appelé chaque fois qu'on change un paramètre différent dans le plugin.


Par exemple : placer un print "test" dans le __init__
Dans C4D, créez un objet, placerl e modifier dedans, modifiez la valeur du rayon, puis de l'intensité, la fonction __init__ sera appelée à chaque changement.

C'est assez curieux, du coup ma question : Comment faire pour qu'une propriété de la classe ne soit pas écrasée à chaque appel du constructeur ?

Par exemple pour définir si un plugin est activé, sans devoir lancer le process de vérification à chaque fois, j'aimerais sauvegarder cet état dans la propriété de ma classe.


Je suis en R21 mais c'est la même chose en R19.

valkaari
15/11/2019, 15h41
yop,
ça arrive dans pleins d'endroits les tags par exemple.

Normalement tu devrais utiliser la fonction CopyTo (https://developers.maxon.net/docs/Cinema4DPythonSDK/html/modules/c4d.plugins/BaseData/NodeData/index.html?highlight=copyto#NodeData.CopyTo)qui doit être appelée après et qui a pour but de transférer les données de l'ancien vers le nouveau NodeData généré.

et si tu utilises CopyTo, tu devrais utiliser Read/Write qui sont utilisés quand tu sauvegardes le fichier c4d.

César Vonc
16/11/2019, 00h18
Ok merci !