Acerca del uso de AutoLISP en las macros

Crear comandos que utilicen AutoLISP es una forma más avanzada de utilizar la función de personalización del programa.

Puede utilizar las variables y expresiones AutoLISP para crear macros que realicen tareas complejas. Cuando el programa carga un archivo CUI/CUIx, también carga un archivo MNL con el mismo nombre y en la misma ubicación. Colocar código de AutoLISP en un archivo MNL es un método eficaz para cargar comandos personalizados que se puedan utilizar en una macro.

Nota: Solo en Windows, puede especificar archivos de AutoLISP adicionales para cargarlos en el editor Personalizar interfaz de usuario. Crear comandos que utilicen AutoLISP es una forma más avanzada de utilizar la función de personalización del programa. Con un poco de experimentación y de práctica podrá utilizar esta función con eficacia.

Ejemplos

Valores predefinidos

En este ejemplo se incluyen tres macros de comandos que se utilizan para insertar un bloque.

La macro de comando solicita la anchura de la ventana.

^C^C^P(setq WINWID (getreal "\nEnter window width: ")) ^P

La macro de comando solicita el grosor del muro.

^C^C^P(setq WALLTHK (getreal "\nEnter wall thickness: ")) ^P

La macro de comando inserta un bloque denominado "ventana" y solicita el punto de inserción y la rotación.

^C^C_INSERT window XScale !WINWID YScale !WALLTHK

El eje X del bloque es la anchura actual de la ventana y el eje Y el grosor actual del muro.

Ajuste de tamaño de los pinzamientos

Este ejemplo contiene dos macros de comandos que aumentan o disminuyen el valor actual de la variable de sistema GRIPSIZE.

La macro de comando aumenta el valor de la variable de sistema GRIPSIZE en 1.

^P(setvar "gripsize"(1+ (getvar "gripsize")))(redraw)(princ)

La macro de comando disminuye el valor de la variable de sistema GRIPSIZE en 1.

^P(setvar "gripsize"(1- (getvar "gripsize")))(redraw)(princ)

Para que la comprobación de estas macros de comandos sea válida, no se pueden utilizar para la variable de sistema GRIPSIZE valores menores que 0 y mayores que 255.

Solicitud de entradas de usuario

En el siguiente ejemplo, se solicita especificar dos puntos y se dibuja una polilínea rectangular con los puntos especificados como esquinas.

^P(setq a (getpoint "Enter first corner: "));\+
(setq b (getpoint "Enter opposite corner: "));\+ 
pline !a (list (car a)(cadr b)) !b (list (car b)(cadr a)) c;^P
Ejecución de una macro asignada a un elemento de menú desplegable (solo en Windows)

Mediante la siguiente sintaxis, se puede ejecutar de forma programada una macro correspondiente a un elemento de menú desplegable:

(menucmd "Gcustomizationgroup.element_ID=|")

La sintaxis anterior solo funciona si el elemento de menú es parte de un menú que se encuentre en la barra de menús del programa y esté disponible para su uso.