Você está na página 1de 22

AutoLISP - I

Introdução

João Manuel R. S. Tavares


Joaquim Oliveira Fonseca
Bibliografia
 Programação em AutoCAD, Curso Completo
Fernando Luís Ferreira, João Santos
FCA

 Programando em AutoLISP
Kramer, W. e Kramer
MAKRON Books do Brasil Editora Ltda

 Domine a 110% AutoCAD 13


Pedro Leão Neto
FCA

 Programando em AutoLISP
R. C. Ruschel, DCC-FEC-UNICAMP
http://www.fec.unicamp.br/~regina/alisp0.html
2 2011@JST/JOF CFAC: AutoLISP (I) - Introdução
AutoLISP o que é?

 O AutoLisp é baseado na linguagem de


programação LISP (List Processing); de
aprendizagem simples, porém poderosa.
 O AutoCAD tem um interpretador de Lisp
embebido, que permite a digitação de
expressões/funções AutoLisp na linha de
comando e a sua interpretação automática.
 O AutoCAD incluí rotinas AutoLisp bastante
úteis nos subdirectórios sample e support.

3 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Aplicações em AutoLisp

 São armazenadas em arquivos ASCII com


extensão .lsp.
 Devem ser previamente carregadas para o
ambiente do AutoCAD para serem executadas.
 Como carregar:
– na linha de comando;
– pelo menu Tools, opção AutoLISP ...;
– de forma automática incluindo-a no arquivo
acad.lsp.

4 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Aplicações em AutoLisp

 Carregamento de
programas em
autoLISP pela opção
Load... do submenu
AutoLISP existente
no menu Tools.

5 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Visual Lisp Editor

 O AutoCAD
incluí um editor
de programas
em AutoLISP: o
Visual Lisp
Editor
executado a
partir do
submenu
Autolisp do
menu Tools.
6 2011@JST/JOF CFAC: AutoLISP (I) - Introdução
Lisp

 A linguagem de programação Lisp é:


– da mesma época do Fortran;
– diferente de outras linguagens de programação, por
exemplo, dados e programas são tratados da mesma forma
(tudo como listas) e são colocados no mesmo espaço de
memória do computador;
– linguagem interpretada; isto é, toda vez que o programa é
executado o código fonte é avaliado;
– muito utilizada em programação na área da inteligência
artificial.

 O Lisp utiliza a notação infixa (operador seguido dos


operandos): 1 + 2 (+ 1 2)

7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Listas - composição

 Cada instrução em Lisp inicia com “(“, termina


com “)” e é composta por átomos, que podem
ser:
– um número inteiro;
– um número real;
– uma cadeia de caracteres (uma string);
– um símbolo: nome de função interna ou
definida pelo utilizador;
– uma variável: um símbolo que representa o
nome de um dado;

8 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Listas - composição

– um nil: valor nulo (vazio);


– um apontador para um arquivo (file descritor);
– uma sub-rotina: nome de funções internas e
externas do AutoLisp;
– um nome de entidade: código numérico
associado ao objeto numa sessão de
trabalho;
– conjunto de seleção: conjunto de objetos
selecionados.

9 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Listas - Exemplos

 Exemplos de listas de dados:

– (2.0 3.5 7.6)


– ("paola" (11 06 1996) 3.150 51)

(sub lista)

10 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Listas - Exemplos
 Lista de programa (primeiro elemento é um nome de função ou
uma subrotina):
– (setq A 21)
setq é uma função, A é um símbolo (nome de variável)

– (list 2 3 4)
list é uma função

– (defun vistalatdir () (command "vpoint" "1,0,0"))


defun e command são funções

– (vistalatdir)
vistalatdir é um símbolo (nome de função).

11 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Avaliando expressões em Lisp

 O interpretador do Lisp é denominado avaliador.


 Toda a entrada em Lisp é processada por meio do
avaliador.
 Tudo dentro do AutoLisp em relação ao avaliador retorna
um valor como resultado, por exemplo:
– quando um elemento de dado é apresentado ao avaliador,
o valor atribuído ao elemento é retornado;
– quando um símbolo é apresentado, o valor da ligação atual
do símbolo é retornado;
– quando uma lista de programa, é apresentada, essa é
executada e o valor final da execução é retornado.

12 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Avaliando listas de programa

 Se o primeiro elemento da lista for o nome de


