Nesta aula, o professor lançou um novo desafio/exercício - o de criar uma MACRO. O desenvolvimento da aula baseou-se então na aprendizagem com base no exercício das Macros. O criar de uma Macro pretende optimizar os comandos de modo a acelerar o processo do Desenho.
Para fazer uma macro que nos desenhe 1 quadrado basta definir duas variáveis: (qual é) o ponto inicial e (qual é) o lado, definindo assim um quadrado.
Usamos o SETQ para associar uma variável, neste caso p1, ao nome do parâmetro, que é "qual é o ponto inicial". Aqui usamos o GETPOINT porque se trata de um ponto mas no a seguir como se trata de um comprimento usamos o GETREAL.
Primeiro ponto (p1) x=0 , y=0
Segundo ponto (p2) x=la , y=0 (lado pretendido)
e assim sucessivamente... até ter quatro pontos definidos:
(setq p1 (list 0 0)
(setq p2 (list la 0)
(setq p3 (list la la)
(setq p4 (list 0 la)
Para fechar a figura geométrica, usamos o "c" no fim do comando:
(command "line" p1 p2 p3 p4 "c")
Agora ficamos com a seguinte expressão (NotePad++ >.lsp>AppLoad>Quadrado.lsp):
(defun c:quadrado()
;(setq p1 (getpoint "Qual o ponto inicial?"))
(setq la (getreal "Qual a medida do lado?"))
(setq p1 (list 0 0))
(setq p2 (list la 0))
(setq p3 (list la la))
(setq p4 (list 0 la))
(setq bla (getvar "osmode"))
(setvar "osmode" 0)
(command "line" p1 p2 p3 p4 "c")
(setvar "osmode" bla)
)
NOTA: Neste caso o ponto inicial está definido para ser (0,0) e indicamos o SETQ do p1 unica e exclusivamente para fins informativos (e para mais tarde a ativar), usando o ";" antes da expressão.
NOTA(2): usamos GETVAR para ler o "osmode" actual (afim de poder voltar às configurações antigas a seguir ao comando) e utilizamos o SETVAR (estabelece uma variável) para desligar o snap mode ("osmode"). O código para 0 configurações é o "0". (F1 > Help > Search > osmode)
(defun c:quadrado()
(setq p1 (getpoint "Qual o ponto inicial?"))
(setq la (getreal "Qual a medida do lado?"))
;(setq p1 (list 0 0))
(setq p2 (list (+ (car p1) la) (cadr p1)))
(setq p3 (list (car p2) (+ (cadr p2) la)))
(setq p4 (list (car p1) (cadr p3)))
(setq bla (getvar "osmode"))
(setvar "osmode" 0)
(command "line" p1 p2 p3 p4 "c")
(setvar "osmode" bla)
)
Nesta expressão, do DEFUN e do SETQ usámos o CAR e o CADR para seleccionar apenas a coordenada (das duas - x ou y) pretendida de pontos anteriormente estabelecidos.
Usámos também o GETVAR para ler o "osmode" (configurações do snapmode) actual e memorizar as suas configurações (para mais tarde voltarmos a elas)e utilizámos também o SETVAR, que estabelece uma variável, para desligar todas as configurações snap mode ("osmode")



Sem comentários:
Enviar um comentário