Boutique Cinema 4D
Affichage des résultats 1 à 10 sur 10

Discussion: Mon panier à questions Python

  1. #1
    Dépendant
    Date d'inscription
    octobre 2011
    C4D version
    R15 Studio
    OS
    Win7 64 bits
    Messages
    404

    Post Mon panier à questions Python

    [c4d.ID_BASELIST_NAME]

    Bonjour,

    Qui saurait m'expliquer [c4d.ID_BASELIST_NAME] ??? je le croise parfois dans les script que je décortique pour apprendre mais je ne piges pas à quoi cela sert ? J'ai cherché dans la doc SDK pas grand chose la dessus ou bien j'ai pas cherché au bon endroit ?

    Merci

    Math
    Dernière modification par Math1712 ; 03/02/2015 à 16h38.

  2. #2
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Salut,

    c4d.ID_BASELIST_NAME est une constante, elle vaut 900.

    Le fait qu'elle soit entre crochet signifie que tu cherches la valeur d'une sorte de tableau à la clef 900 (plus précisément d'un GeListNode).

    Ainsi, objet[c4d.ID_BASELIST_NAME] renvoie le nom de l'objet. Glisse n'importe quel paramètre d'un objet dans le champ de la console Python pour voir comment récupérer sa valeur avec la constante correspondante.
    Dernière modification par César Vonc ; 01/02/2015 à 23h23.

  3. #3
    Dépendant
    Date d'inscription
    octobre 2011
    C4D version
    R15 Studio
    OS
    Win7 64 bits
    Messages
    404
    Ok merci ! Je pense avoir compris (sans en être complétement sur )

    Voila ce que j'en ai fait - je suis méga débutant soyez indulgent =>

    CacheTag1.c4d

    Si le nom du neutre est FC4D le tag xpresso est visible et le motext affiche Tag Visible
    Si le nom du neutre est différend de FC4D le tag xpresso est caché et le motext affiche Tag Caché
    Je me sert également [c4d.ID_BASELIST_NAME] pour renommer l'objet Motext

    Il faut cliquer n'importe ou pour que le changement s'effectue après le changement du nom du neutre, pourquoi faut-il cliquer ?
    Est-ce que mon code est correctement rédigé ?

    Math

  4. #4
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 617
    Pour ce genre de manip il y a aussi des fonction toutes faites. C'est à mon avis plus simple et surtout plus lisible.

    Code PHP:
        nom objet.GetName()
        
    Text.SetName(nom)

    au lieu de 

        nom
    =objet[c4d.ID_BASELIST_NAME]
        
    Text[c4d.ID_BASELIST_NAME]=nom 
    Sinon chez moi il n'y a pas besoin de cliquer pour mettre à jour le viewport.
    Normalement on écris c4d.EventAdd() pour signaler à c4d de mettre à jour mais dans un xpresso je suis pas sur.

    un peu noob aussi en python

  5. #5
    Dépendant
    Date d'inscription
    octobre 2011
    C4D version
    R15 Studio
    OS
    Win7 64 bits
    Messages
    404
    Ok Floc, là l'idée était d'utiliser [c4d.ID_BASELIST_NAME] mais bien sur que je comprends qu'il vaille mieux utiliser les fonctions toutes prêtes. J'avoue être perdu dans le SDK je ne suis pas sur d'en avoir saisi les tenants et les aboutissants et je ne sais pas qu'elle est la bonne méthode de recherche, j'en profite pour changer le titre de mon post car je vais avoir de nombreuses autres questions.

  6. #6
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 617
    Oui c'est vrai que toutes ces différentes facon d'acceder au données c'est plutôt perturbant.
    D'ailleurs moi aussi je patauge pas mal.
    Et oui la difficulté du python avec C4D c'est bien le SDK car le language lui-meme est plutôt agréable.
    J'ai un peu pratiqué maxscript et le mel de maya et je trouve le python de C4D assez ardu. En fait tu est directement face au SDK assez proche de la version C++. Mel ou maxscript sont des couche simplifiées au dessus du SDK.
    Apres il y a des avantages et des inconvénients.

    Mais il y a un lien qu'il faut que je retrouve ou le gars explique le pourquoi des différentes méthodes d'accès et notamment leur impact en termes de performance. Et bizarrement les accès direct sont apparemment les moins performants.

  7. #7
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Il y a plusieurs sujets là-dessus sur plugincafe, notamment celui-ci :

    http://www.plugincafe.com/forum/foru...s.asp?TID=5286

    Où ils préconisent d'utiliser plutôt Get/SetParameter ou des fonctions comme GetName(), GetString... car ça ne générerait pas d'erreur si l'index du BaseContainer n'existe pas, si j'ai bien compris.


    Mais bon...

    Ce serait plutôt logique si Get/Set est moins performant que l'accès direct avec les crochets, si les méthodes vérifient que l'index existe avant de le récupérer.

    Edit : Ah, t'as dit l'inverse, Floc. Oui en effet, ce serait curieux, faudrait comparer à l'occasion. : P
    Dernière modification par César Vonc ; 03/02/2015 à 21h34.

  8. #8
    Dépendant
    Date d'inscription
    octobre 2011
    C4D version
    R15 Studio
    OS
    Win7 64 bits
    Messages
    404
    Bon j'essaye de faire une interface toute bête avec 3 boutons ok, et j’essaye de changer la couleur du fond de l'interface

    GeDialog.SetDefaultColor(GROUP_ID1, c4d.COLOR_BG, color) pour color la console me renvoie TypeError: argument 3 must be c4d.Vector, not int

    C'est quoi c4d.Vector ?

    Merci

  9. #9
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    C'est un vecteur, donc défini par trois valeurs, ici RVB :

    c4d.Vector(1,0,1) donne du magenta

  10. #10
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 617
    J'ai retrouvé le lien pour ces histoires d'acces direct (subscripting ca s'apelle) ici. c'est sur cineversity.
    Et c'est bien ca, la methode direct serait "the slowest" !

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
Mediaworks - Logiciels 3D | Design Internet - Creation site internet