Baixe o app para aproveitar ainda mais
Prévia do material em texto
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: AutoLISP - I�Introdução Bibliografia AutoLISP o que é? Aplicações em AutoLisp Aplicações em AutoLisp Visual Lisp Editor Lisp Listas - composição Listas - composição Listas - Exemplos Listas - Exemplos Avaliando expressões em Lisp Avaliando listas de programa Exemplos de avaliação de listas de programa AutoLisp na linha de comando do AutoCAD AutoLisp na linha de comando do AutoCAD AutoLisp na linha de comando do AutoCAD Carregar programas AutoLisp no AutoCAD Exemplo - isomets.lsp Exemplo - isomets.lsp Exemplo - media.lsp Exemplo - media.lsp
Compartilhar