quarta-feira, 17 de dezembro de 2014

Entrega

Entrega:

MACRO das escadas

Pormenor Construtivo em PDF
                              em DWG
                              em JPEG
                                         (base de trabalho/original em JPEG)

terça-feira, 16 de dezembro de 2014

Macro

No último exercício da disciplina de Sistemas de Representação Digital em Arquitectura fizemos uma Macro, que pretende optimizar e, por seguinte, acelerar o processo do desenho, havendo inúmeras possibilidades para o fazer.

Para isso, como já foi referido e ensinado anteriormente no presente blogue, editamos o nosso "código" no NotePad++, guardamos em ficheiro auto lisp (.lsp) e depois de fazermos o Load 
do ficheiro no AutoCAD com o APPLOAD, basta escrever o nome (ou parte) da função! 

Decidi que a minha macro iria facilitar todo o proceso de desenhar uma simples escada em Corte. Posto isto, pensei em várias formas de o fazer, isto é, quais as variáveis a ter em conta e definiu que a grande prioridade era ser simples, não dar erros e principalmente, ser versátil. Então, a macro que acabei por seguir consiste em dar, simplesmente, dois pontos (o ponto de arranque e o ponto de fecho das escadas) e o número de degraus a ter nas escadas. 

Isto permite fazer escadas em todas as escalas e com todos os cobertores e espelhos possíveis. Enfim, não tem qualquer obstrução e é muito fácil de usar! Assim, o processo de passar as ideias in mente ou mesmo do papel para o Model Space fica mais acelerado e mais simples!
Inclusive não dá erros de linhas fora do sitio como outras soluções de macros para escada poderiam dar. O que a macro não garante é a confortabilidade da escada mas que é facilmente prevista de antemão ou igualmente fácil, de se verificar após se ter usado a mesma.

Aqui está o tal "código" das ESCADAS:

(para usar, copiar para o NotePad ++; guardar em ficheiro auto lisp (.lsp); fazer o Load do ficheiro no AutoCAD com o APPLOAD, escrever "ESCADAS" na barra de comandos)


;Macro que permite desenhar EM CORTE umas escadas simples
;Macro realizada pelo aluno Luís Norton do Reis, da turma B do 2 ano
;Mestrado Integrado em Arquitetura - Faculdade de Arquitetura - FAUL
;Sistemas de Representacao Digital em Arquitetura - Professor Luis Romão

(defun c:escadas ()

;definir as variáveis e as perguntas a fazer (o utilizador escolhe)

(setq e1 (getpoint "Qual o ponto de arranque das escadas?"))
(setq e2 (getpoint "Qual o ponto final das escadas?"))
(setq e3 (getreal "Quantos degraus tem a escada?"))

;definir outras duas variáveis, o cobertor e o espelho das escadas, consequentes das escolhas do utilizador.

(setq p3 (list (car e1) (+ (cadr e1) (/ (- (cadr e2) (cadr e1)) e3))))
(setq p4 (list (+ (car e1) (/ (- (car e2) (car e1)) (- e3 1))) (cadr p3)))
(setq p5 (list (car e2) (- (cadr e2) (/ (- (cadr e2) (cadr e1)) e3))))

;definir os comandos do AutoCAD (polyline, copy e line)

(command "pline" e1 p3 p4 "")
(command "copy" e1 "" e1 "array" (fix (- e3 1)) p4 "")
(command "line" e2 p5 "")
)


Exemplos:











Pormenor Construtivo

A partir dos links abaixo pode fazer download do ficheiro PDF e DWG para conferir o exercício do Pormenor Construtivo presente nas páginas 46/47 do volume 11 de Architect's Working Details.

Pormenor Construtivo (Versão PDF) 
Pormenor Construtivo (Versão DWG)

Aspecto do Model Space



Aspecto do Paper Space (layout)




Aspecto da Impressão


Original






sexta-feira, 5 de dezembro de 2014

Semana 12 Aula 24

Nesta aula fizemos uma MACRO que permite desenhar um símbolo indicador do Norte que automatiza todo o processo:

Começamos por definir a função, as variáveis e os comandos iniciais e ficamos com esta expressão:

(defun c:norte ()

(setq c1 (getpoint "Qual o centro do símbolo?"))
(setq d1 (getpoint "Qual a direcção do Norte?"))

(command "circle" c1 (* (distance c1 d1) 0.9))
(command "circle" c1 (* (distance c1 d1) 0.7))
)

NotePad++ > Guardar em ficheiro .lsp> APPLOAD (AutoCAD) >Load do ficheiro

Verificamos se está tudo nos seus conformes e prosseguimos. O comando é o NORTE.

Mais à frente definimos mais comandos para desenhar o resto do traçado do símbolo:


(defun c:norte ()



(setq c1 (getpoint "Qual o centro do simbolo?"))
(setq c2 (getpoint "Qual a direcção do Norte?"))



(command "circle" c1 (* (distance c1 c2) 0.9))
(command "circle" c1 (* (distance c1 c2) 0.7))

(command "pline" c2 "width" (* (distance c1 c2) 0.01) (* (distance c1 c2) 0.01) 
"arc"
"ce"
c1
"angle"
"359"
"")

(command "pline" c1 
"width"
(* (distance c1 c2) 0.05)
(* (distance c1 c2) 0.05)
(polar c1 (angle c1 c2) (* (distance c1 c2) 1.1))
"")
(command "line" c2 (polar c1 (angle c2 c1) (distance c1 c2))"")
(command "rotate" "last" "" c1 "c" "90")
)

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")



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!