Você está na página 1de 22

AutoLISP - I

Introduo

Joo Manuel R. S. Tavares


Joaquim Oliveira Fonseca
Bibliografia
Programao em AutoCAD, Curso Completo
Fernando Lus Ferreira, Joo Santos
FCA

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

Domine a 110% AutoCAD 13


Pedro Leo Neto
FCA

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

O AutoLisp baseado na linguagem de


programao LISP (List Processing); de
aprendizagem simples, porm poderosa.
O AutoCAD tem um interpretador de Lisp
embebido, que permite a digitao de
expresses/funes AutoLisp na linha de
comando e a sua interpretao automtica.
O AutoCAD inclu rotinas AutoLisp bastante
teis nos subdirectrios sample e support.

3 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Aplicaes em AutoLisp

So armazenadas em arquivos ASCII com


extenso .lsp.
Devem ser previamente carregadas para o
ambiente do AutoCAD para serem executadas.
Como carregar:
na linha de comando;
pelo menu Tools, opo AutoLISP ...;
de forma automtica incluindo-a no arquivo
acad.lsp.

4 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Aplicaes em AutoLisp

Carregamento de
programas em
autoLISP pela opo
Load... do submenu
AutoLISP existente
no menu Tools.

5 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


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 2009@JST/JOF CFAC: AutoLISP (I) - Introduo
Lisp

A linguagem de programao Lisp :


da mesma poca do Fortran;
diferente de outras linguagens de programao, por
exemplo, dados e programas so tratados da mesma forma
(tudo como listas) e so colocados no mesmo espao de
memria do computador;
linguagem interpretada; isto , toda vez que o programa
executado o cdigo fonte avaliado;
muito utilizada em programao na rea da inteligncia
artificial.

O Lisp utiliza a notao infixa (operador seguido dos


operandos): 1 + 2 (+ 1 2)

7 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Listas - composio

Cada instruo em Lisp inicia com (, termina


com ) e composta por tomos, que podem
ser:
um nmero inteiro;
um nmero real;
uma cadeia de caracteres (uma string);
um smbolo: nome de funo interna ou
definida pelo utilizador;
uma varivel: um smbolo que representa o
nome de um dado;

8 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Listas - composio

um nil: valor nulo (vazio);


um apontador para um arquivo (file
descriptor);
uma sub-rotina: nome de funes internas e
externas do AutoLisp;
um nome de entidade: cdigo numrico
associado ao objecto numa sesso de
trabalho;
conjunto de seleco: conjunto de objectos
seleccionados.

9 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Listas - Exemplos

Exemplos de listas de dados:

(2.0 3.5 7.6)


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

(sub lista)

10 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Listas - Exemplos
Lista de programa (primeiro elemento um nome de funo ou
uma subrotina):
(setq A 21)
setq uma funo, A um smbolo (nome de varivel)

(list 2 3 4)
list uma funo

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


defun e command so funes

(vistalatdir)
vistalatdir um smbolo (nome de funo).

11 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Avaliando expresses em Lisp

O interpretador do Lisp denominado avaliador.


Toda a entrada em Lisp processada por meio do
avaliador.
Tudo dentro do AutoLisp em relao ao avaliador retorna
um valor como resultado, por exemplo:
quando um elemento de dado apresentado ao avaliador,
o valor atribudo ao elemento retornado;
quando um smbolo apresentado, o valor da ligao
actual do smbolo retornado;
quando uma lista de programa, apresentada, essa
executada e o valor final da execuo retornado.

12 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Avaliando listas de programa

Se o primeiro elemento da lista for o nome de


uma subrotina ou de uma funo definida, a
subrotina ou a funo executada; o restante
da lista usado como parmetros (para a
subrotina ou para a funo em questo).
Se o primeiro elemento da lista no for uma
funo ou subrotina, obtm-se uma mensagem
de erro: bad function (funo incorrecta).

13 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Exemplos de avaliao de listas de
programa

(list 1 2 3) - constri uma lista de 3 nmeros


inteiros; retorna (1 2 3);
(2.0 3.0 6.6) - retorna erro: bad function;
(setq a 1.0) - retorna o valor 1.0 atribudo
varivel a;
(set 'a 1.0) - idem mas usando o smbolo ';
(set (quote a) 1.0) - idem mas usando a
subrotina/funo interna quote.

14 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


AutoLisp na linha de comando do
AutoCAD

possvel avaliar expresses em AutoLisp e at funes


na linha de comando do AutoCAD.
Este recurso muito utilizado para experimentao e
teste.
Basta digitar na linha de comando a expresso ou funo
desejada, por exemplo:
Command: (setq A 2.0)
2.0 Retorno
Command: (setq B 3.0)
3.0 Retorno

15 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


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 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


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 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Carregar programas AutoLisp no
AutoCAD

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


disco:\\sub-diretrio\\nome-do-promaga-com-
extenso), por exemplo:
Command: (load "c:\\trab\\programa1.lsp")

Na opo Load Application ... do menu Tools


indicar o arquivo a ser carregado, procurando
sua localizao com auxlio do boto File, e
depois carreg-lo accionando o boto Load.

18 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Exemplo - isomets.lsp

Contedo 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"))
; = incio de comentrio
19 2009@JST/JOF CFAC: AutoLISP (I) - Introduo
Exemplo - isomets.lsp

Carregar o arquivo isomets.lsp e executar as


funes:

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


ISO3 ltima funo
carregada
Command: iso1
vpoint Rotate/ <0.0000 0.0000 1.0000>: 1,1,1
Regenerating drawing
Command: nil

20 2009@JST/JOF CFAC: AutoLISP (I) - Introduo


Exemplo - media.lsp

Contedo 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 no aparecer
(defun soma-e-divide() Command: nil.)
(/ (+ t1 t2) 2.0)
)
21 2009@JST/JOF CFAC: AutoLISP (I) - Introduo
Exemplo - media.lsp

Carregar o arquivo media.lsp e executar a funo


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

22 2009@JST/JOF CFAC: AutoLISP (I) - Introduo

Você também pode gostar