oran Posté(e) le 25 août 2009 Posté(e) le 25 août 2009 Bonjour,Je désire changer de format papier sur toutes mes présentations (une quarantaine...)sachant que certaines sont en Paysage et d'autres en Portrait.Y-a-t-il un moyen rapide de faire cette manip. (lisp par exemple) ou dois-je les faire une à une ? Merci d'avance Oran ;)
(gile) Posté(e) le 25 août 2009 Posté(e) le 25 août 2009 Salut, tu peux essayer la routine ci dessous. (defun c:test (/ doc lay lst res) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)) lay (vla-item (vla-get-Layouts doc) (car (layoutlist))) ) (setq lst (mapcar '(lambda (x) (vla-GetLocaleMediaName lay x) ) (vlax-safearray->list (vlax-variant-value (vla-GetCanonicalMediaNames lay ) ) ) ) ) (if (setq res (listbox "Format du papier" "Choisir un format" (mapcar 'cons lst lst) 0 ) ) (progn (vlax-for l (vla-get-Layouts doc) (if (/= (vla-get-Name l) "Model") (vl-catch-all-apply 'vla-put-CanonicalMediaName (list l res)) ) ) (vla-regen doc acAllViewports) ) ) (princ) ) ;; ListBox (gile) ;; Boite de dialogue permettant un ou plusieurs choix dans une liste ;; ;; Arguments ;; title : le titre de la boite de dialogue (chaîne) ;; msg ; message (chaîne), "" ou nil pour aucun ;; keylab : une liste d'association du type ((key1 . label1) (key2 . label2) ...) ;; flag : 0 = liste déroulante ;; 1 = liste choix unique ;; 2 = liste choix multipes ;; ;; Retour : la clé de l'option (flag = 0 ou 1) ou la liste des clés des options (flag = 2) ;; ;; Exemple d'utilisation ;; (listbox "Présentation" "Choisir une présentation" (mapcar 'cons (layoulist) (layoutlist)) 1) (defun ListBox (title msg keylab flag / tmp file dcl_id choice) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line (strcat "ListBox:dialog{label=\"" title "\";") file ) (if (and msg (/= msg "")) (write-line (strcat ":text{label=\"" msg "\";}") file) ) (write-line (cond ((= 0 flag) "spacer;:popup_list{key=\"lst\";") ((= 1 flag) "spacer;:list_box{key=\"lst\";") (T "spacer;:list_box{key=\"lst\";multiple_select=true;") ) file ) (write-line "}spacer;ok_cancel;}" file) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "ListBox" dcl_id)) (exit) ) (start_list "lst") (mapcar 'add_list (mapcar 'cdr keylab)) (end_list) (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (if (= 2 flag) (progn (foreach n (str2lst (get_tile \"lst\") \" \") (setq choice (cons (nth (atoi n) (mapcar 'car keylab)) choice))) (setq choice (reverse choice))) (setq choice (nth (atoi (get_tile \"lst\")) (mapcar 'car keylab))))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) choice ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
oran Posté(e) le 25 août 2009 Auteur Posté(e) le 25 août 2009 OK c'est exactement ce qu'il me faut, par contre comment intégrer mes propres formats à cette liste ? :exclam:
(gile) Posté(e) le 25 août 2009 Posté(e) le 25 août 2009 La liste affichée correspond à la liste "Format du papier" de la première présentation. Sinon tu peux essayer comme ça (en remplaçant "Format du papier" par le nom de celui que tu veux) : (defun c:test (/ doc lst res) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-for l (vla-get-Layouts doc) (if (/= (vla-get-Name l) "Model") (vl-catch-all-apply 'vla-put-CanonicalMediaName (list l "Format du Papier") ;_ remplacer par le format voulu ) ) ) (vla-regen doc acAllViewports) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 25 août 2009 Posté(e) le 25 août 2009 Salut Une version différente de celle de (gile)La format papier est changé que pour un même traceur (defun c:chpap(/ doc fic format_apier imp lay n plt pap posimp pospap tot msgbox liste_imprimantes changer_imprimante bd_dcl liste_papiers) (defun msgbox (Titre Bouttons Message / Reponse WshShell) (setq WshShell (vlax-create-object "WScript.Shell")) (setq Reponse (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons))) (vlax-release-object WshShell) Reponse ) (defun liste_imprimantes(/ imp lst) (setq lst (vlax-invoke (vla-get-activelayout doc) 'getplotdevicenames)) (foreach imp (list "Aucun" "None") (setq lst (vl-remove imp lst)) ) lst ) (defun liste_papiers(imp / lay lst old) (setq lay (vla-get-activelayout doc) old (vla-get-configname lay) ) (or (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-configname (list lay imp))) (vla-refreshplotdeviceinfo lay) (setq lst (mapcar '(lambda (x) (cons (vla-getlocalemedianame lay x) x)) (vlax-invoke lay 'getcanonicalmedianames))) ) (or (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-configname (list lay old))) (vla-refreshplotdeviceinfo lay) ) lst ) (defun changer_imprimante(tra) (setq pap (liste_papiers (setq plt (nth (atoi tra) imp)))) (start_list "ch_pap") (mapcar '(lambda(x) (add_list (car x))) pap) (end_list) (set_tile "ch_pap" "0") ) (defun bd_dcl (/ ch dcl fil nom res txt) (setq nom (vl-filename-mktemp "chpap" nil ".dcl") fil (open nom "w") fic "0" ) (foreach txt '( "chpap : dialog {" " label = \"Changer de format Papier 1.00\";" " fixed_width = true;" " alignment = centered;" " allow_accept = true;" " : boxed_column {" " label = \"Configuration\";" " width = 60;" " : popup_list {label = \"Imprimante\"; key = \"ch_imp\";}" " : popup_list {label = \"Format Papier\"; key = \"ch_pap\";}" " spacer;" " }" " spacer;" " ok_cancel;" "}") (write-line txt fil) ) (close fil) (setq dcl (load_dialog nom)) (new_dialog "chpap" dcl "") (start_list "ch_imp") (mapcar 'add_list imp) (end_list) (start_list "ch_pap") (mapcar '(lambda(x) (add_list (car x))) pap) (end_list) (set_tile "ch_imp" posimp) (set_tile "ch_pap" pospap) (setq format_papier (cdr (nth (atoi pospap) pap))) (action_tile "ch_imp" "(changer_imprimante $value)") (action_tile "ch_pap" "(setq format_papier (cdr (nth (atoi $value) pap)))") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq res (start_dialog)) (unload_dialog dcl) (vl-file-delete nom) res ) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object)) lay (vla-get-activelayout doc) plt (vla-get-configname lay) imp (liste_imprimantes) ) (if (member plt imp) (progn (setq pap (liste_papiers plt) posimp (itoa (- (length imp) (length (member plt imp)))) pospap "0" n 0 ) (while (nth n pap) (if (eq (cdr (nth n pap)) (vla-get-canonicalmedianame lay)) (setq pospap (itoa n) n (1+ (length pap)) ) ) (setq n (1+ n)) ) (if (eq (bd_dcl) 1) (progn (setq tot 0) (vlax-for lay (vla-get-layouts doc) (and (/= (vla-get-name lay) "Model") (= (vla-get-configname lay) plt) (setq tot (1+ tot)) (vla-put-canonicalmedianame lay format_papier) ) ) (princ (strcat "\nModification de " (itoa tot) " présentation(s) avec le traceur " plt ".")) ) ) ) (msgbox "CHPAP" 16 (strcat "Le traceur " plt " est inconnu.")) ) (princ) ) @+ [Edité le 25/8/2009 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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