quarta-feira, 3 de dezembro de 2014

Semana 12 Aula 23

Nesta aula, o professor lançou um novo desafio/exercício - o de criar uma MACROO 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)


Depois, de modo a podermos escolher o ponto inicial, fazemos a seguinte expressão usando as aprendizagens anteriores:

(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