Invité eklundh80 Posté(e) le 17 avril 2018 Posté(e) le 17 avril 2018 (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é le 17 avril 2018 par (gile) ajout des balises bbcode
Invité eklundh80 Posté(e) le 17 avril 2018 Posté(e) le 17 avril 2018 (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é le 17 avril 2018 par (gile) ajout des balises bbcode
(gile) Posté(e) le 17 avril 2018 Posté(e) le 17 avril 2018 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) le 17 avril 2018 Posté(e) le 17 avril 2018 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.
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