La création de commandes utilisant AutoLISP correspond à une utilisation plus avancée de la fonction de personnalisation du programme.
Vous pouvez utiliser les variables et les expressions AutoLISP pour créer des macros de menu réalisant des tâches complexes. Lorsque le programme charge un fichier CUI/CUIx, il charge aussi un fichier MNL du même nom situé au même emplacement. L'insertion de code AutoLISP dans un fichier MNL est un moyen efficace de charger des commandes personnalisées à utiliser dans une macro.
Cet exemple est composé de trois macros de commande qui permettent d'insérer un bloc.
La macro de commande ci-dessous invite à indiquer la largeur des fenêtres.
^C^C^P(setq WINWID (getreal "\nEnter window width: ")) ^P
La macro de commande ci-dessous invite à spécifier l'épaisseur des murs.
^C^C^P(setq WALLTHK (getreal "\nEnter wall thickness: ")) ^P
La macro de commande ci-dessous insère un bloc nommé "fenêtre" et invite à spécifier le point d'insertion et la rotation.
^C^C_INSERT window XScale !WINWID YScale !WALLTHK
L'axe X du bloc se rapporte à la largeur courante de la fenêtre et son axe Y à l'épaisseur courante du mur.
Cet exemple contient deux macros de commandes pour augmenter ou diminuer la valeur courante de la variable système GRIPSIZE.
La macro de commande ci-dessous augmente la valeur de la variable système GRIPSIZE de 1.
^P(setvar "gripsize"(1+ (getvar "gripsize")))(redraw)(princ)
La macro de commande ci-dessous diminue la valeur de la variable système GRIPSIZE de 1.
^P(setvar "gripsize"(1- (getvar "gripsize")))(redraw)(princ)
Pour que ces macros de commandes soient valables, la valeur de la variable système GRIPSIZE doit être comprise entre 0 et 255.
L'exemple suivant invite l'utilisateur à indiquer deux points, puis dessine une polyligne rectangulaire dont les coins sont formés par les points spécifiés.
^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
Avec la syntaxe suivante, vous pouvez programmer l'exécution d'une macro d'élément de menu déroulant :
(menucmd "Gcustomizationgroup.element_ID=|")
La syntaxe précédente ne fonctionne que si l'élément en question fait partie d'un menu de la barre de menus du programme et est disponible.