Aller au contenu

Enregistrer le fichier avec la date en préfixe


Messages recommandés

Invité eklundh80
Posté(e) (modifié)

Bonjour,

Ci-joint un de mes 1ers lisp pour faire un enregistrement du plan ouvert avec rajout de la date en préfixe.

Ceci afin de rester sur le plan renommé pour nettoyer les présentations et xref avant de l'envoyer aux CES & à l'architecte.

Pour contourner la demande d'écraser le fichier s'il existe déjà et perdre la remise à 0 de la variable filedia je suis passé par vl-file-dete.

Peut être qu'une gestion de la variable avec une erreur pourrait fonctionner. Mais je ne sais pas encore traiter les erreurs justement (ma prochaine étape).

Si vous voyez des bugs ou des améliorations, je suis preneur pour progresser.

@+

Voici le lisp

 

(defun c:enr (/ oldFiledia Dat1 a)
 (vl-load-com);charge la bibliothèque vlisp
 (setq doc (vla-get-activedocument (vlax-get-acad-object))); active l'espace de travail
 (setq oldFiledia (getvar "Filedia")); enregistre l'état initial de la boîte de dialogue
 (setvar "Filedia" 0) ; annnule l'affichage de la boîte de dialogue
 (setq Dat1 (rtos (getvar "cdate") 2 0)); récupère la date sous forme de chaîne
  (strcat (substr Dat1 1 4); Récupère l'année
  "-"
  (substr Dat1 5 2); Récupère le mois
  "-"
  (substr Dat1 7 2); Récupère le jour
  )
 (setq a (strcat (getvar "dwgprefix")(strcat Dat1 "_"(getvar "dwgname")))); Concatène Chemin-Date-Nom actuel
 (if (findfile a); si le fichier existe déjà
   (vl-file-delete a); le supprimer (envoi précédent non purgé du dossier)
   )
 (command "_saveas" "" a) ; Enregistre sous
 (setvar "Filedia" oldFiledia); Restaure la boîte de dialogue à l'initial
 (princ)
)

Modifié par (gile)
ajout des balises bbcode
Invité eklundh80
Posté(e) (modifié)

Je viens de tomber sur vla-saveas qui marche sans modifier la variable filedia

 

(defun c:enr (/ doc Dat1 a)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object))); active l'espace de travail
 (setq Dat1 (rtos (getvar "cdate") 2 0)); récupère la date sous forme de chaîne
  (strcat (substr Dat1 1 4); Récupère l'année
  "-"
  (substr Dat1 5 2); Récupère le mois
  "-"
  (substr Dat1 7 2); Récupère le jour
  )
 (setq a (strcat (getvar "dwgprefix") (strcat Dat1 "_"(getvar "dwgname")))); Concatène Chemin-Date-Nom
 (if (findfile a); si le fichier existe déjà
   (vl-file-delete a); le supprimer (envoi précédent non purgé du dossier)
   )
 (vla-saveas doc a) ; Enregistre sous
 (princ)
)

Modifié par (gile)
ajout des balises bbcode
Posté(e)

Salut,

 

J'ai modifié tes messages en ajoutant les balises bbcode pour conserver le formatage du code (voir ce sujet)

 

Sinon, juste deux petites remarques :

- la fonction vla-get-ActiveDocument n'active pas l'espace de travail, elle renvoie le document actif (le dessin courant) sous forme d'object vla (CAOM/ActiveX)

- pour formater la date, tu peux utiliser la fonction menucmd avec une expression diesel :

(menucmd "M=$(edtime,$(getvar,date),YYYY-MM-DD)")

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Invité eklundh80
Posté(e)

Merci, je cherchais comment faire pour les balises justement.

Je commence à peine sur autolisp que je découvre la facilité du Vlisp (pour les blocs dynamiques, et bien d'autres applications que je dois examiner). Et là on peut intégrer du diesel :blink:

On va y aller par étape. Quand je disais qu'il y a plusieurs solutions à la rédaction d'une routine.

Je note pour le diesel mais pas tout de suite, je sais pas encore définir la fonction error pour sortir proprement. :(rires forts):

PS: Merci pour l'exemple avec le coup de pouce sur getfiled de (gile) et le strcat de didier.

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é