uma subrotina ou de uma função definida, a
subrotina ou a função é executada; o restante
da lista é usado como parâmetros (para a
subrotina ou para a função em questão).
 Se o primeiro elemento da lista não for uma
função ou subrotina, obtém-se uma mensagem
de erro: “bad function” (função incorreta).

13 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Exemplos de avaliação de listas de
programa

 (list 1 2 3) - constrói uma lista de 3 números


inteiros; retorna (1 2 3);
 (2.0 3.0 6.6) - retorna erro: bad function;
 (setq a 1.0) - retorna o valor 1.0 atribuído à
variável a;
 (set 'a 1.0) - idem mas usando o símbolo ';
 (set (quote a) 1.0) - idem mas usando a
subrotina/função interna quote.

14 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


AutoLisp na linha de comando do
AutoCAD

 É possível avaliar expressões em AutoLisp e até funções


na linha de comando do AutoCAD.
 Este recurso é muito utilizado para experimentação e
teste.
 Basta digitar na linha de comando a expressão ou função
desejada, por exemplo:
– Command: (setq A 2.0)
2.0 Retorno
– Command: (setq B 3.0)
3.0 Retorno

15 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


AutoLisp na linha de comando do
AutoCAD

 Command: (setq C (+ A B))


5.0
 Command: !C Escrever valor de C
5.0
 Command: (setq p1 (list 1 2))
(1 2)
 Command: (setq p2 (list 10 20))
(10 20)

16 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


AutoLisp na linha de comando do
AutoCAD

 Command: (command "line" p1 p2 "")


line From point:
to point: Chamada de um
to point: comando do
AutoCAD
Command: nil
 Command: (defun vistalatdir() (command "vpoint"
"1,0,0"))
VISTALATDIR
Command: (vistalatdir)

17 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Carregar programas AutoLisp no
AutoCAD

 Na linha de comando digitar: (load “unidade-de-


disco:\\sub-diretório\\nome-do-promaga-com-
extensão”), por exemplo:
Command: (load "c:\\trab\\programa1.lsp")

 Na opção Load Application ... do menu Tools


indicar o arquivo a ser carregado, procurando
sua localização com auxílio do botão File, e
depois carregá-lo acionando o botão Load.

18 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Exemplo - isomets.lsp

 Conteúdo do arquivo isomets.lsp:


;;;Vista isometrica lat-dir, fundo, por-cima
(defun c:iso1()
(command "vpoint" "1,1,1")) Comando Autocad
;;;Vista isometrica lat-esq, fundo, por-cima
(defun c:iso2()
(command "vpoint" "-1,1,1"))
;;;Vista isometrica lat-dir, frente, por-cima
(defun c:iso3()
(command "vpoint" "1,-1,1"))
; = início de comentário
19 2011@JST/JOF CFAC: AutoLISP (I) - Introdução
Exemplo - isomets.lsp

 Carregar o arquivo isomets.lsp e executar as


funções:

Command: (load "c:\\trab\\isomets.lsp")


ISO3 Última função
carregada
Command: iso1
vpoint Rotate/ <0.0000 0.0000 1.0000>: 1,1,1
Regenerating drawing
Command: nil

20 2011@JST/JOF CFAC: AutoLISP (I) - Introdução


Exemplo - media.lsp

 Conteúdo do arquivo media.lsp:


;;;Programa principal
(defun c:mediatestes()
(setq t1 (getreal "\nNota teste-1: "))
(setq t2 (getreal "\nNota teste-2: "))
(setq nota (soma-e-divide))
(princ "\nMedia dos testes = ")
(princ nota) (princ)
)
;;;funcao soma-e-divide (Para não aparecer
(defun soma-e-divide() “Command: nil”.)
(/ (+ t1 t2) 2.0)
)
21 2011@JST/JOF CFAC: AutoLISP (I) - Introdução
Exemplo - media.lsp

 Carregar o arquivo media.lsp e executar a função


mediatestes:
Command: (load "c:\\trab\\media.lsp")
SOMA-E-DIVIDE
Command: mediatestes
Nota teste-1: 15.0
Nota teste-2: 17.0
Media dos testes = 16.0
Command:

22 2011@JST/JOF CFAC: AutoLISP (I) - Introdução

Você também pode gostar