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

Discussion: Plugin / script mise a jour d'xrefs

  1. #1
    Gourou Avatar de Huv
    Date d'inscription
    décembre 2002
    C4D version
    R16 Studio
    OS
    OSX 10.9.5 - Windows8
    Messages
    4 422

    Plugin / script mise a jour d'xrefs

    Salut,
    j'utilise très souvent les xrefs, et echange mes fichiers avec certains de mes clients les utilisant egalement.
    Rien de plus insupportable que d'être obligé de mettre a jour les liens vers les xrefs une par une lors d l'ouverture d'un fichier...
    Quelqu'un connait un plugin ou scrip permettant en 1 clic de définir le chemin de l'ensemble des xrefs contenues dans un meme dossier (un peu comme le fait "smart texture) ?
    Merci

  2. #2
    Pilier Avatar de gr4ph0s
    Date d'inscription
    mai 2013
    C4D version
    R16 Studio
    OS
    win 7 X64
    Messages
    964
    Code:
    import c4d
    import os
    
    
    def iterateObjs(op, opType=c4d.Oxref):
        while op:
            if op.CheckType(opType):
                yield op
                
            iterateObjs(op.GetDown())
            op = op.GetNext()
    
    
    
    
    # Main function
    def main():
        folderPath = c4d.storage.LoadDialog(flags=c4d.FILESELECT_DIRECTORY)
        if not folderPath: return
        
        doc.StartUndo()
        for obj in iterateObjs(doc.GetFirstObject()):
            oldPath = obj[c4d.ID_CA_XREF_FILE]
            if not oldPath: continue
            
            fileName = os.path.basename(oldPath)
            if not fileName: continue
            
            newFolderPath = os.path.join(folderPath, fileName)
            if not newFolderPath: continue
            
            if not os.path.exists(newFolderPath):
                print "{0} do not exist".format(newFolderPath)
                continue
            
            genState = obj[c4d.ID_CA_XREF_GENERATOR]
            obj.SetParameter(c4d.ID_CA_XREF_GENERATOR, True, c4d.DESCFLAGS_SET_USERINTERACTION)
            
            # Update the path
            doc.AddUndo(c4d.UNDOTYPE_CHANGE, obj)
            obj[c4d.ID_CA_XREF_FILE] = newFolderPath
            
            obj.SetParameter(c4d.ID_CA_XREF_GENERATOR, genState, c4d.DESCFLAGS_SET_USERINTERACTION)
            
            # Click Refresh Button
            doc.AddUndo(c4d.UNDOTYPE_CHANGE, obj)
            c4d.CallButton(obj, c4d.ID_CA_XREF_REFRESH)
            
        doc.EndUndo()
        c4d.EventAdd()
            
    
    
    # Execute main()
    if __name__=='__main__':
        main()
    Tien un petit truc codé rapidement
    Dernière modification par gr4ph0s ; 03/12/2018 à 00h08.
    SDK Specialist
    MAXON Computer GmbH

Discussions similaires

  1. mise à jour -30% sur c4d r18
    Par remib dans le forum Général Cinema 4D
    Réponses: 2
    Dernier message: 28/04/2017, 00h03
  2. mise à jour 18.039
    Par lenogre dans le forum Général Cinema 4D
    Réponses: 2
    Dernier message: 12/01/2017, 12h11
  3. Mise à jour
    Par DomS dans le forum Nouveaux membres
    Réponses: 2
    Dernier message: 29/09/2006, 16h57
  4. HELP Mise à jour C4D
    Par elepa dans le forum Emploi/Formations/Annonces
    Réponses: 3
    Dernier message: 30/03/2006, 02h42
  5. mise à jour....
    Par sweep dans le forum Général Cinema 4D
    Réponses: 10
    Dernier message: 17/07/2004, 21h12

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