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
CFAC: AutoLISP (I) - Introduo

2009@JST/JOF

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.
CFAC: AutoLISP (I) - Introduo

2009@JST/JOF

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.
CFAC: AutoLISP (I) - Introduo

2009@JST/JOF

Aplicaes em AutoLisp

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

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.
CFAC: AutoLISP (I) - Introduo

2009@JST/JOF

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)


CFAC: AutoLISP (I) - Introduo

2009@JST/JOF

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;
CFAC: AutoLISP (I) - Introduo

2009@JST/JOF

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.
CFAC: AutoLISP (I) - Introduo

2009@JST/JOF

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).
CFAC: AutoLISP (I) - Introduo

11

2009@JST/JOF

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.
CFAC: AutoLISP (I) - Introduo

12

2009@JST/JOF

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.
CFAC: AutoLISP (I) - Introduo

14

2009@JST/JOF

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 Command: (setq B 3.0) 3.0

Retorno 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 5.0 Command: (setq p1 (list 1 2)) (1 2) Command: (setq p2 (list 10 20)) (10 20)

Escrever valor de C

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 comando do to point: AutoCAD Command: nil Command: (defun vistalatdir() (command "vpoint" "1,0,0")) VISTALATDIR Command: (vistalatdir)
CFAC: AutoLISP (I) - Introduo

17

2009@JST/JOF

Carregar programas AutoLisp no AutoCAD

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 accionando o boto Load.
CFAC: AutoLISP (I) - Introduo

18

2009@JST/JOF

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

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

(Para no aparecer Command: nil.)

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