stephan35 Posté(e) le 7 mars 2007 Posté(e) le 7 mars 2007 Bonjour à tous, Je tente désepérement de faire un zip de mon répertoire, sans utiliser un programme externe, et ceci avec la commande etransmit, mais problèmes : Etransmit prend par défaut le fichier en cours, on peut rajouter une liste de fichier mais pas avec la commande en ligne -etransmit (N'est-ce pas ?) Etransmit peut sauvegarder un jeu de feuille, mais je ne peut pas rajouter les fichiers DWG de mon répertoire car ils n'ont pas de présentation , et comme chacun le sait, le jeu de feuille ne prend en compte que les présentations !( n'est-ce pas ?) [surligneur] Donc il ne reste plus que le LISP ?[/surligneur] ou comment faire ???? :casstet: Merci à vous !
Oli553 Posté(e) le 7 mars 2007 Posté(e) le 7 mars 2007 Euh, tu veut sauvegarder tes FICHIER DWG ou autre chose?SInon, tu peut trajouté des fichiers comme tu veut sans problemes... :casstet: L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
Patrick_35 Posté(e) le 7 mars 2007 Posté(e) le 7 mars 2007 Je me surprends moi même :)C'est fou ce que l'on peut réaliser avec les Activex.Donc, voici une solution en Vlisp qui créé un zip les fichiers choisis (et à une vitesse impressionnante :o ) ps : j'avais aussi en activex la possibilité de faire une sélection multiple avec le choix de l'arborescence, mais la réponse ne supporte pas plus de 256 caractères :( @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
stephan35 Posté(e) le 7 mars 2007 Auteur Posté(e) le 7 mars 2007 SInon, tu peut trajouté des fichiers comme tu veut sans problemes... en ligne de commande ??? :casstet: Je n'ai pas réussi !
stephan35 Posté(e) le 7 mars 2007 Auteur Posté(e) le 7 mars 2007 Merci patrick_35 Je jette un oeil et je te tiens au parfum ... a+ :D
Oli553 Posté(e) le 7 mars 2007 Posté(e) le 7 mars 2007 en ligne de commande ??? :casstet: Je n'ai pas réussi ! Non, via la fenêtre, j'avais pas bien lu :P L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
stephan35 Posté(e) le 14 mars 2007 Auteur Posté(e) le 14 mars 2007 Bonjour à tous ! Merci pour le lisp ZIP, il fonctionne parfaitement,J'ai tenté de le décortiquer ...... :casstet: Je tente de faire un zip manuellement avec ce que patrick_35 m'a donné ..... :casstet: Il me manque les bases .... mais tout se passe ici : (vlax-invoke zip 'copyhere (vla-item nom fic)) Je tente de faire genre :Zip Destination fichier_à_ajouter et je bloque sur le vla-item .... (setq sh (vlax-create-object "shell.application")) (setq zip (vlax-invoke sh 'namespace (strcat "C:/" "toto.zip"))) ;(vlax-invoke zip 'copyhere (vla-item nom fic)) (vlax-invoke zip 'copyhere (strcat $rep "/" (Odcl_Control_GetText Boites_Open_EFIC))) (vlax-release-object sh) Merci A+ [Edité le 14/3/2007 par stephan35]
Patrick_35 Posté(e) le 14 mars 2007 Posté(e) le 14 mars 2007 SalutJe vais tenter une explication Pour permettre de faire des opérations sur des fichiers via activex(setq sh (vlax-create-object "shell.application"))La variable rep est le nom du répertoire(setq rep "c:\\")Pour lire en objet le contenu du répertoire(vlax-invoke sh 'namespace rep)Pour avoir la liste des fichiers/répertoires toujours en objet(setq nom (vlax-invoke (vlax-invoke sh 'namespace rep) 'items))Maintenant, un (vla-get-name (vla-item nom 0)) me donne le permier fichier ou répertoire de la liste Pour le fichier de destination en objet(setz zip (vlax-invoke sh 'namespace "c:\\Test.zip")) L'instruction(vlax-invoke zip 'copyhere (vla-item nom fic))Fait donc une copie en objet vers le fichier de destination en le compressant @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
stephan35 Posté(e) le 15 mars 2007 Auteur Posté(e) le 15 mars 2007 Merci ! Pour le début j'ai tout compris, par contre : L'utilite de ces 2 lignes : ???? (ça ne fonctionne pas sans !) et moi pas comprendre ! (vlax-invoke fic 'write (vl-list->string (list 80 75 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) (vlax-invoke fic 'close) d'autant plus que le programme ci-dessous ne se sert pas de la variable fic ! (setq fso (vlax-create-object "scripting.filesystemobject") sh (vlax-create-object "shell.application") ) (if (setq dest (strcat (getenv "UserProfile") "\\My Documents\\" $aff2 $tranche2 "-Cl.ZIP")) (if (vl-catch-all-error-p (setq fic (vl-catch-all-apply 'vlax-invoke (list fso 'createtextfile dest)))) (princ (strcat "\nImpossible de créer le fichier " dest)) (progn (vlax-invoke fic 'write (vl-list->string (list 80 75 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) (vlax-invoke fic 'close) (setq nom (vlax-invoke (vlax-invoke sh 'namespace $rep) 'items) zip (vlax-invoke sh 'namespace dest) ) (vlax-invoke zip 'copyhere (vla-item nom (Odcl_Control_GetText Boites_Open_EFIC))) (princ (strcat "\nFichier " dest " créé.")) ) ) ) (vlax-release-object fso) (vlax-release-object sh) Etonnant non ? Merci !
Patrick_35 Posté(e) le 15 mars 2007 Posté(e) le 15 mars 2007 SalutSi tu ouvres un fichier zip, tu remarqueras ces caractères. Tous les types de fichiers ont leurs propre entête et c'est aussi ce qui permet des les distinguer, donc si tu ne l'écrit pas, tu seras incapable de l'ouvrir correctement.Par exemple, un dwg comment par AC puis une valeur pour donner la version du dwg (1015 pour 2000 et 1018 pour 2004 par exemple, ce qui fait AC1015 ou AC1018)Donc je créé le fichier, j'écris l'entête puis je le ferme. Ensuite je l'affecte en tant qu'objet pour pouvoir y écrire dedans avec le copyhere Pour la variable fic, tu ne l'a pas vu, mais elle se trouve ici(if (vl-catch-all-error-p ([surligneur][b]setq fic[/b][/surligneur] (vl-catch-all-apply 'vlax-invoke (list fso 'createtextfile dest)))) Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
stephan35 Posté(e) le 15 mars 2007 Auteur Posté(e) le 15 mars 2007 Encore et encore Merci pour tes explications ! A+
CADarome Posté(e) le 2 avril 2007 Posté(e) le 2 avril 2007 c'est fou Pat.... tes code je les admires.. ;-) Cependant avec ton zip file...il ne va pas chercher les Xrefs,..comme e-transmit. facile a coder..mais bon, à titre d'information. ;-) Sky is the limit.....Mon oeuil !!
Patrick_35 Posté(e) le 2 avril 2007 Posté(e) le 2 avril 2007 Merci, c'est gentil ;)Tu as raison, les xrefs ne sont pas prévus.Avec objectDbx, c'est on ne peut plus facile.Reste à savoir si dans le zip, on garde ou pas le chemin et si oui, en relatif ou pas ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant