Aller au contenu

Messages recommandés

Posté(e)

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))

n

f

)

)

(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-rename

f

(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-invoke

WshShell

'Popup

Message

Time

Titre

(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

Posté(e)

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

Posté(e)

(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

Posté(e)

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

Posté(e)

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

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é