Sempre fun reacio a facer públicas as miñas pequenas rutinas, máis por vergoña que por outra cousa, xa que están feitas por un ignorante en programación. Nesta que acabo de realizar reciclando un par delas para obter o que quería, vou facer unha excepción porque pode ser útil, e parece que Autodesk dende a versión 2000 ata a 2007 non tivo tempo de crear un comando similar.
Utilidade
IGCONFPX é unha rutina en AutoLISP, que ten como fin igualar todas as configuracións de páxina dun arquivo de AutoCAD. Se o entediches vai directamente a Instruccións, senon segue a ler.
Se tes un debuxo con 25 presentacións (láminas en A4), configuradas para imprimirse nunha determinada impresora, e cambias de impresora, na versión 2007 xa tes a opción de imprimir con outra configuración, pero por exemplo na 2004 non. Ademáis unha vez que imprimas, os cambios non se gardan, así que sempre terás que seleccionar unha nova cada vez que traces.
IGCONFPX recolle todas as page setup da plantilla que elixas, importaas no debuxo, amosache todas as dispoñibles, e pídeche que elixas unha delas para aplicarlla a todas as presentacións. A qué é comoda?
Instruccións
Copiar e pegar o código nun editor de texto (notepad ou metapad, por exemplo). Ir á liña 12 e substituir o texto entre comiñas SUBSTITUIR-CHANGE polo camiño que desexes ata o as túas plantillas, tendo en conta que debe levar dobre barra invertida, entre cada
O código
;Makeijan (2007)
;http://acitc.blogaliza.org
;
(princ "\nExecuta IGCONFPX para igualar as configuracións de páxina de todas as presentacións.\n")
;
;listaconf encargase de listar as configuracións de páxina existentes
(defun listaconf ()
;Carga as configuracións de páxina dende a plantilla seleccionada.
(command "-importconfpag" "O:\\AUTOCAD\\PLANTILLAS\CCSA.DWT" "*") ; ->Modificar polo camiño á túa plantilla,
por exemplo "C:\\AUTOCAD\\PLANTILLAS\CCSA.DWT"
;
;Fai a lista
;
(foreach x (dictsearch (namedobjdict) "ACAD_PLOTSETTINGS")
(if (= 3 (car x))
(setq LISTA (cons (cdr x) LISTA))
)
)
(setq LISTA (reverse LISTA))
)
;
;Comeza o bo
;
(defun c:igconfpx (/ PLO_LAYOUTS PLO_CNTR PLO_CNTR2 PLO_LIST PLO_LAYOUTTAB)
(vl-load-com)
;Que non salten os diálogos
(setvar "FILEDIA" 0)
(setvar "CMDDIA" 0)
(setq PLO_LAYOUTS
(vla-get-layouts
(vla-get-activedocument(vlax-get-acad-object))
)
PLO_CNTR 0 PLO_CNTR2 0)
(repeat(vla-get-count PLO_LAYOUTS)
(setq PLO_LIST (cons(setq PLO_CNTR (1+ PLO_CNTR))
PLO_LIST)))
(vlax-for PLO_LAYOUT PLO_LAYOUTS
(setq PLO_LIST
(subst
(vla-get-name PLO_LAYOUT)
(vla-get-taborder PLO_LAYOUT)
PLO_LIST)
)
)
(setq PLO_LIST (reverse PLO_LIST))
;
;Aquí lanzo o listado de configuracións de páxina. (Page Setups)
;
(princ LISTA)
(listaconf)
(princ "\nEscribe a configuración a aplicar a todas as presentacións de entre as listadas arriba: ")
(setq CONFPAX(getstring))
(while(/= PLO_CNTR2 (1- PLO_CNTR))
(setq PLO_LAYOUTTAB (nth PLO_CNTR2 PLO_LIST))
(command "_-PLOT" "_N" PLO_LAYOUTTAB CONFPAX "" "" "_Y" "_N")
(setq PLO_CNTR2 (1+ PLO_CNTR2))
)
;
;Deixar todo como estaba
;
(setvar "FILEDIA" 1)
(setvar "CMDDIA" 1)
)
Melloras futuras
Está claro que necesitaría dúas para que quedara máis elegante, pero como as vexo perfectamente prescindibles para o meu uso diario non penso que vexan a luz ;-).
- Comprobar que non existen as configuracións antes de tentar cargalas, iso evitaría as mensaxes tentando mellorar na liña de comandos.
- Comprobar que o page setup elexido está na lista, senon obrigar a teclealo. Isto evitaría o erro que da cando non se introduce correctamente o identificador.
Referencias
Estas dúas ligazóns son as que serviron de base a este código.
Hispacad
3DGazpacho
chuzame -