Aller au contenu

Messages recommandés

Posté(e)

bonjours a tous

j'essais d'employer ce code:

 


(setq refname "c:\\TRANS\\list.lst")
(if (/= nil (setq dwg_Lst (findfile refname)))
(progn
 (setq list_dwg_01 (open Dwg_Lst "r"))
 (while (/= nil (setq File_Name (read-line list_dwg_01)))
   (princ (strcat "\nLecture ligne a ligne du Fichier LIST.LST = "File_name))
(setq dwg (vla-open (vla-get-documents (vlax-get-acad-object)) File_name))
(setq newlen (- (strlen File_name) 4));retirer l'extention".dwg"
(setq File_name_2 (substr File_name 1 newlen))        
(princ (strcat "\nSauvegarde du Fichier "File_name_2"_2000.DWG"))
(setq File_name_3 (strcat File_name_2 "_2004.DWG" ))
;;; extention saveas -->
;;;ac2000_dwg -->AutoCAD 2000 DWG (*.dwg)
;;;ac2000_dxf -->AutoCAD 2000 DXF (*.dxf)
;;;ac2004_dwg -->AutoCAD 2004 DWG (*.dwg)
;;;ac2004_dxf -->AutoCAD 2004 DXF (*.dxf)
(vla-saveas dwg File_name_3 ac2000_dwg)
;;;(vla-close (vla-item (vla-get-documents (vlax-get-acad-object)) File_name_3 ))
;;;(vla-close (vla-item File_name_3):vlax-false)
;;;(command "_.CLOSE")
 );end while
);end progn
);end if
(command "QUITTER" "O" "") 

 

pour information le fichier list.lst est un fichier text

fait sous cmd : dir *.dwg /s/b > c:\TRANS\list.lst mis dans un bat

ce qui ne permet de gerer toutes les directories d'un coup.

 

en fait le programme tourne bien, a part le fait que le "close" ne s'effectue jamais

donc il fonctionne maladroitement sur de petite qantitée

et a un moment memoire pleine et quit.(pas trés propre)

 

a t'on la possibilite de fermer le fichier dans la boucle while?

 

 

 

 

 

 

 

 

Posté(e)

Salut

 

Tu ouvres ton dessin et tu gardes le résultat avec la variable dwg.

(setq dwg (vla-open (vla-get-documents (vlax-get-acad-object)) File_name))

 

Donc pour fermer ce dessin.

(vla-close dwg :vlax-false)

 

ps : pour obtenir le nom d'un fichier, regarde les fonctions vl-filename-*

 

pps : Regarde aussi la fonction vl-directory-files

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

bonjour

 

ok pour le

(vla-close dwg :vlax-false) 

 

mais le

 

(vla-saveas dwg File_name_3 ac2000_dwg) 

 

fait que la variable "dwg" n'existe plus

 

je vais quand même testé @+

  • 3 semaines après...
Posté(e)

bonjour,

Aprés quelques essais

ce code fonctionne

il n'est pas optimisé, mais bon

 

 (setq refname "c:\\TRANS\\list.lst")
(if (/= nil (setq dwg_Lst (findfile refname)))
(progn
 (setq list_dwg_01 (open Dwg_Lst "r"))
 (while (/= nil (setq File_Name (read-line list_dwg_01)))
   (princ (strcat "\nLecture ligne a ligne du Fichier LIST.LST = "File_name))
(vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) File_name :VLAX-FALSE))
(setq newlen (- (strlen File_name) 4)) 				;; comptage du mot - 4 caractére							
(setq File_name_2 (substr File_name 1 newlen))    	;;retirer l'extention".dwg"
(setq File_name_3 (strcat File_name_2 "_2000.DWG" ))		;; ajout de l'extention"_2000.dwg"    
(princ (strcat "\nSauvegarde du Fichier "File_name_2"_2000.DWG"))
(setq File_name_3 (strcat File_name_2 "_2000.DWG" ))
(vla-saveas dwg File_name_3 ac2000_dwg)
;;;___________________________________fermeture du fichier traité____________________________________________________
(vlax-for a (vla-get-documents (vlax-get-acad-object))
 (not (vl-catch-all-error-p (vl-catch-all-apply (function (lambda () (vla-close a))))))
)
;;;___________________________________________________________________________________________________________________

 );end while
);end progn
);end if
(command "QUITTER" "O" "")

 

merci à vous tous pour vos informations

 

 

 

[Edité le 24/8/2009 par souchier]

Posté(e)
bonjour,

Aprés quelques essais

ce code fonctionne

il n'est pas optimisé, mais bon

 

 (setq refname "c:\\TRANS\\list.lst")
(if (/= nil (setq dwg_Lst (findfile refname)))
(progn
 (setq list_dwg_01 (open Dwg_Lst "r"))
 (while (/= nil (setq File_Name (read-line list_dwg_01)))
   (princ (strcat "\nLecture ligne a ligne du Fichier LIST.LST = "File_name))
(setq dwg (vla-open (vla-get-documents (vlax-get-acad-object)) File_name))
(setq newlen (- (strlen File_name) 4)) 				;; comptage du mot - 4 caractére							
(setq File_name_2 (substr File_name 1 newlen))    	;;retirer l'extention".dwg"
(setq File_name_3 (strcat File_name_2 "_2000.DWG" ))		;; ajout de l'extention"_2000.dwg"    
(princ (strcat "\nSauvegarde du Fichier "File_name_2"_2000.DWG"))
(setq File_name_3 (strcat File_name_2 "_2000.DWG" ))
(vla-saveas dwg File_name_3 ac2000_dwg)
;;;___________________________________fermeture du fichier traité____________________________________________________
(vlax-for a (vla-get-documents (vlax-get-acad-object))
 (not (vl-catch-all-error-p (vl-catch-all-apply (function (lambda () (vla-close a))))))
)
;;;___________________________________________________________________________________________________________________

 );end while
);end progn
);end if
(command "QUITTER" "O" "")

 

merci à vous tous pour vos informations

 

[Edité le 24/8/2009 par souchier]

 

[Edité le 24/8/2009 par souchier]

Posté(e)

Salut

 

Je me suis permis de corriger deux ou trois trucs dans ton lisp.

 

(setq refname "c:\\TRANS\\list.lst")

(if (setq dwg_Lst (findfile refname))
 (progn
   (setq list_dwg_01 (open Dwg_Lst "r"))
   (while (setq File_Name (read-line list_dwg_01))
     (princ (strcat "\nLecture ligne a ligne du Fichier LIST.LST = "File_name))
     (setq dwg (vla-open (vla-get-documents (vlax-get-acad-object)) File_name))
     (setq File_name_3 (strcat (substr File_name 1 (- (strlen File_name) 4)) "_2000.DWG"))
     (princ (strcat "\nSauvegarde du Fichier " File_name_3))
     (vla-saveas dwg File_name_3 ac2000_dwg)
     (vla-close dwg :vlax-false)
   )
   (close list_dwg_01)
 )
)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité