Sobre o uso de do AutoLISP em macros

Criar comandos que utilizam AutoLISP é um modo mais avançado para usar o recurso de personalização do programa.

Você pode utilizar as variáveis e as expressões AutoLISP para criar macros que executam tarefas complexas. Quando o programa carrega um arquivo CUI/CUIx, ele também carrega um arquivo MNL com o mesmo nome e no mesmo local. Colocar o código AutoLISP em um arquivo MNL é uma forma eficaz para carregar os comandos personalizados que podem ser utilizados em uma macro.

Nota: No Windows, é possível especificar arquivos AutoLISP adicionais a serem carregados no editor Personalizar interface do usuário (CUI). Criar comandos que utilizam AutoLISP é um modo mais avançado para usar o recurso de personalização do programa. Experiência e prática o ajudarão a utilizar esse recurso de modo eficiente.

Exemplos

Predefinir valores

Este exemplo é composto de três macros de comando que serão utilizadas para inserir um bloco.

A macro de comando solicita a largura de janela.

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

A macro de comando solicita a espessura da parede.

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

A macro de comando insere um bloco chamado "janela" e solicita o ponto de inserção e rotação.

^C^C_INSERT window XScale !WINWID YScale !WALLTHK

O eixo X do bloco é para a largura de janela atual e o eixo Y para a espessura de parede atual.

Redimensionar alças

Este exemplo contém duas macros de comando que aumentam ou diminuem o valor atual da variável de sistema GRIPSIZE.

A macro de comando aumenta o valor da variável de sistema GRIPSIZE para 1.

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

A macro de comando diminui o valor da variável de sistema GRIPSIZE para 1.

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

Para adicionar uma verificação válida a essas macros de comandos, os valores menores que 0 e maiores que 255 não podem ser usados para a variável de sistema GRIPSIZE.

Prompt para entrada do usuário

O exemplo a seguir solicita dois pontos e desenha uma polilinha retangular com os pontos especificados como seus cantos.

^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
Chamar uma macro atribuída a um item de menu suspenso (somente Windows)

Usando a sintaxe a seguir, é possível executar de modo programático uma macro de item de menu suspenso:

(menucmd "Gcustomizationgroup.element_ID=|")

A sintaxe anterior só funciona se o item de menu for parte de um menu que esteja na barra de menus do programa e estiver disponível para uso.