terça-feira, 2 de dezembro de 2014

Semana 11 Aula 22

No final desta semana, na aula 22, demos início à aula com uma ficheiro de desenho (AutoCAD) novo para aprendermos uma ferramenta muito útil que acelera o processo do Desenho Assistido por Computador quando, por exemplo, temos de desenhar vários elementos iguais repetidos.


Então para agrupar (fazer  block) uma série de linhas e formas basta fazer comando BLO (Block), seleccionar todos os objectos pretendidos a agrupar e ENTER. Na aula criámos três figuras geométricas aleatórias (triângulo, circulo e rectângulo, e.g.) e agrupámo-las com o comando BLOCK. 





Fazemos uma cópia (Ctrl+C ; Ctrl+V) e inserimo-la no desenho ao lado do grupo inicial, ficando agora com dois grupos. 

De seguida, e agora é que vem a parte mais útil, clicamos duas vezes num dos objectos de um dos nossos "grupos" e abre-se uma janela. Basta premir OK e entramos no Block Editor. Aqui, podemos editar o nosso "grupo" e todas as alterações que fizermos e guardarmos no Save Block, irão ser feitas para todas as cópias que fizemos ou que fizermos desse mesmo grupo dando espaço de manobra para eventuais erros e devidas correcções que queiramos fazer.


---------

Na segunda parte da Aula aprendemos melhor a mexer com funções no Auto CAD e ainda a criar e a inserir funções novas no mesmo.



Função que verifica se é Verdadeira ou Falsa a expressão inserida:

(IF (> 5 0 ) "POSITIVO" "NEGATIVO") = POSITIVO porque 5 é maior que 0

(IF (= 5 0 ) "POSITIVO" "NEGATIVO") = NEGATIVO porque 5 não é igual a 5
(exemplo que pretende mostrar que a palavra é arbitrária)
(IF (= 5 0 ) "OLA" "ADEUS") = ADEUS porque a palavra não interessa


O comando ou função para definir funções é  o DEFUN:

(DEFUN [espaço] {Nome} [espaço] {argumentos ou variáveis} [espaço] {expressão})



Para inserir determinada função, basta escrevê-la na barra de comandos ou guardar no NotePad++ em ficheiro autolisp (.lsp) para depois inserir ou fazer load (através do APPLOAD) no AutoCAD.
Na aula criámos a seguinte função:

(DEFUN MIGA (numero)(* numero 9))


"MIGA" foi o nome que demos à função, "número" é o numero que o utilizador vai inserir para, utilizando a função, multiplicar (*) o número desejado por 9 (e.g.).
Na imagem seguinte mostra como eu inseri a função e o computador reconheceu-a pelo nome (e comando) de "MIGA".


Exemplo: (MIGA 2) = 18


Criámos também outra:

(DEFUN MIGA2 (numero numero2)(+ (* numero 9) numero2))

Aqui o utilizador tem de inserir dois número para que o computador efectue duas operações, primeiro uma de multiplicar (por 9) com o 1º "número" inserido e outra de adicionar o resultado anterior a um 2º "numero2".

Exemplo: (MIGA2 2 3) = (2*9) +3 = 21



Aprendemos também os Inputs do utilizador como:

(GETPOINT "Qual o ponto?")




(GETREAL "Qual é o numero?")


Com intuito sempre de aprender mais de modo a melhorar o desempenho quer a nível de rigor, quer a nível de economias de tempo e esforço, aprendemos a fazer funções ou macros (como preferirem) que optimizam o processo do Desenho. Na próxima função vamos precisar de variáveis e para definir variáveis usámos a expressão SET1Q.

(SETQ x 9)

(DEFUN C:MIGA ()
(SETQ (GETREAL "Qual é o numero?"))
(SETQ (GETREAL "Qual é o segundo numero?")))

Como a expressão da função vai aumentando e porque normalmente surge um ou dois erros no texto, vamos passar para o NotePad onde podemos editar melhor. Escrevemos e guardamos como All types. com o nome MIGA.lsp no NotePAD ++ o seguinte :


(defun C:MIGA ()
(setq numero (getreal "Qual é o numero?"))
(setq numero2 (getreal "Qual é o segundo numero?"))
(+ (* numero 9) numero2))
)



No AutoCAD fazemos AP (AppLoad) e fazemos Load do nosso ficheiro em autolisp. Podemos verificar se a função está a funcionar e seguimos em frente.


Aprendemos também a inserir comandos que, de certa forma, optimizam e aceleram o processo do Desenho (especificando à partida as coordenadas iniciais, raios comprimentos, larguras diâmetros, coordenadas finais, etc etc):


(Command "Line" "0,0" "2,2" "")

(Command "Circle" "0,0" "1")


E juntámos as aprendizagens anteriores com a mais recente em relação aos comandos:


(defun C:MIGA ()
(setq numero(getreal "Qual é o numero?"))
(setq numero2 (getreal "Qual é o segundo numero?"))
(Command "line" "0,0" "2,2" "")
(Command "circle" "0,0" "1")
(+ (* numero 9) numero2))
)



Assim conseguimos criar uma função ou uma macro que à partida parece complicar o processo (nesta problema elementar) mas a longo prazo e com trabalhos mais pesados, repetitivos e complexos vai simplificar e acelerar todo o processo! 

Sem comentários:

Enviar um comentário