Lors de vos tests de programmation AutoLISP, vous avez parfois besoin de lancer vos programmes AutoLISP et les différentes versions du même programme sur un même dessin test que vous avez préparé.
Dans ce cas là, vous fermez le dessin que vous utilisez pour vos tests, sans le sauvegarder, puisque vous désirez repartir sans cesse sur le même dessin pour tester la nouvelle version de votre programme.
Le petit programme Lisp suivant permet de faire cela automatiquement. Il ferme le dessin courant sans le sauvegarder et réouvre immédiatement le dessin qui a été dernièrement sauvegardé.
A lancer depuis une palette par exemple.
RechargerSansSauver.lsp (1,8 Ko)
(defun c:RechargerSansSauver (/ name path scr f)
(vl-load-com)
(setq name (getvar "DWGNAME"))
(setq path (strcat (getvar "DWGPREFIX") name))
(if (findfile path)
(progn
(setq scr (vl-filename-mktemp "revert_clean.scr"))
(setq f (open scr "w"))
;; 1. Pivot vers un dessin vierge
(write-line "_.NEW ." f)
;; 2. Fermeture forcée de l'ancien dessin (sans sauvegarde)
(write-line (strcat "(vl-load-com)(vla-close (vla-item (vla-get-documents (vlax-get-acad-object)) \"" name "\") :vlax-false)") f)
;; 3. Réouverture du fichier original
(write-line (strcat "_.OPEN \"" path "\"") f)
;; 4. SILENCE IMMÉDIAT
(write-line "_.CMDECHO 0" f)
;; 5. NETTOYAGE CIBLÉ
;; On cherche tout document dont le chemin complet (FullName) est vide ("").
;; Cela désigne les dessins "DrawingX" jamais enregistrés sur le disque.
;; On s'assure aussi de ne pas fermer le dessin courant qu'on vient d'ouvrir.
(write-line "(vl-load-com)(vlax-for doc (vla-get-documents (vlax-get-acad-object)) (if (and (= (vla-get-fullname doc) \"\") (not (equal doc (vla-get-activedocument (vlax-get-acad-object))))) (vla-close doc :vlax-false)))(princ)" f)
;; 6. Rétablissement de l'écho
(write-line "_.CMDECHO 1" f)
(close f)
(command "_.SCRIPT" scr)
)
(alert "Fichier introuvable.")
)
(princ)
)