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

Discussion: expression pour renommer des objets

  1. #1
    Gourou Avatar de tabou
    Date d'inscription
    juin 2002
    C4D version
    R21 Perpétuelle
    OS
    OS X 10.13.6
    Messages
    2 272

    expression pour renommer des objets

    J'ai écrit cette petite expression parceque j'en avais ras le bol de passer du temps à renommer de longues séries d'objet.
    Pour s'en servir il suffit de mettre cette expression sur le parent et automatiquement les enfants prennent le nom du parent avec un séparateur et un numéro d'ordre. Par la suite tout nouvel objet qu'on met dans le groupe sera automatiquement renommé, pour éviter cela il suffit de supprimer l'expression après usage.
    Voilà, je me suis dit que ça pouvait peut être servir à d'autres utilisateurs...

    /* Cette expression, une fois placée sur le parent d’un groupe, renomme
    automatiquement tous les enfants en donnant le nom du parent plus un numéro.

    num permet de choisir à partir de quel numéro commence la numérotation
    separateur permet de choisir le type de separateur (surprenant non ?)

    tabou juillet 2002 http://tabou.free.fr/ tabou@free.fr
    */

    main(doc,op)
    {

    var nom= op->GetName();if (!nom) return;
    var objet= op->GetDown();if (!objet) return;
    var num= 1;
    var separateur= ".";

    while (objet)
    {
    objet ->SetName(stradd(nom,separateur,tostring(num)));
    objet= objet->GetNext();if (!objet) return;
    num++;
    }

    }

  2. #2
    Invité
    Date d'inscription
    juin 2002
    C4D version
    R16 Studio
    OS
    Win 7 Pro
    Messages
    4 252

    Excellent !

    Ah, enfin un nouveau message pour ma rubrique expression !
    Bravo Tabou pour ce script qui est très pratique et simple d'utilisation, c'est exactement comme ça que le Coffee doit aider les utilsateurs c4d: efficace et simple !
    Merci pour cet outil.
    Je vais l'ajouter à la liste des expressions déjà présentes, est-ce que cette expression à un nom ? Il lui en faudrait un pour la répertorier...

  3. #3
    Gourou Avatar de tabou
    Date d'inscription
    juin 2002
    C4D version
    R21 Perpétuelle
    OS
    OS X 10.13.6
    Messages
    2 272

    nom de l'expression

    je l'ai appelée renommer_hierarchie mais si tu as un nom plus précis ou plus évocateur n'hésite pas.

    Est ce que tu sais si ce genre de choses pourra être fait avec XPresso ou s'il faudra continuer à moudre du bon vieux COFFEE ?

  4. #4
    Invité
    Date d'inscription
    juin 2002
    C4D version
    R16 Studio
    OS
    Win 7 Pro
    Messages
    4 252

    Xpresso, Coffee, Capucino, Chicore...

    Pour l'instant je n'ai pas d'informations sur le sytème Xpresso, et je ne sais pas si c'est le remplaçant de Coffee, avec la possibilité de faire ses propres programmes. D'après les captures d'écrans sur le site de Maxon, on dirait plutôt qu'il s'agit d'un système qui gére l'interactivité entre les objets d'une scène en utilisant une interface graphique de type organigramme où on relie entre eux les objets par leurs paramètres. Par exemple si on a une sphère et un cube, si on relie position X de la sphère à rotation Z du cube, alors le déplacement de la spère sur son axe X va provoquer la rotation sur son axe Z du cube. (voir les vidéos sur les Thinking Particles...)
    Pour l'instant c'est le seul truc que j'ai vu d' Xpresso, mais je pense que le Coffee va rester car c'est le langage de base de c4d pour les développements de plugins et je ne pense pas que Maxon balaye d'un coup tout cet acquis...

  5. #5

    Re: Xpresso, Coffee, Capucino, Chicore...

    Citation Envoyé par Tengaal
    D'après les captures d'écrans sur le site de Maxon, on dirait plutôt qu'il s'agit d'un système qui gére l'interactivité entre les objets d'une scène en utilisant une interface graphique de type organigramme où on relie entre eux les objets par leurs paramètres. Par exemple si on a une sphère et un cube, si on relie position X de la sphère à rotation Z du cube, alors le déplacement de la spère sur son axe X va provoquer la rotation sur son axe Z du cube. (voir les vidéos sur les Thinking Particles...)
    Pour l'instant c'est le seul truc que j'ai vu d' Xpresso, mais je pense que le Coffee va rester car c'est le langage de base de c4d pour les développements de plugins et je ne pense pas que Maxon balaye d'un coup tout cet acquis...
    Oui, c´est tout exacte.
    Plugindesign & Graphic Design

  6. #6

    Re: expression pour renommer des objets

    C´est une vraiment pratique script. Merci pour ca. Mais on devait considerer les enfants des enfants d´objet actif qui ne sont pas affecter dans le script. Alors j´ai fait des changements:

    Code:
    CheckHierarchy(obj, stopAt) 
    {
      if (!obj) return NULL;
    
      var next;
      if (next = obj->GetDown()) return next;
      if (next = obj->GetNext()) return next;	
    
      var up = obj; 
      while (up = up->GetUp())
      {
        if (up == stopAt) return NULL;
        if (next = up->GetNext()) return next;
      }  
    }
    
    main(doc,op)
    {
    
    var parent = op;
    var obj = parent->GetDown();if (!obj) return; 
    var nom = parent->GetName();
    var num = 1; 
    var separateur= "."; 
    
    	while(obj)
    	{
    	  obj ->SetName(stradd(nom,separateur,tostring(num))); 
    	  obj = CheckHierarchy(obj, parent);
    		num++;
    	}
    
    }
    maintenant le script va recursivement à travers tous la hierarchie. :idea:
    CheckHierarchy function est un "framework" que j´ai fait qu´on peut prendre toujours pour des chose recursive. Feel Free to use it for whatever you want (sorry, couldn´t translate it into french that fast :oops: )
    Plugindesign & Graphic Design

  7. #7
    Gourou Avatar de tabou
    Date d'inscription
    juin 2002
    C4D version
    R21 Perpétuelle
    OS
    OS X 10.13.6
    Messages
    2 272

    CheckHierarchy

    Merci beaucoup Designer pour ta fonction "CheckHierarchy"
    J'avais justement l'intention de m'attaquer au problème de la récursivité dans la hiérarchie et comme je ne pense pas pouvoir faire mieux que toi j'utiliserai donc ta fonction.
    Ca me fera gagner du temps parceque je suis débutant dans l'utilisation de COFFEE et je ne peux pas écrire trois lignes de code sans plonger dans la doc. :roll:

  8. #8
    Vieux Croûton Avatar de Aurety
    Date d'inscription
    juillet 2002
    C4D version
    R17 Studio
    OS
    Mac
    Messages
    14 477
    Billets dans le blog
    3

    Merci Tabou & Designer ! exactement ce que je cherchais

    Bon dieu, c'est-y pas possible qu'il fasse obtenir ça par du coffee alors que ce devrait être par défaut sur C4D ! :x
    kenavo !! // Pinterest KAMIGAZ®

  9. #9
    Invité
    Date d'inscription
    juin 2002
    C4D version
    R16 Studio
    OS
    Win 7 Pro
    Messages
    4 252

    expression pour renommer des objets

    Merci pour ce complément de script.
    J'aurais une question sur le Coffee, et comme "Designer" connait parfaitement ça, j'en profite ! :wink:
    J'ai découvert dans le livre d'Arntd von Koenigsmarck, qu'on pouvait stocker des valeurs personnelles dans les containers des objets, donc voici ma question:
    Est-ce qu'il y a une zone réservée dans les containers pour le stockage de leurs propres paramètres ? Par exemple, est-ce que je peux stocker ma valeur personnelle à n'importe quelle position dans le container ? ( BaseContainer->SetData(position, ma_valeur); )

  10. #10

    expression pour renommer des objets

    Citation Envoyé par Tengaal
    J'ai découvert dans le livre d'Arntd von Koenigsmarck, qu'on pouvait stocker des valeurs personnelles dans les containers des objets, donc voici ma question:
    Est-ce qu'il y a une zone réservée dans les containers pour le stockage de leurs propres paramètres ? Par exemple, est-ce que je peux stocker ma valeur personnelle à n'importe quelle position dans le container ? ( BaseContainer->SetData(position, ma_valeur); )
    Oui et Non. Oui il y a bien sûr des zones réservée pour tes valeurs dans un container. Mais tu ne les accèdes pas avec une position mais avec une ID. Une example:

    var mon_ID = 10000; //L´ID vous pouvez choisir comme tu veux
    var ma_valeur = "salut!";

    // Stocker valueholder[mon_ID] = ma_valeur;
    var bc = new(BaseContainer);
    bc->SetData(mon_ID, ma_valeur);

    // Recevoir valeur = valueholder[mon_ID]
    var valeur = bc->GetData(mon_ID);


    Alors, la meme chose comme avec les containers de par example un primitive.

    Tu pourrais aussi stocker tes valeurs dans un cinema 4d propres container, par example de la "Cube Primitive" mais pour cela tu DOIS recevoir une ID uniquement de la plugincafé!!!!! C´est pas pour rigoler. Tu pourrais detruire des data du container si tu ne prend pas un id unique! :!:
    Plugindesign & Graphic Design

  11. #11
    Invité
    Date d'inscription
    juin 2002
    C4D version
    R16 Studio
    OS
    Win 7 Pro
    Messages
    4 252

    containers

    Oui d'accord, je comprends très bien l'importance des ID !
    Je trouve donc étonnant que dans son livre ("Maxon Cinema 4D 7.0" p.160), Arndt von Koenigsmarck place ses valeurs personelles dans le container d'un objet en utilisant directement des chiffres (0 à 200) et non avec des IDs ! :?
    Il ecrit par exemple:

    (...)
    var follow=doc->FindObject("Follow");
    var bc=follow->GetContainer();
    if (sec==0.0)
    {
    for (j=1;j<Delay+1;j++)
    {
    bc->SetData(j,op->GetPosition());
    bc->SetData(j+200,op->GetRotation());
    bc->SetData(98,sec);
    (...)
    }
    }

    Cette méthode doit donc être plutôt risquée si "Follow" n'est pas un Null object ?

  12. #12
    Invité
    Date d'inscription
    juin 2002
    C4D version
    R16 Studio
    OS
    Win 7 Pro
    Messages
    4 252

    Rep: containers

    Je viens de regarder la scène d'exemple qui utilise l'expression Coffee (CD fournit avec le livre) et aucune ID n'est définie dans le script, et l'objet "Follow" est un cube primitif !

  13. #13

    Re: containers

    Citation Envoyé par Tengaal
    Oui d'accord, je comprends très bien l'importance des ID !
    Je trouve donc étonnant que dans son livre ("Maxon Cinema 4D 7.0" p.160), Arndt von Koenigsmarck place ses valeurs personelles dans le container d'un objet en utilisant directement des chiffres (0 à 200) et non avec des IDs ! :?
    Hehe, oui, c´est vraiment Arndt.. Alors, Bien sur les chiffres sont les IDs et je crois (ou mieux j´éspère ) que Arndt avait controller les IDs de la cube avant qu´il a écrit cette expression...mais moi je ne comprend pas aussi pourquoi il le fait sans dire quelque chose dans son text.

    Je vais lui questionner plus tard. Mais je crois qu´y a une explication logique pour ca comme je connais Arndt, et il n´est pas de débutant en coffee.
    Plugindesign & Graphic Design

  14. #14

    Re: containers

    salut ,

    oui c´est vraiment bizarre est pas qc qui n´offre aucun inconvénient. alors, je comprend pas pourquoi il fait ca (je vais lui demander plus tard).

    Bien sur, on peut faire ca, mais c´est comme j´ai déjà dit dangereux sans une id unique!

    Dans des expressions on devait prendre des variables globales pour stocker des valeurs.
    Plugindesign & Graphic Design

Discussions similaires

  1. objets pour sims2
    Par chantalou dans le forum Nouveaux membres
    Réponses: 6
    Dernier message: 27/08/2007, 21h01
  2. expression pour camera
    Par alexandreh dans le forum Xpresso
    Réponses: 1
    Dernier message: 07/04/2005, 21h14

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