introdução ao autolisptavares/ensino/cfac/downloads... · 2012. 12. 28. · 7 2011@jst/jof cfac:...

22
AutoLISP - I Introdução João Manuel R. S. Tavares Joaquim Oliveira Fonseca

Upload: others

Post on 20-Jan-2021

9 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

AutoLISP - I Introdução

João Manuel R. S. Tavares Joaquim Oliveira Fonseca

Page 2: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

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

Page 3: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 4: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 5: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 6: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 7: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 8: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

8 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;

Page 9: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 10: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 11: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 12: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 13: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 14: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 15: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

15

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

– Command: (setq B 3.0) 3.0

Retorno

Retorno

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

Page 16: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

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

Page 17: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

17 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: to point: Command: nil

Command: (defun vistalatdir() (command "vpoint" "1,0,0")) VISTALATDIR

Command: (vistalatdir)

Chamada de um comando do AutoCAD

Page 18: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

Page 19: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

19 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")) ;;;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

Comando Autocad

Page 20: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

20 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 Command: iso1 vpoint Rotate/ <0.0000 0.0000 1.0000>: 1,1,1

Regenerating drawing Command: nil

Última função carregada

Page 21: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

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

(Para não aparecer “Command: nil”.)

Page 22: Introdução ao AutoLISPtavares/ensino/CFAC/Downloads... · 2012. 12. 28. · 7 2011@JST/JOF CFAC: AutoLISP (I) - Introdução Lisp A linguagem de programação Lisp é: – da mesma

22 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: