O editor Visual LISP
1. INTRODUÇÃO
O AutoLISP é uma linguagem de programação que tem como plataforma o AutoCAD. Com ele você agiliza a execução de desenhos de projetos, introduzindo funções que calculam, manipulam e automatizam os comandos do AutoCAD, e ainda pode criar novos comandos personalizados.
O Visual LISP é um ambiente de programação para o AutoLISP, e ainda oferece ferramentas e recursos que aumentam o desempenho da programação para AutoCAD.
As principais características do editor Visual LISP são:
1.1- Os textos são coloridos, apresentando uma identificação que facilita seu reconhecimento de acôrdo com suas funções no código;
1.2- Além de uma janela de console, possui ferramentas de formatação do texto, depuração de erros de sintaxe, aumentando o rendimento e diminuindo o tempo de programação;
1.3- Seu compilador faz a proteção binária dos códigos AutoLISP, aumentando a velocidade de processamento. Pode-se compilar várias rotinas (.lsp) simultaneamente e ainda acrescentar caixas de diálogo (.dcl) e arquivos-texto (.txt), juntando tudo em um programa executável com a extensão (.vlx).
O editor Visual LISP já vem implantado em todo AutoCAD a partir de sua versão 2000, e você pode acessá-lo de duas maneiras:
a) Clicando no menu >Tools do AutoCAD; depois mais embaixo em >AutoLISP selecione >Visual LISP Editor;
b) Ou digitar >vlide (ou >vlisp) e depois teclar >Enter na linha de comando do AutoCAD, aquela localizada na base da tela, onde se lê >Command.:, como mostra a figura abaixo.
2. CARACTERÍSTICAS DO EDITOR VISUAL LISP
O editor tem por finalidade editar, depurar, testar e compilar arquivos AutoLISP.
Após carregado na memória, como explicado acima, estará visível na tela principal do Visual LISP a figura abaixo, com os elementos descritos a seguir:
2.1- o Menu pulldown (menu suspenso), para acessar os comandos do Visual LISP através de um clique do mouse no menu desejado, ou digitando a tecla Alt juntamente com a letra sublinhada;
2.2- Toolbars (barra de ferramentas), para se acionar rapidamente um comando, clicando no ícone correspondente;
2.3- Na Janela de console (console window), pode-se digitar comandos AutoLISP, da mesma maneira que se faz na linha de comando do AutoCAD, e nela mesmo ver os resultados. Esta janela também mostra mensagens de erros e possui vários recursos para edição de programas, como um menu pop-up para rápido acesso a comandos que veremos adiante, como Find, Inspect, Add Watch, Apropos, Symbol Service, etc. Sem sair dela, ainda podemos executar os programas ali listados.
2.4- a Janela de edição (Text editor) é onde se digita os códigos de programas na linguagem Lisp, DCL, SQL, C/C++ ou arquivos texto tipo ASCII . Também formata textos, verificando a integridade dos parênteses, possui um código de cores para fácil identificação; executa expressões AutoLISP, manipula arquivos e possui um menu pop-up para buscas e formatações avançadas (Apropos), fornece ferramentas de Debug, comando Check para erros de sintaxe, coloca pontos de interrupção na execução de um programa (Breakpoint), examina o programa passo-a-passo (Step), monitora o resultado de expressões (Add Watch) e ainda disponibiliza comandos como Break on Error e Step Once.
2.5- Status bar (barra de status) está na base da tela, e registra tudo que está acontecendo no editor.
2.6- A janela Trace window (rastreador), além de mostrar várias informações, relata mensagens quando acontece um erro durante o carregamento do programa na memória.
2.7- A janela Build Output mostra mensagens relativas a erros de sintaxe na listagem digitada na janela de edição (testacheck.lsp), após termos acionado o comando Check Text in Editor do menu Tools , ou clicando no botão (Check edit window) da toolbars.
Após um clique duplo sobre a mensagem de erro, o Visual LISP ativa a janela de edição, posiciona o cursor no início da linha onde está a expressão portadora do erro e a ilumina, para que você tome conhecimento e faça as correções necessárias.
Neste exemplo o erro foi causado pela falta do agrupamento através da função progn, que deve ser usada quando há mais de um resultado numa mesma condição (then e else) do comando if.
Este recurso é um dos mais importantes do Visual LISP, possibilitando localizar rapidamente erros de sintaxe no programa. Infelizmente ele não detecta "todos" os erros de sintaxe que podem ocorrer. Para resolver este problema existem outros recursos neste editor, que veremos adiante.
Obs.: É comum editarmos várias rotinas ao mesmo tempo (.lsp, .dcl, .txt, etc.). Se você deseja manter estas rotinas "abertas" em um futuro acesso ao Visual LISP, não feche (Close ou Close All) nenhuma rotina; salve-as e simplesmente saia do editor clicando em Exit do menu File.
3. A JANELA DE CONSOLE
A janela de console (Console window) é um complemento da janela de edição de textos (Text editor). Nela você digita e executa comandos AutoLISP e ainda visualiza os resultados das ações desses comandos.
Para acessá-la, clique no menu pulldown Window e escolha a opção Visual LISP Console, ou então clique diretamente no botão da toolbars.
O modo como se entra com os comandos nesta janela é bem parecido como é feito na linha de comandos do AutoCAD, com algumas diferenças:
3.1- Para mostrar o valor atual de uma variável, basta digitar no console, logo após o sinal de prompt " _$ ", o nome dessa variável, enquanto que na linha de comandos do AutoCAD, devemos digitar o nome da variável precedido do caracter " ! ";
3.2- Nesta janela também podemos ver o resultado de funções de prompt como (print "texto"), (prin1 "texto") ou (princ "texto"). Estes resultados também são apresentados na linha de comando do AutoCAD;
3.3- Para executar o programa ou uma função denominada por exemplo, nomearq, após o sinal de prompt " _$ " digite o nome da função entre parênteses: (nomearq), ou digite (c:nomearq) se a função fôr inicializadora do programa.
3.4- Além disso, dispõe de algumas teclas que facilitam a digitação de funções, sendo que a principal diferença entre a digitação na linha de comando do AutoCAD e a digitação na janela de console, é a maneira de processamento das teclas [Tab] e [Espaço].
3.4.1- Havendo necessidade de múltiplas linhas de comando, pressione [Ctrl]+[Enter] para continuar a escrever a expressão na próxima linha. Já na linha de comando do AutoCAD, uma expressão é encerrada com um [Enter] ;
3.4.2- Como decorrência do recurso acima, pode-se definir mais de uma expressão para o Visual LISP avaliar, antes de se pressionar [Enter] ;
3.4.3- Pode-se transferir textos da janela de console para a janela de edição (copiar/colar);
3.4.4- A tecla [Tab] recupera na ordem do último para o anterior, os comandos digitados no console, mesmo se pressionada repetidamente. A combinação [Shift]+[Tab] recupera comandos previamente digitados, na ordem do primeiro para o posterior;
3.4.5- A tecla [Tab] também faz uma busca associativa nos comandos previamente digitados no console. Exemplificando, se você digitar " ( + " e então pressionar [Tab], o Visual LISP recupera o último comando digitado que inicia com " ( + ". A busca ainda pode ser feita na ordem inversa, usando [Shift]+[Tab], que recupera a primeira expressão iniciada com " ( + ".
3.4.6- A tecla [Esc] deleta o texto que segue o prompt ( _$ ) do console; [Shift]+[Esc] deixa o texto digitado no prompt sem nenhuma avaliação e exibe um novo prompt vazio;
3.5- Clicando no botão direito do mouse em qualquer local dentro da janela de console, um menu pop-up aparecerá, mostrando os comandos mais importantes:
Alguns destes comandos funcionam no sistema liga-desliga (on-off): se ele estiver marcado, um clique do mouse irá desmarcá-lo e vice-versa. Esses comandos são:
Cut - retira o texto selecionado do console, movendo-o para a área de transferência (clipboard) do Windows;
Copy - cria uma cópia do texto selecionado no console e o armazena no clipboard;
Paste - cria uma cópia do texto contido no clipboard na posição do cursor;
Clear Console Window - limpa a janela de console;
Find - procura por um texto específico na janela de console;
Inspect... - abre o quadro de diálogo Inspector* ;
Add Watch - abre o quadro de diálogo da função Watch* ;
Apropos Window... - abre o quadro de diálogo da função Apropos* ;
Symbol Service... - abre o diálogo da função Symbol Service* ;
Undo - desfaz a última operação realizada na janela de console;
Redo - refaz a última operação desfeita na janela de console;
AutoCAD Mode - transfere todas as entradas de informações realizadas no console do Visual LISP para a linha de comando do AutoCAD, avaliando as funções como se lá estivesse o controle, preservando as diferenças de digitação de cada janela;
Toggle Console Log - salva todas as operações efetuadas no console em um arquivo do tipo log, fornecendo um histórico daquilo que foi desenvolvido na janela do console. O histórico será gravado em um arquivo nomeado através do quadro de diálogo abaixo:
* Ferramentas do editor Visual LISP que veremos mais adiante.
4. FERRAMENTAS PARA DEPURAÇÃO OU CORREÇÃO DE ROTINAS (DEBUG)
Na programação, os erros podem ser de digitação, de sintaxe ou de lógica.
O editor Visual LISP oferece os seguintes recursos para detectar e corrigir estes erros:
verifica o balanceamento de parênteses;
verifica a sintaxe do programa;
localiza erros de sintaxe através de mensagens de erro;
acha a causa de erros que ocorrem na execução;
execução controlada do programa;
acompanhamento visual de variáveis;
verifica a pilha de execução do programa;
se desloca da pilha de execução com erro para o local do erro nos códigos;
apresenta mensagem de erro detalhada associada à expressão errônea;
o editor é colorido, enfatisando a sintaxe de linguagem e
formata o texto.
4.1- Verificando o balanceamento de parênteses
A grande quantidade de parênteses em um programa faz parte da estrutura da linguagem AutoLISP. Quando acontece um erro pela falta ou pelo excesso de parênteses, é notória a dificuldade de encontrá-lo no interior da listagem dos códigos da rotina.
Enquanto você está digitando o programa, o formatador do Visual LISP está verificando do correto balanceamento de parênteses, mas esta consistência pode ser checada manualmente, usando os comandos abaixo, cada um podendo ser acionado por um conjunto de teclas:
4.1.1- Match Backward = marca anteriormente ( Ctrl+[ ) - o cursor é movido para a posição do parêntese que abre a expressão.
4.1.2- Match Forward = marca posteriormente ( Ctrl+] ) - o cursor é movido para a posição do parêntese que fecha a expressão.
4.1.3- Select Backward = seleciona anteriormente ( Ctrl+Shift+[ ) - o mesmo que Ctrl+[, e seleciona o texto entre a nova posição do cursor e a sua posição original.
4.1.4- Select Forward = seleciona posteriormente ( Ctrl+Shift+] ) - o mesmo que Ctrl+], e seleciona o texto entre a posição original e a nova posição do cursor.
continua...
Bibliografia:
[1] AutoCAD 2008 Help: Developer Documentation
[2] Visual Lisp for AutoCAD - Módulo I - UPGRAPH - Waldomiro Yoshida - André Luiz Inharzs - 2001
[3] Visual Lisp: Guia Básico de Programação para o AutoCAD - Kléos Magalhães Lenz César Jr. - Editora Market Press - 2001
[4] Programando em AutoLISP - UNICAMP
[5] LISP para o AutoCAD - Ronaldo de Almeida - Editora Visual Books Ltda. - 2000
[6] Curso de DCL - DeseCAD - José Alberto Gáal - 1999
Retornar ao site www.autolisp.com.br
http://roberto.magnani.vila.bol.com.br
msn: robertomagnani@hotmail.com (converse conosco)