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.
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.
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.
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
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.