frisco-greencar Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 Bonjour à tous, J'utilise Autocad mais ne connait rien du tout au LSP .Je cherche à enregistrer mes plans avec la date du jour à la suite. J'ai trouvé un lsp de (gile) pour enregistrer de manière incrémentale. C'est exactement mon besoin, si ce n'est remplacer cet incrément par la date du jour. ci-dessous le lsp de (Gile) : Les fichiers sont enregistrés dans le même répertoire au format courant. ;;; IncSave -Gilles Chanteau- 01/01/07;;; Enregistre le dessin courant sous un nom incrémenté.;;; Merci à Patrick_35 pour la "MsgBox". (defun c:IncSave (/ strinc new sav f n p)(vl-load-com) (defun strinc (str)(setq str (itoa (1+ (atoi str))))(while (< (strlen str) 3)(setq str (strcat "0" str)))str) (defun new ()(while (not (setq f (getfiled "Enregistrer sous" "" "dwg" 1))))(vlax-ldata-put "IncSave" "Num" "001")(setq f (strcat (vl-string-right-trim ".dwg" f) "_001.dwg"))(sav f)) (defun sav (f)(vla-SaveAs(vla-get-ActiveDocument (vlax-get-acad-object))f(getenv "DefaultFormatForSave"))) (if (zerop (getvar "DWGTITLED"))(new)(progn(setq f (strcat (getvar "DWGPREFIX") (getvar "DWGNAME"))n (vlax-ldata-get "IncSave" "Num"))(if n(progn(setq f (vl-string-subst(vlax-ldata-put "IncSave" "Num" (strinc n))nf))(if (and(findfile f)(= (MsgBox"Enregistrement incrémenté"4(strcat f " existe déjà.\nVoulez vous le remplacer ?")0)7))(new)(sav f)))(progn(setq n (vlax-ldata-put "IncSave" "Num" "002"))(sav (strcat (vl-string-right-trim ".dwg" f) "_002.dwg"))(vl-file-renamef(strcat (vl-string-right-trim ".dwg" f) "_001.dwg"))))))(princ)) (defun MsgBox (Titre Boutons Message Time / Reponse WshShell)(setq WshShell (vlax-create-object "WScript.Shell"))(setq Reponse (vlax-invokeWshShell'PopupMessageTimeTitre(itoa Boutons)))(vlax-release-object WshShell)Reponse) Merci aux LSPiens (peut-être même à Gilles s'il passe par là) qui pourront m'aider FG
(gile) Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 Salut et bienvenue, Voilà, la date est ajoutée sous la forme : (19-10-2007_17h34) (defun c:DSave (/ strinc new sav f n p) (vl-load-com) (defun date (/ d) (setq d (rtos (getvar "CDATE") 2 4)) (strcat "(" (substr d 7 2) "-" (substr d 5 2) "-" (substr d 1 4) "_" (substr d 10 2) "h" (substr d 12 2) ")" ) ) (defun new (/ d) (while (not (setq f (getfiled "Enregistrer sous" "" "dwg" 1))) ) (setq d (date)) (vlax-ldata-put "DatedSave" "Date" d) (setq f (strcat (vl-string-right-trim ".dwg" f) d)) (sav f) ) (defun sav (f) (vla-SaveAs (vla-get-ActiveDocument (vlax-get-acad-object)) f (getenv "DefaultFormatForSave") ) ) (if (zerop (getvar "DWGTITLED")) (new) (progn (setq f (strcat (getvar "DWGPREFIX") (getvar "DWGNAME")) d (vlax-ldata-get "DatedSave" "Date")) (if d (progn (setq f (vl-string-subst (vlax-ldata-put "DatedSave" "Date" (date)) d f ) ) (if (and (findfile f) (= (MsgBox "Enregistrement daté" 4 (strcat f " existe déjà.\nVoulez vous le remplacer ?") 0 ) 7 ) ) (new) (sav f) ) ) (progn (setq d (vlax-ldata-put "DatedSave" "Date" (date))) (sav (strcat (vl-string-right-trim ".dwg" f) d)) ) ) ) ) (princ) ) (defun MsgBox (Titre Boutons Message Time / Reponse WshShell) (setq WshShell (vlax-create-object "WScript.Shell")) (setq Reponse (vlax-invoke WshShell 'Popup Message Time Titre (itoa Boutons) ) ) (vlax-release-object WshShell) Reponse ) [Edité le 19/10/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
frisco-greencar Posté(e) le 19 octobre 2007 Auteur Posté(e) le 19 octobre 2007 Merci (Gile)Je testerai lundi au boulot, car je n'ai pas Autocad chez moi. Bon WE à tous les Lispiens FG
frisco-greencar Posté(e) le 22 octobre 2007 Auteur Posté(e) le 22 octobre 2007 (Gile) je voudrai encore te remercier J'ai testé, c'est exactement ce que je désire (je vais peut-être enlever les heures et minutes)De plus je pensai demander à ce que les nouvelles dates remplacent les anciennes (et ne se cumulent pas au fur et à mesure), et c'est ce qui se passe. Que demander de plus A une prochaine fois FG
(gile) Posté(e) le 22 octobre 2007 Posté(e) le 22 octobre 2007 Salut, Attention, si tu enlèves les les heures, tu ne pourras plus enregistrer deux fois dans la même journée : les fichiers auraient le même nom et le LISP devrait retourner une erreur. EDIT : ah non, c'était prévu, il me semble, tu auras une boite de dialogue pour te demander si tu veux remplacer le fichier. [Edité le 22/10/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
frisco-greencar Posté(e) le 23 octobre 2007 Auteur Posté(e) le 23 octobre 2007 Salut (Gile) Effectivement, en supprimant les heures et minutes, la boîte de dialogue s'affiche pour confirmer l'écrasement et le remplacement du fichier initial.C'est ce qui me convient, car je veux pouvoir récupérer facilement le dernier enregistrement (surtout quand on travaille à 2 sur les mêmes plans). Par contre dans la journée il y a toujours la possibilité d'utiliser la récupération automatique, si un pépin survient. A+ merci FG
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