Bonjours à tous!
Je travaille dans l'architecture intérieure orientée tertiaire, (des bureaux quoi...) et au fur et à mesure des années j'ai constitué une Médiathèque importante de mobiliers, cloisons, luminaires et autres joyeusetés indispensables à mon métier.
Je fais face à un problème plutôt important:
Contexte: J'ai plus de 5000 objets dans autant de fichiers individuels (le principe même de la Médiathèque) qui datent pour les plus vieux de C4D R09 à R14. Aucun problème sur C4D R19, bien que la mise à jour des aperçus prenne une plombe, je peux les ouvrir sans problème.
Problème: sous mon C4D R20 tout nouveau tout beau, impossible d'en ouvrir la plupart, versions trop anciennes.
J'ai fait un calcul: Si je devais le faire à la mimine cela me prendrait pratiquement 2 semaines de travail et mon employeur ne le comprendrais pas.
Demande: Existe-t-il une fonction interne, un Plug-in ou toute autre formule magique qui me permettrait, sous C4D R19, d'ouvrir automatiquement mes fichiers et de les enregistrer en C4D R19 afin d'y avoir accès sous C4D R20?
Merci d'avance pour vos réponses et solutions...
Thierry.
Salut,
Ce petit script va normalement chercher tous les fichiers c4d dans la hiérarchie du dossier choisi dans la boîte de dialogue et les enregistrer dans la version qui a lancé le script. Donc attention cela concerne aussi tous les sous-dossier !
ATTENTION je n'ai pas beaucoup testé, donc essaie sur une COPIE de ton dossier !!!!
ATTENTION 2 : le scripts ferme tous les documents à la fin !!! il vaut donc mieux tout fermer avant de lancer le script
[EDIT] ATTENTION 3 (promis à 250 j'arrête !) : lance peut-être pas sur les 5000 fichiers tout de suite, essaie sur une dizaine !Code PHP:
import c4d
import os.path
from glob import glob
def listdirectory(path):
lst=[]
l = glob(os.path.join(path,'*') )
for i in l:
if os.path.isdir(i): lst.extend(listdirectory(i))
lst.extend([f for f in glob(os.path.join(path,'*.c4d') )])
return lst
def main():
pth = c4d.storage.LoadDialog(flags = c4d.FILESELECT_DIRECTORY)
lst_c4d_docs = listdirectory(pth)
for fn in lst_c4d_docs:
c4d.documents.LoadFile(fn)
doc = c4d.documents.GetActiveDocument()
c4d.documents.SaveDocument(doc, fn, c4d.SAVEDOCUMENTFLAGS_0, c4d.FORMAT_C4DEXPORT)
#print fn
c4d.documents.CloseAllDocuments()
if __name__=='__main__':
main()
Dernière modification par oli_d ; 18/09/2018 à 06h10.
Extraordinaire!!!
Apres quelques essais je me suis lancé: 18000 Fichiers dans 250 répertoires. (en incluant la végétation...) traités en 30 mn!
Mon C4D R20 reconnait tout... Ne reste plus qu'à trouver le même script pour générer les aperçus de tous les sous répertoires dans la médiathèque... Ou un peu de patience.
Merci encore!
super ! Un grand merci mon ami...
kenavo !! // Pinterest KAMIGAZ®
oli_d ! T'es vraiment trop balaise
Yaya °)
Les détails font la perfection, et la perfection n'est pas un détail.http://yayaprodtm.cgsociety.org/
LdV.
Content que ça serve ! C'est dans ces cas là que l'on gagne vraiment du temps en programmant.
Par contre pour ça, pour l'instant je ne vois pas trop comment faire via un script. Il faudrait que je me plonge dans la doc, mais j'ai pas trop le temps en ce moment et je ne sais même pas si c'est possible ...
Pour ton script oli_d tu devrais faire un KillDocument a la fin de ta boucle, histoire de fermer le document en cours plutot que de tout fermer a la fin (historie d'epargner un peu la mémoire en cas de grosse scene :p)
Si il y a mon plugin https://labs.maxon.net/?p=3258 qui as été fait specialement pour ça, il suffit de l'installer sur une R18/R19.
EDIT: pfiouu me voila que je me met à répondre a des déterrages de topic maintenant...
Dernière modification par gr4ph0s ; 23/02/2019 à 00h47.
SDK Specialist
MAXON Computer GmbH