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

Discussion: Comment automatiser des taches via un script ""python_init.py" ?

  1. #1
    Timide
    Date d'inscription
    novembre 2012
    C4D version
    R13 Studio
    OS
    windows 7
    Messages
    41

    Comment automatiser des taches via un script ""python_init.py" ?

    Bonjour,

    Voila je cherche a crée un script pour automatiser une tache sur une grand nombre de fichier .c4d.

    Je me suis donc tourné vers le scripte "python_init.py" dans préférence pour qu'il s’exécute dès l'ouverture de C4D (vue qu'il n'y a pas de ligne de commande pour lancer c4d.exe + un script, comme dans maya ou max...)

    Mon script doit donc automatisé l'ouverture d'un fichier.c4d (ca j'y arrive sans problème) et après collecter des informations dans celui-ci en vue de les exporter ?

    j' arrive via un script a collecter des informations mais que quand c4d est déjà lancer et le fichier 3d déjà ouvert. (ça c'est facile)

    Ce que je n'arrive pas a faire dans mon script "python_init.py" c'est a lire les information du fichier qu'il a ouvert lui (via la focntion "documents.LoadFile(FileName)")
    le script lance les commande mais n'attend pas la fin de celle ci pour exécuter la suite (très bizarre), donc il lance la commende d'ouverture du fichier mais après si je vais par exemple un simple : "fps = doc.GetFps()" ça ne marche pas vue que le fichier 3d n'est pas encore ouvert.

    Vous savez comment je peut arrivé a faire cela, est-ce que c'est seulement possible de le fait dans cinema 4d (j’espère car sinon je suis mal) ? la fonction "time.sleep()" dans une fonction ne marche pas, ça stop l’exécution de c4d.

    voici mon code pour mes test (enfin une des 50 version que j'ai tester en viens):

    Code PHP:

    import c4d
    import sys
    from c4d  import documents
    ,storage

    def main
    ():
        
    FileName="e:/work/cine4d/test/test.c4d" 
        
    documents.LoadFile(FileName)
        
    fps doc.GetFps()
        
    scenename doc.GetDocumentName()  
        
    pathname doc.GetDocumentPath()  
        
    rd doc.GetActiveRenderData()
        print 
    fps

    if __name__=='__main__':
        
    main()
        
    c4d.EventAdd() #update 
    merci pour le coup de main, ça fait 4 jours que je cherche en viens.(j'ai fait tous les forum sur cinema 4d du net sans trouver de solution)

    Par avance merci (je sais c'est pas simple!)
    Dernière modification par phobos34 ; 13/11/2012 à 10h46.

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

    À mon avis le document chargé se retrouve différent de la variable doc car elle a été initialisée avant son chargement.


    Essaie d'ajouter un : doc = c4d.documents.GetActiveDocument() après ton LoadFile().
    Dernière modification par César Vonc ; 13/11/2012 à 11h52.

  3. #3
    Timide
    Date d'inscription
    novembre 2012
    C4D version
    R13 Studio
    OS
    windows 7
    Messages
    41
    Merci César,

    ca marche impec ! (tu es trop fort)

    autre petite question, toujours dans le but de mon automatisation, je démarre c4d.exe depuis en fichier bat, dans ce fichier je passe
    en paramètre une variable (le nom et chemin du fichier a ouvrir)

    je récupère cette variable via "command.pyp" dans le rep préférence plugins.

    ca ca marche, voici mon code

    Code PHP:

    import c4d
    import sys

    def PluginMessage
    (iddata):
         if 
    id==c4d.C4DPL_COMMANDLINEARGS:
            global 
    path
            path
    =sys.argv[0]
            return 
    True

         
    return False 
    Le problème c'est que n'arrive pas a communiquer cette livrable "path" a mon script "python_init.py"
    je doit rajouter quoi comme code et dans quel script ?

    j'ai vue que le "python_init.py" s’exécuter avant "command.pyp" je peux faire comment pour qu'il attende cette info ?

    Encore merci César

  4. #4
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Là, j'avoue que je l'ignore.

    Mais pour le coup, pourquoi ne pas passer tout ton script dans command.pyp ?


    Ceci dit, j'aurais plutôt fait en sorte que python_init.py lise un petit fichier texte contenant la liste des fichiers à ouvrir :

    Code PHP:
    texte open(chemindufichiertexte"r")
    liste texte.readlines() 

  5. #5
    Timide
    Date d'inscription
    novembre 2012
    C4D version
    R13 Studio
    OS
    windows 7
    Messages
    41
    merci César, j'ai tous mi dans "command.pyp" et du coup ça marche impec.
    je ne peut pas mètre la liste dans un txt, les fichiers n'arrive pas tous en même temps (ca serait trop facile)

    Encore merci

Discussions similaires

  1. Répartition des objets avec "objet cloneur" et " effecteur spline"
    Par campa71 dans le forum Nouveaux membres
    Réponses: 9
    Dernier message: 15/11/2010, 21h17
  2. "Leili" concours Mediaworks "image fixe"
    Par jeffD dans le forum Concours Médiaworks
    Réponses: 19
    Dernier message: 17/06/2009, 09h06
  3. Réponses: 4
    Dernier message: 03/02/2009, 17h00
  4. Plugins :"PoseMirror" | "MultiParent" | "Home" , en COFFEE
    Par Floby dans le forum Programmation
    Réponses: 54
    Dernier message: 25/08/2008, 22h34
  5. Réponses: 10
    Dernier message: 06/02/2007, 11h08

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