Aller au contenu

Changer de format papier


Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é