[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4698: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4700: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4701: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4702: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
Blenderlounge • Consulter le sujet - Enumérations aaaaajnjcbdjhc

Enumérations

Ici on parle des scripts

Modérateurs : frez, Yadoob, stilobique, Matpi, ModSquad

Enumérations

Message par Brice » 16 Nov 2014, 22:47

Bonjour, comment utilise t-on les fonctions get et set avec une EnumProperty qui est un set (ENUM_FLAG), sachant qu'elles sont censées accepter ou renvoyer un seul int dans tous les cas de figure :?:
Avatar de l’utilisateur
Brice
 
Message(s) : 44
Inscription : 21 Sep 2013, 19:20

Re: Enumérations

Message par lapineige » 16 Nov 2014, 23:42

Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Enumérations

Message par Brice » 17 Nov 2014, 20:21

L'énumération peut avoir plusieurs valeurs à la fois parmi toutes ses valeurs possibles, c'est bien le rôle de l'option ENUM_FLAG si je dis pas d'énormité.
Si je passe au constructeur une fonction getter qui renvoie un objet set j'ai une erreur qui dit qu'une valeur int est attendue, ça fonctionne très bien pour une énumération classique qui ne peut avoir qu'une seule valeur à la fois, mais dans le cas d'un set c'est problématique car comment peut-on interpréter des combinaisons de plusieurs valeurs avec une seule :?: :!:
Avatar de l’utilisateur
Brice
 
Message(s) : 44
Inscription : 21 Sep 2013, 19:20

Re: Enumérations

Message par lapineige » 17 Nov 2014, 21:19

Bon c'est toujours pas clair ^^
Bon je ne connait pas l'ENUM_FLAG, ça n'aide pas.

Mais je me dis que l'enum marche à partir de valeurs indexées, get doit peut être renvoyer l'index. Fait le test ;-)
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Enumérations

Message par Brice » 18 Nov 2014, 00:42

Je suppose que ça doit être un tableau de bits convertit en int, il reste plus qu'à trouver la logique, car quand le setter est appelé il peut donner l'id de l'item comme un autre nombre supérieur à l'id du dernier item.
Avatar de l’utilisateur
Brice
 
Message(s) : 44
Inscription : 21 Sep 2013, 19:20

Re: Enumérations

Message par lapineige » 18 Nov 2014, 00:48

Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Enumérations

Message par Brice » 18 Nov 2014, 20:29

Avatar de l’utilisateur
Brice
 
Message(s) : 44
Inscription : 21 Sep 2013, 19:20

Re: Enumérations

Message par lapineige » 18 Nov 2014, 21:01

Ça ne marche pas pour une raison simple: ta variable globale n'existe qu'a l'exécution du script, mais elle n'est pas disponible le reste du temps (ce n'est plus ton script qui est exécuté, mais les fonctions qu'il a créé).
Utilise une propriété pour cela ;-) (tu vois comment faire ?)
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Enumérations

Message par Brice » 18 Nov 2014, 23:57

Bon là j'ai un peu de mal à visualiser, j'utilise souvent ça en plus, qu'est ce que ça implique concrètement ? Ce que je mets dans ma variable est pourtant intact, d'une exécution à l'autre je peux la lire sans qu'elle soit réinitialisée, et je ne demande pas à Blender d'y accéder puisque j'utilise des fonctions get/set intermédiaires, je comprends pas dans quel sens je dois prendre ça (se gratte la tête :P)
Avatar de l’utilisateur
Brice
 
Message(s) : 44
Inscription : 21 Sep 2013, 19:20

Re: Enumérations

Message par lapineige » 19 Nov 2014, 00:07

Je vais essayer d'être clair: ta variable globale n'est pas accessible depuis une autre partie de Blender (question de design, de sécurité, etc).
Elle appartient au script et uniquement au script.
==> si tu essaye d'y accéder depuis un autre script ou lors de l'exécution d'un opérateur, elle ne sera pas reconnu (elle "n'existera pas").
Il te faut utiliser les propriétés de Blender, qui sont des "variables" globales pour lui.

Après une variable d'une classe telle qu'un opérateur sera accessible également.

PS: en général, sauf besoin spécifique, évite les variables globales, c'est risqué et pas très propre.
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Enumérations

Message par Brice » 19 Nov 2014, 20:40

Oui je connais cette réputation, mais bon ça reste du script, c'est surtout pour dépanner; d'un autre côté ça me semble plus discret mais bon...

Donc pour en revenir au problème je comprends bien la nuance mais dans mon cas je ne vois pas ce que ça apporte, à moins que je m'y prenne mal. J'ai crée une propriété IntProperty sur la scène et j'y accède par self.ma_propriété dans le getter et le setter, mais le problème reste le même. Quand je clique sur un bouton un autre est également sélectionné, et je ne comprends toujours pas le sens de la valeur que Blender me passe dans le setter, donc au final c'est exactement la même chose.

Etant donné que mon énumération comporte 4 éléments et que c'est un set, je m'attendrais à ce que Blender me donne une valeur entre 0 (0000) et 15 (1111), mais non monsieur utilise les ID, ok, alors une valeur d'ID entre 1 et 4 et je me débrouille en interne pour savoir ce qui est sélectionné ou pas ? Même pas, Blender me donne une valeur entre 1 et 7, bon sang mais qu'est ce que je fais avec ça, on ne parle la même langue c'est pas possible :!: :mrgreen:
Avatar de l’utilisateur
Brice
 
Message(s) : 44
Inscription : 21 Sep 2013, 19:20

Re: Enumérations

Message par Brice » 23 Nov 2014, 21:24

Avatar de l’utilisateur
Brice
 
Message(s) : 44
Inscription : 21 Sep 2013, 19:20

Re: Enumérations

Message par lapineige » 23 Nov 2014, 22:18

Clair que ce n'ai pas évident, d'ailleurs je ne suis pas sûr de suivre ton explication (mais bon il est tard).

Désolé de ne pas t'avoir répondu, je m'étais plongé la-dedans, mais j'avais pas eu le temps de te répondre - et j'avoue avoir un poil zappé :mrgreen:.
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Enumérations

Message par Brice » 23 Nov 2014, 23:12

Pas de problème, c'est le genre de truc où il faut vraiment coller le nez dessus. ^^
Avatar de l’utilisateur
Brice
 
Message(s) : 44
Inscription : 21 Sep 2013, 19:20


Retour vers Scripts - Python - OSL

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)

cron