#1 Fri 18 November 2016 11:27
- benoit111
- Participant actif
- Date d'inscription: 20 Jan 2008
- Messages: 102
zipage fanout format dxf
bonjour,
j'essaie de zipper un fanout dont le fichier est au format dxf... sur d'autres format comme le shape ou le mapinfo ça fonctionne très bien,
mais impossible avec le dxf..
*
AutoCAD Writer: Failed to open file 'C:\Users\TEMP~1.ADG\AppData\Local\Temp\2\_auto_zip_dataset_147946446237_10984' in method 'AutoCAD2004Writer::close'. It is possible that the file is open or in use by AutoCAD or another program. Please terminate any external program access to the file and try again
si quelqu'un a une solution, je suis preneur...
merci
Hors ligne
#2 Thu 08 December 2016 13:33
- benoit111
- Participant actif
- Date d'inscription: 20 Jan 2008
- Messages: 102
Re: zipage fanout format dxf
bon je n'ai pas trouvé pour le réaliser directement sur le fanout alors je l'ai fait en python sur le navigator dans le shutdown python script
Code:
import zipfile import os.path import glob import shutil path = FME_MacroValues['destination'] def repertoire(path): #lister les repertoire qui contiennt des dxf qui sont à zipper# fichier=[] for dirpath, dirnames, filenames in os.walk (path): ###parcourir les dossiers à partir du paramètre publié "destination" for filename in filenames: if filename.endswith('.dxf'):###filter les dossiers qui contiennent des dxf fichier.append(dirpath) return fichier def ziprepertoire(nomzip, dossierAzipper): #zipper les path récupérer parla fonction repertoire# lenpathparent = len(dossierAzipper)+1 ## utile si on veut stocker les chemins relatifs def _ziprepertoire(zfile, path): for i in glob.glob(path+'\\*'): if os.path.isdir(i): _ziprepertoire(zfile, i ) ##test si dossiers ou fichiers else: zfile.write(i, i[lenpathparent:]) ## zfile.write(i) pour stocker les chemins complets zfile = zipfile.ZipFile(nomzip,'w',compression=zipfile.ZIP_DEFLATED) _ziprepertoire(zfile, dossierAzipper) zfile.close() a=set (repertoire(path)) for row in a: ziprepertoire(row+".zip",row) shutil.rmtree(row)
Dernière modification par benoit111 (Thu 08 December 2016 13:34)
Hors ligne
#3 Fri 16 December 2016 08:45
- antoine guillot
- Participant actif
- Date d'inscription: 5 Sep 2008
- Messages: 62
Re: zipage fanout format dxf
Bonjour,
Ce genre d'opérations est rendu bien plus simple avec le transformer FeatureWriter de FME2016 qui permet d'enchaîner des traitements après l'écriture au sein d'un unique workspace. Dans votre cas cela éviterait les boucles et rendrait le python bien plus simple (voire inutile).
Cordialement,
Antoine.
Hors ligne
#4 Mon 16 January 2017 16:18
- benoit111
- Participant actif
- Date d'inscription: 20 Jan 2008
- Messages: 102
Re: zipage fanout format dxf
un peu tard mais merci:-)..je regarde ça....
Hors ligne
#5 Tue 24 January 2017 14:13
- MagBar
- Participant assidu
- Date d'inscription: 27 Jun 2012
- Messages: 203
Re: zipage fanout format dxf
bonjour benoit111,
je me suis permise de reprendre ton script pour mes besoins et il fonctionne super bien. Par contre mon Fanout se base sur des valeurs d'un attribut. Sais tu s'il est possible de faire fonctionner ce script avec un chemin qui est une concaténation d'un paramètre et d'une valeur d'un attribut ?
Hors ligne
#6 Wed 25 January 2017 10:26
- benoit111
- Participant actif
- Date d'inscription: 20 Jan 2008
- Messages: 102
Re: zipage fanout format dxf
oui sans soucis .. il suffit de récupérer la valeur de cette concaténation.... repertoire(dossierazipper)
Hors ligne
#7 Thu 26 January 2017 07:35
- MagBar
- Participant assidu
- Date d'inscription: 27 Jun 2012
- Messages: 203
Re: zipage fanout format dxf
dans le script que tu as proposé, je dois remplacer :
path = FME_MacroValues['destination']
par le resultat de la concaténation ? malheureusement, mon problème est que j'ignore comment récuperer la valeur d'un attribut présent dans le Workbench dans le code Python de fin de traitement .....
si destination1 = paramètre (publié ou non)
et que destination2 = attribut créé dans le Workbench par un attributeCreator
path = FME_MacroValues['destination1']\.......
Hors ligne
#8 Fri 27 January 2017 09:24
- benoit111
- Participant actif
- Date d'inscription: 20 Jan 2008
- Messages: 102
Re: zipage fanout format dxf
par le resultat de la concaténation ?
oui
a=feature.getAttribute('ATTRIBUT CONCATENER') feature correspond au paramètre de la fonction
Dernière modification par benoit111 (Fri 27 January 2017 09:24)
Hors ligne
#9 Tue 07 March 2017 15:11
- MagBar
- Participant assidu
- Date d'inscription: 27 Jun 2012
- Messages: 203
Re: zipage fanout format dxf
merci avec un peu de retard. J'ai eu entre temps un retour plus précis du support. En intégrant un transformer pythoncaller pour appeler l'attribut, tout fonctionne.
merci pour votre aide à tous.
Hors ligne