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

2011@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.

2011@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.

2011@JST/JOF

CFAC: AutoLISP (I) - Introduo

Aplicaes em AutoLisp

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

2011@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.

2011@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)

2011@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;

2011@JST/JOF

CFAC: AutoLISP (I) - Introduo

Listas - composio

um nil: valor nulo (vazio);


um apontador para um arquivo (file descritor);
uma sub-rotina: nome de funes internas e
externas do AutoLisp;
um nome de entidade: cdigo numrico
associado ao objeto numa sesso de
trabalho;
conjunto de seleo: conjunto de objetos
selecionados.

2011@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

2011@JST/JOF

CFAC: AutoLISP (I) - Introduo

Listas - Exemplos

11

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).

2011@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:

12

quando um elemento de dado apresentado ao avaliador,


o valor atribudo ao elemento retornado;
quando um smbolo apresentado, o valor da ligao atual
do smbolo retornado;
quando uma lista de programa, apresentada, essa
executada e o valor final da execuo retornado.

2011@JST/JOF

CFAC: AutoLISP (I) - Introduo

Avaliando listas de programa

13

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 incorreta).

2011@JST/JOF

CFAC: AutoLISP (I) - Introduo

Exemplos de avaliao de listas de


programa

14

(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.

2011@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:

15

Command: (setq A 2.0)


2.0
Command: (setq B 3.0)
3.0

2011@JST/JOF

Retorno
Retorno

CFAC: AutoLISP (I) - Introduo

AutoLisp na linha de comando do


AutoCAD

16

Command: (setq C (+ A B))


5.0
Command: !C
5.0
Command: (setq p1 (list 1 2))
(1 2)
Command: (setq p2 (list 10 20))
(10 20)

2011@JST/JOF

Escrever valor de C

CFAC: AutoLISP (I) - Introduo

AutoLisp na linha de comando do


AutoCAD

17

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


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

2011@JST/JOF

CFAC: AutoLISP (I) - Introduo

Carregar programas AutoLisp no


AutoCAD

18

Na linha de comando digitar: (load unidade-dedisco:\\sub-diretrio\\nome-do-promaga-comextenso), 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 acionando o boto Load.

2011@JST/JOF

CFAC: AutoLISP (I) - Introduo

Exemplo - isomets.lsp

Contedo do arquivo isomets.lsp:


;;;Vista isometrica lat-dir, fundo, por-cima
(defun c:iso1()
Comando Autocad
(command "vpoint" "1,1,1"))
;;;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

2011@JST/JOF

CFAC: AutoLISP (I) - Introduo

Exemplo - isomets.lsp

Carregar o arquivo isomets.lsp e executar as


funes:
Command: (load "c:\\trab\\isomets.lsp")
ltima funo
ISO3
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) - Introduo

Exemplo - media.lsp

21

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
(defun soma-e-divide()
(/ (+ t1 t2) 2.0)
)

2011@JST/JOF

(Para no aparecer
Command: nil.)

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: 15.0
Nota teste-2: 17.0
Media dos testes = 16.0
Command:

22

2011@JST/JOF

CFAC: AutoLISP (I) - Introduo

Você também pode gostar