Introdução ao AutoLISPpaginas.fe.up.pt/~tavares/ensino/CFAC/Downloads...2 2011@JST/JOF CFAC:...
-
Upload
phamkhuong -
Category
Documents
-
view
220 -
download
0
Transcript of Introdução ao AutoLISPpaginas.fe.up.pt/~tavares/ensino/CFAC/Downloads...2 2011@JST/JOF CFAC:...
AutoLISP - I Introdução
João Manuel R. S. Tavares Joaquim Oliveira Fonseca
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
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.
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.
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.
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.
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)
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;
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.
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)
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).
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.
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).
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
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
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
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
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.
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
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
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”.)
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: