Escolar Documentos
Profissional Documentos
Cultura Documentos
Funções Do AutoLISP
Funções Do AutoLISP
1. Intruduo ao AutoLISP
O AutoLISP deriva-se do LISP, abreviatura para LISt Processing. Os programas
em AutoLISP rodam apenas dentro do AutoCAD e podem ser movidos de um
plataforma para outra com facilidade. A linguagem AutoLISP evoluiu de forma a conter a
maioria dos comandos bsico, tipos de dados e capacidades da linguagem de
programao LISP, assim como funes especiais adicionais para operaes dentro do
sistema grfico do AutoCAD. Como o LISP um processador de listas, ele se encaixa
quase naturalmente dentro de um sistema CAD. Os sistemas grficos, especialmente
sistemas CAD, so baseados em pontos e vetores.
Pontos podem realmente se considerados listas, j que dois ou trs nmeros reais
so combinados para formar um ponto de referncia. Normalmente, um ponto
designado usando uma coordenada x, y, z para definir sua posio no espao, o que
representa uma lista de trs nmeros. Em um nvel bsico de um sistema CAD, estamos
lidando com listas de nmeros. Uma linha tambm pode ser considerada uma lista, que
contm duas listas descrevendo os valores de coordenada do ponto. Expandindo ao
conceito, um polgono uma lesta de trs ou mais pontos, onde o primeiro ponto
tambm o ltimo ponto. Em cada caso, a informao grfica pode ser reduzida a uma
lista de listas. Consequentemente, uma linguagem processadora de listas uma
linguagem natural para o ambiente CAD.
2. Blocos de Estrutura do AutoLISP
2.1. - Elementos de dados
O elemento de dados mais bsico do LISP o tomo. Um tomo normalmente
um palavra de computador ou um nico byte. Tipos de dados mais complexos so
construdos a partir de tomos usando listas. Os tipos atmicos do AutoLISP so:
Funes: so funes internas do AutoLISP ou definidas pelo usurio.
Listas (list): as listas podem conter tanto tomos como outras listas em qualquer
combinao ou sequncia. Uma lista contendo um sub-rotina AutoLISP ou um nome de
funo como seu primeiro elemento se destinam a obter um resultado.
Inteiros: so nmeros inteiros que no contm ponto decimal. So armazenados em dois
bytes agrupados, cuja faixa vlida de -32.768 at 32.767.
Reais: so nmeros com um ponto decimal. So armazenados usando dupla preciso (8
bytes). A preciso vlida de aproximadamente 15 decimais.
Strings: uma string consiste de um conjunto de caracteres ASCII agrupados dentro de
um par de aspas ( ). So usadas para gerar prompts ao usurio, aceitar dados nonumricos a partir do teclado e interagir com arquivos de dados.
Nothing (nil): quando um objeto no tem um valor, ns o consideramos ligado a nil.
Quando um smbolo utilizado em uma expresso no AutoLISP mas ainda no est
definido, ele inicialmente ajustado para um valor de nil.
Adio
Subtrao
Multiplicao
Diviso
Adicione um a um nmero
(1+ 2.0) ; retorna 3.0
Subtrai um de um nmero
Encontra o num. mnimo em um conjunto
Encontra o num. mximo em um conjunto
Retorna o valor absoluto de um nmero
Retorna a raiz quadrada de um nm.
Retorna o valor de e elevado potncia de um nmero
Retorna um nmero elevado potencia de outro
Retorna o logartmo natural de um nmero.
Retorna o maior denominador comum de dois nmeros inteiros
Retorna o resto da diviso de dois nmeros.
Retorna o seno de um nmero (em radianos)
Retorna o cosseno de um nmero (em radianos)
Retorna o arcotangente de um nmero (em radianos)
3. Manipulando listas
O ponto a parte mais elementar de um sistema CAD e constitudo de uma lista
de dois ou trs nmeros. O primeiro assumido como a coordenada x, o segundo como
y e o outro a z. Quaisquer das seguintes expresses estabelecem um ponto na varivel
P1.
(setq p1 (list 3.5 4.0 0.0) )
=
(setq p1 (3.5 4.0 0.0) )
Obs: o smbolo antes do primeiro parnteses de uma lista indica que todo o contedo
lista ou lista de listas.
(setq R (list (list 0 0 0) (list 10 10 1)))
=
(setq R ((0 0 0) (10 10 1)))
Acessar elemento:
car
cdr
Manipulao de listas:
apply Retorna o resultado final da aplicao de uma funo a uma ou mais listas
(setq x '(0 10 12 8))
(apply '+ x)
30
length Retorna o nmero de tomos na lista.
(length x)
4
reverse Inverte o contedo de uma lista
(reverse x)
(8 12 10 0)
subst Substitui itens numa lista com outro valor
(setq codigo_G
(subst '("movimento rapido" "g00")
'("movimento rapido" "g0")
codigo_G))
(("movimento rapido" "g00")
("interpolacao linear" "g1")
("interpolacao circular sent. horario" "g2")
("interpolacao circular sent. Anti-horario" "g3"))
Manipulao de pontos:
distance Distncia entre dois pontos 3D
(distance <ponto1> <ponto2>)
angle ngulo entre dois pontos no plano XY
(angle <ponto1> <ponto2>)
polar Localizao do ponto x,y em coordenadas polares
(polar <ponto1> <ngulo> <distncia>)
inters Calcula a interseco de duas linhas 3D
(inters <ponto1> <ponto2> <ponto3> <ponto4>)
trans Converte o ponto para outro sistema de coordenadas
(trans <ponto> <from> <to>)
Listas como banco de dados:
Considerando a lista de associao com os seguintes valores:
(classificao; nome; custo; quantidade; processo;)
(setq dmat (list
(1230 PEA1 45.0 25 TORNO)
(1235 PEA2 30.0 10 FRESA)
(3210 PEA3 10.0 50 PLAINA)
a) Qual o processo do item #3210?
b) Qual o custo total de PEA2?
c) Qual o nmero de classificao da PEA1?
4. Definio de funes
Se as expresses AutoLISP tivessem de ser digitadas no computador cada vez
que se deseja executar um clculo, a utilizao da linguagem seria invivel, exceto nos
casos mais simples. Uma maneira de salvar uma sequncia de expresses atravs da
seguinte funo:
defun Permite que um conjunto de expresses LISP seja ligado a um smbolo ou nome
de funo.
Sintaxe:
)
Ex:
que
; distante 00 a partir do ponto p1 na direo
DD
trace Permite que uma funo seja depurada.
untrace
Faz com que o AutoLISP no mostre mais os parmetros de entrada e o
valor resultante.
Armazenando funes AutoLISP
Quando uma funo digitada no prompt Command, ela perdida se o desenho
for plotado ou quando se sai do AutoCAD. Deve-se usar arquivos de texto ASCII para
armazenar funes fora do AutoCAD. O arquivo deve ter extenso .lsp.
load
(command LINE p1 p2 )
As duas aspas no final da expresso serve para que o comando seja terminado.
3.14159
(getangle '(10 10 0) "angulo?")
>angulo?180
3.14159
Se entrar com um ponto:
(getangle '(10 10 0) "angulo?")
>angulo?20,10
0.0
(getangle '(10 10 0) "angulo?")
>angulo?0,10
3.14159
(getangle "angulo?")
>angulo?20,10
> Specify second point: 10,10
3.14159
getcorner Retorna uma lista de pontos
Sintaxe:
(getcorner ponto string)
Ex:
(setq p2 (getcorner p1 Outro canto:)
getdist Retorna um nmero real tipicamente utilizado para entrada de distncias.
Sintaxe:
getpoint
Declarao de entrada de pontos.
getrealDeclarao de entrada para introduzir nmeros reais nas expresses AutoLISP.
getstring Entrada de strings. Se um flag # 0 estiver presente, permite caracter de
espao.
Caracteres de controle:
Formato
\\
\e
\n
\r
\t
\
\nnn
Significado
barra invertida: \
Escape
Return e line-feed: nova linha
Return: Enter
Tab
Aspas:
O caracter ASCII cujo nmero octal nnn.
6. Expresses condicionais
As expresses que avaliam testes condicionais so conhecidas como predicados.
Eles retornam uma da duas respostas: falso (nil) ou verdadeiro (T).
Predicados de relacionamento
Smbolo
=
Teste
Igual
String
*
/=
=
=
Ex:
Diferente
Menor que
Maior que
Menor ou igual a
Maior ou igual a
(setq n1 1
(= n1 n2)
(= n1 1)
n2
2)
;retorna 2
;retorna nil
;retorna T
Ex:
Utilizando condicionais
if
then
else
Teste condicional.
Avalia um conjunto de expresses se o teste condicional for verdadeiro.
Avalia um conjunto de expresses se o teste condicional for falso.
(if (teste condicional)
(then procedimento)
(else procedimento)
)
(4 5 6)
(mapcar * listaa listab)
(4 10 18)
8. Acessando o banco de dados de desenho
Funes podem ser criadas para consultar e manipular diretamente os contedos
do desenho atualmente em uso. Nomes de entidades e conjuntos de seleo so as
chaves para acessar dados dentro dos desenhos.
8.1. Conjunto de Seleo
Conjunto de seleo so listas especiais que contm os nomes das entidades dos
itens selecionados. definido como um tipo de dado especfico da mesma maneira que
uma string, um inteiro ou uma lista. O AutoLISP possui um conjunto de expresses
projetadas especificamente para manipular conjuntos de seleo.
ssadd Adiciona nomes de entidades a um conjunto de seleo novo ou existente.
ssget Gera novos conjuntos de seleo cada vez que a expresso for usada.
Parmetros opcionais:
(ssget
( opo )
{ ( ponto1 ) lista ( ponto2 )
)
Opo Constri Conjuntos de Seleo a partir de:
P
Conjunto anterior usado em um comando AutoCAD
L ltima entidade no banco de dados
W Entidades contidas em uma janela definidas por ponto1 e ponto2
C Entidades que cruzam uma janela definidas por ponto1 e ponto2
X Todas as entidades com uma caracterstica em particular, a opo de lista de
filtragem
I
Conjunto de seleo implcito
F
Todas as entidades cruzando a proteo (fence) de seleo
CP Todas as entidades contidas e cruzando o polgono de seleo
WP Todas as entidades contidas inteiramente no polgono de seleo
Ex:
1) localizar o arquivo
2) abrir o arquivo
3) escrever no arquivo e ler a partir dele
4) fechar o arquivo
open Acessa um arquivo especfico.
(setq <ponteiro de arquivo> (open nome do arquivo opo))
opo: w escreve em um arquivo original
r l a partir de um arquivo existente
a anexa novos dados a partir de um arquivo existente
close Fecha um arquivo.
(close <ponteiro de arquivo>)
findfile
Procura por um arquivo.
read-char L um archivo e retorna um nico caractere por vez como nmero inteiro
(cd. ASCII).
(read-char <ponteiro de arquivo>)
read-line Retorna cada linha como uma string.
(read-line <ponteiro de arquivo>)
write-char Envia um caracter por vez a um arquivo, dado um cdigo ASCII e um
ponteiro.
Ex:
(setq fp (open teste.txt w)
( write-char 65 fp)
( close fp)
write-line Envia strings ao arquivo.
10. Modificando tipos de dados
Como todas as entradas e sadas de dados para e a partir do disco so executadas
usando arquivos de texto ASCII, necessrio converter de strings para nmeros e viceversa.
strcaseConverte uma string em maisculos ou minsculos.
(strcase string <flag>)
flag: se presente e no nulo converte para minsculas
no presente ou nil
converte para maisculas
strcat Combina strings.
strlen Retorna o nmero de caracteres de uma string.
substr Separa strings.
(substr string <par.1> <par.2>)
par.1: posio do caracter para iniciar a extrao
par.2: nm. de caracteres a serem extrados (opcional).
atoi
atof
ascii
read
rtos