Escolar Documentos
Profissional Documentos
Cultura Documentos
AutoLISP - III
Funções de repetição e condicionais,
Obter e converter informação
Função condicional - if
Figura A: If A<0 executa a função prog1.
(if (< A 0)
(prog1)
) S S
Figura B: If A<0 executa as
funções prog1 e prog2. N N
(if (< A 0)
(progn ; abre o se
(prog1)
(prog2)
)
) CFAC: AutoLISP (III) - Funções de repetição e
2 2009@JST/JOF condicionais, Obter e converter informação
JST/JOF 1
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Função condicional - if
(if (< A 0)
(prog1)
(prog2)
)
Função condicional - if
Figura D: If A<0 executa as funções prog1 e prog2, senão executa
as funções prog3 e prog4.
(if (< A 0) S N
(progn ; abre o se
(prog1)
(prog2)
)
(progn ; abre o senão
(prog3)
(prog4)
)
)
CFAC: AutoLISP (III) - Funções de repetição e
4 2009@JST/JOF condicionais, Obter e converter informação
JST/JOF 2
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Função condicional - if
A = 1; 2; 3.
N
S
N
S
Função condicional - if
JST/JOF 3
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Função condicional - if
Função condicional - if
(cond
(= A 1) (prog1)
(= A 2) (prog2)
(= A 3) (prog3)
)
JST/JOF 4
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Operadores de comparação
= (igual)
(if (= A B C) (rotina))
/= (diferente)
(if (/= A B) (rotina))
< (menor)
(if (< A B) (rotina))
Operadores de comparação
> (maior)
(if (> A B) (rotina))
eq (idêntico)
(if (eq A B) (rotina))
equal (resultar em =)
(if (equal A B) (rotina))
CFAC: AutoLISP (III) - Funções de repetição e
10 2009@JST/JOF condicionais, Obter e converter informação
JST/JOF 5
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
JST/JOF 6
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Operadores lógicos
and (e lógico)
– Command: (setq a 103 b nil c "string") ;retorno: "string"
– Command: (and 1.4 a c) ;retorno: T
– Command: (and 1.4 a b c) ;retorno: nil
or (ou lógico)
– Command: (or nil 45 '()) ;retorno: T
– Command: (or nil '()) ;retorno: nil
not (negação)
– Command: (setq a 123 b "string" c nil) ;retorno: nil
– Command: (not a) ;retorno: nil
– Command: (not b) ;retorno: nil
– Command: (not c) ;retorno: T
– Command: (not '()) ;retorno: T
CFAC: AutoLISP (III) - Funções de repetição e
13 2009@JST/JOF condicionais, Obter e converter informação
S S
N N
JST/JOF 7
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
JST/JOF 8
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Obter dados
JST/JOF 9
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
JST/JOF 10
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
JST/JOF 11
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Exemplos:
(initget "A B C")
(setq OPC (getkword "\nOpcao (A, B ou C)? "))
Se algo diferente de A, B ou C for digitado, a mensagem
“INVALID OPTION KEYWORD” será apresentada e o programa
pára a aguardar nova inserção.
CFAC: AutoLISP (III) - Funções de repetição e
24 2009@JST/JOF condicionais, Obter e converter informação
JST/JOF 12
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
–exemplos de strings:
"S N s n"
"Sim Não"
"Aprovado Reprovado Exame"
JST/JOF 13
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Exemplos:
getvar
Obtém o valor de uma variável do sistema (do AutoCAD).
(setq LAYERATIVA (getvar "clayer"))
setvar
Altera o valor de uma variável do sistema.
(setvar "clayer" "2D-PAR")
getenv
Obtém o valor de uma variável do sistema operativo.
(getenv "path")
JST/JOF 14
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Converter dados
Funções de conversão
JST/JOF 15
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Funções de conversão
Notas:
– A divisão (/ real int) resulta em real
– A divisão (/ int int) resulta em int (casas decimais
eliminadas)
– (/ 40 5 2) resulta 4
JST/JOF 16
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Desenho obtido
Funções de impressão
princ:
– Imprime uma expressão na linha de comando ou num arquivo aberto.
– Se a expressão contém caracteres de controle (como \\, \", \e, \n, \t ....)
estes são interpretados e executados; isto é: \n equivale a uma nova
linha; \t equivale a TAB, etc.
prin1:
– Igual a função princ excepto que caracteres de controle não são
interpretados e sim impressos literalmente.
print:
– Igual a função princ excepto que imprime sempre a expressão numa
nova linha e com um espaço a seguir ao que foi impresso.
prompt:
– Semelhante a princ, no entanto em configurações de dois ecrãs a
informação é escrita em ambos os ecrãs do AutoCAD.
CFAC: AutoLISP (III) - Funções de repetição e
34 2009@JST/JOF condicionais, Obter e converter informação
JST/JOF 17
CFAC: AutoLISP (III) - Funções de repetição e 2009@FEUP/DEMec-SDI
condicionais, Obter e converter informação
Sintaxe:
(princ [expressão [nome-de-arquivo]])
Exemplos:
(setq A 123 B ´(A))
(princ 'A) ;imprime A e retorna A
(princ A) ;imprime 123 e retorna 123
(princ B) ;imprime (A) e retorna (A)
(princ "\nOla") ;imprime "Ola" numa nova linha e retorna
;"Ola"
(princ "Ola" f) ;imprime "Ola" no arquivo f e retorna "Ola"
JST/JOF 18