Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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. smile
merci pour votre aide à tous.

Hors ligne

 

Pied de page des forums

Powered by FluxBB