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

Discussion: script python pour assembler des objets de la mediatheque a partir d'un texte importé

  1. #1
    Timide Avatar de leto
    Date d'inscription
    août 2002
    C4D version
    R15 Broadcast
    OS
    windows 7
    Messages
    55

    Question script python pour assembler des objets de la mediatheque a partir d'un texte importé

    Bonjour à tous,

    j'aurais besoin pour mon boulot d'un script python qui aurait les fonctionnalités suivantes :
    - import d'un document txt qui contient un texte classique (phrases - paragraphes - .... )
    - identification dans ce texte de plusieurs noms d'objet et recherchent de correspondance avec des objets 3d de la médiathèque de c4d
    - import de tous ces objets 3d dans une scene c4d.

    est ce, à votre avis, possible ou suis-je à coté de la plaque ?

    merci
    L

  2. #2
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Pour ouvrir un fichier texte et le parcourir, ça va, mais pour le chercher dans la médiathèque, là j'avoue que je ne vois pas comment !

    J'ai fait rapidement un début de script qui recherche dans un fichier texte une série de mots et affiche ceux trouvés dans la console, mais c'est tout...

    Si quelqu'un a une idée pour la suite :

    Code PHP:
    import c4d
    from c4d import gui

    # Dictionnaire
    # Mot à chercher dans le fichier : mot à chercher dans la médiathèque
    dico = {"voiture" : [False"car"],
            
    "ferrari" : [False"car"],
            
    "avion" : [False"plane"]
    }

    def accents(txt) :
        
    txt txt.replace("à""a")
        
    txt txt.replace("â""a")
        
    txt txt.replace("é""e")
        
    txt txt.replace("ê""e")
        
    txt txt.replace("è""e")
        
    txt txt.replace("ë""e")
        
    txt txt.replace("î""i")
        
    txt txt.replace("ï""i")
        
    txt txt.replace("ù""u")
        return 
    txt

    def main
    ():
        
    chem c4d.storage.LoadDialog()
        if 
    chem is None : return
        
    chem chem.decode('UTF-8''strict')
        
    fic open(chem'r')
        
        
    ligne fic.readline()
        while 
    ligne :
            
    ligne ligne.lower()
            
    ligne accents(ligne)
            
            for 
    mc in dico.keys() :
                if 
    dico[mc][0] : continue
                if 
    mc in ligne dico[mc][0] = True
            ligne 
    fic.readline()
        
        
    fic.close()
        
        for 
    mottab in dico.items() :
            if 
    not tab[0] : continue
            
    media tab[1]
            print 
    motmedia
        
    if __name__=='__main__':
        
    main() 
    Dernière modification par César Vonc ; 30/12/2014 à 20h16.

  3. #3
    Timide Avatar de leto
    Date d'inscription
    août 2002
    C4D version
    R15 Broadcast
    OS
    windows 7
    Messages
    55

    suite

    merci beaucoup , ça fonctionne !

    l'idée est de pouvoir créer des scènes rapidement en important les bons objets lorsqu'il faut faire de manière répétitive des illustrations de documents écrits.

    Par contre, je n'ai effectivement pas trouvé sur la doc python en ligne de maxon de référence à la médiathèque ?
    C'est peut être contournable mais cela oblige à créer une bibliothèque perso de scènes et d'objet en dehors de 4cd
    , avec perte des avantages de la médiathèque.
    je continue à chercher..et je vais étudier ton code à la loupe (je démarre dans le python)

    Merci encore
    L

  4. #4
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    Bonjour,

    Pour la médiathèque voici un exemple pour charger Fred de la bibliothèque Prime :

    Code:
    import c4d
    
    
    def main():
        #le nom commence par preset:// ensuite nom de la librairie, etc... la casse n'a apparemment pas d'influence
        fn = 'preset://prime.lib4d/humans/fred.c4d'
        
        #chargement du doc sans l'ouvrir dans c4d (sinon utiliser LoadFile)
        #dans ce cas je ne charge que les objets voir exemple suivant pour avoir objets et matériaux
        doc_media = c4d.documents.LoadDocument(fn,c4d.SCENEFILTER_OBJECTS)
        
        #on cherche l'objet Fred (atention ici la casse est importante
        fred = doc_media.SearchObject('Fred')
    
        #on clone l'objet et on l'insère dans notre document ouvert (doc)
        copie = fred.GetClone()
        doc.InsertObject(copie)
        
        #on rafraichit la vue
        c4d.EventAdd()
    
    if __name__=='__main__':
        main()
    Variante si on veut importer tout le document :

    Code:
    import c4d
    
    
    def main():
        #le nom commence par preset:// ensuite nom de la librairie, etc... la casse n'a apparemment pas d'influence
        fn = 'preset://prime.lib4d/humans/fred.c4d'
        
        #on importe tout le document dans notre document ouvert (doc)
        # dans ce cas on importe les matériaux et les objets
        c4d.documents.MergeDocument(doc, fn, c4d.SCENEFILTER_MATERIALS | c4d.SCENEFILTER_OBJECTS)
        
        #on rafraichit la vue
        c4d.EventAdd()
        
    if __name__=='__main__':
        main()
    Par contre vu que l'on n'a pas accès aux dossiers de la médiathèque via la bibliothèque os ou glob je ne vois pas comment lister les contenu d'un dossier autrement qu'à la main ( ce qui protège un peu les éléments de la médiathèque selon la version de c4d...)
    Dernière modification par oli_d ; 31/12/2014 à 07h10.

Discussions similaires

  1. Comment assembler / souder deux objets
    Par Condor34 dans le forum Nouveaux membres
    Réponses: 25
    Dernier message: 20/03/2014, 20h28
  2. [Problème] Rotation d'un objet null à partir de la position de 4 autres objets nulls
    Par el_yan dans le forum Nouveaux membres
    Réponses: 5
    Dernier message: 26/12/2012, 10h02
  3. Rown script Python
    Par iolofato dans le forum Plugins
    Réponses: 0
    Dernier message: 28/11/2012, 12h12
  4. [Question] lien textures objets 3ds importé
    Par lorenzo lux dans le forum Textures
    Réponses: 0
    Dernier message: 02/06/2011, 18h13
  5. Réponses: 3
    Dernier message: 31/05/2006, 15h50

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