sexta-feira, 13 de dezembro de 2013
quinta-feira, 28 de novembro de 2013
Aula 21_27/11/13
Esta aula foi mais uma aula de apoio às Macros e respectivas dúvidas acerca de programação;
**Antes de qualquer explicação, uma das informações que temos de saber e reter, acerca da criação de comandos e programação, é que estes programas informáticos trabalham sobre as bases do sistema cartesiano (x,y,z), por isso todos os pontos que quisermos indicar terão de ter sempre 2 ou 3 coordenadas, para que os programas não tenham problemas consigam interpretar o que pretendemos dos mesmos.**
Expressões:
"Defun" - "Define Function", serve tal como o nome indica para definir uma função , nestes casos aparece para definir a função de um comando;
Ex:
(defun c:sq1 ()
"Getpoint" - serve para pedir ao utilizador que defina um ponto à escolha;
"Setq" - serve para reter um valor;
Ex:
(setq ponto (getpoint " Qual o ponto de insercção"))
"Command" - para chamar um comando;
Ex:
(command "line" ponto ponto2 ponto3 ponto4 "c")
Tendo em conta que temos uma lista, ou seja, um determinado número de elementos aos quais necessitamos recorrer, utilizamos :
(List a b c)
Car para seleccionar apenas o 1º elemento dessa lista, neste caso seleccionaria a letra a;
Cdr para seleccionar todos os elementos menos o 1º, neste caso seleccionaria as letras b e c;
*No site da AutoDesk, temos também disponibilizados mais comandos que poderão ser necessários.
Para primeiro exercício, criámos uma Macro que nos conseguisse criar quadrados independentemente da sua localização, mas sempre com uma unidade de lado;
Vamos então abrir um ficheiro no Notepad++, e gravar com o nome de "sq1.lsp", e introduzir:
Explicando brevemente o conteúdo desta Macro:
Na 1ª linha definimos o nome da função;
Na 2ª ao chamar o a função "getpoint", fizemos com que o utilizador, necessitasse de introduzir o ponto à sua escolha, para que o mesmo comando sirva para diversas situações;
Na 3ª atribuímos agora coordenadas ao 2º ponto, fazendo com que através do comando " (+ 1 (car ponto)) " o valor do 1º ponto diste numa recta paralela ao plano X, mais um valor que o primeiro ponto, a segunda informação de coordenadas (" (cadr ponto)))" é para determinar o valor em Y do ponto, neste caso a cota do 2º ponto será a mesma do 1º.
Na 4ª as coordenadas do 3º ponto, sendo que a 1ª, ou seja o seu afastamento será igual ao afastamento do segundo ponto, logo a indicação da coordenada será "(car ponto2)", mas a sua cota será 1 valor a mais que a cota do 2º ponto, logo a expressão será uma soma de 1 unidade (visto que o quadrado tem 1 unidade de lado) + a cota do 2º ponto = "(+ 1 (cadr ponto2)".
Na 5ª as coordenadas do 4º ponto, neste caso o seu afastamento será igual ao do 1º ponto, logo "(car ponto)" a sua cota, será igual à do 3º ponto = "(cadr ponto3)".
Na 7ª introduzimos a indicação do comando que cumprirá este "plano de execução" que acabámos de definir.
Na 8ª colocámos apenas um parênteses ")" para dar por concluída a função.
De seguida, alterámos a forma da nossa Macro e em vez de ser uma Macro de criação de quadrados de 1 unidade de lado, vamos ter uma de criação de rectângulos de 2 por 1; alterando apenas a 3ª linha para:
" 3.(setq ponto2 (list (+ 2 (car ponto)) (cadr ponto)))
De seguida, passámos à criação de uma função que unisse dois pontos à escolha formando um segmento de recta e que a meio desse segmento tivéssemos um círculo cujo raio fosse ⅟10 da distância entre o 1º ponto (início do segmento) e o 2º ponto (fim do segmento):
De seguida, passámos à criação de uma função que unisse dois pontos à escolha formando um segmento de recta e que a meio desse segmento tivéssemos um triângulo:
*Em actualização...
**Antes de qualquer explicação, uma das informações que temos de saber e reter, acerca da criação de comandos e programação, é que estes programas informáticos trabalham sobre as bases do sistema cartesiano (x,y,z), por isso todos os pontos que quisermos indicar terão de ter sempre 2 ou 3 coordenadas, para que os programas não tenham problemas consigam interpretar o que pretendemos dos mesmos.**
Expressões:
"Defun" - "Define Function", serve tal como o nome indica para definir uma função , nestes casos aparece para definir a função de um comando;
Ex:
(defun c:sq1 ()
"Getpoint" - serve para pedir ao utilizador que defina um ponto à escolha;
"Setq" - serve para reter um valor;
Ex:
(setq ponto (getpoint " Qual o ponto de insercção"))
"Command" - para chamar um comando;
Ex:
(command "line" ponto ponto2 ponto3 ponto4 "c")
Tendo em conta que temos uma lista, ou seja, um determinado número de elementos aos quais necessitamos recorrer, utilizamos :
(List a b c)
Car para seleccionar apenas o 1º elemento dessa lista, neste caso seleccionaria a letra a;
Cdr para seleccionar todos os elementos menos o 1º, neste caso seleccionaria as letras b e c;
*No site da AutoDesk, temos também disponibilizados mais comandos que poderão ser necessários.
Para primeiro exercício, criámos uma Macro que nos conseguisse criar quadrados independentemente da sua localização, mas sempre com uma unidade de lado;
Vamos então abrir um ficheiro no Notepad++, e gravar com o nome de "sq1.lsp", e introduzir:
- (defun c:sq1 ()
- (setq ponto (getpoint " Qual o ponto de insercção"))
- (setq ponto2 (list (+ 1 (car ponto)) (cadr ponto)))
- (setq ponto3 (list (car ponto2) (+ 1 (cadr ponto2))))
- (setq ponto4 (list (car ponto) (cadr ponto3)))
- (command "line" ponto ponto2 ponto3 ponto4 "c")
- )
Explicando brevemente o conteúdo desta Macro:
Na 1ª linha definimos o nome da função;
Na 2ª ao chamar o a função "getpoint", fizemos com que o utilizador, necessitasse de introduzir o ponto à sua escolha, para que o mesmo comando sirva para diversas situações;
Na 3ª atribuímos agora coordenadas ao 2º ponto, fazendo com que através do comando " (+ 1 (car ponto)) " o valor do 1º ponto diste numa recta paralela ao plano X, mais um valor que o primeiro ponto, a segunda informação de coordenadas (" (cadr ponto)))" é para determinar o valor em Y do ponto, neste caso a cota do 2º ponto será a mesma do 1º.
Na 4ª as coordenadas do 3º ponto, sendo que a 1ª, ou seja o seu afastamento será igual ao afastamento do segundo ponto, logo a indicação da coordenada será "(car ponto2)", mas a sua cota será 1 valor a mais que a cota do 2º ponto, logo a expressão será uma soma de 1 unidade (visto que o quadrado tem 1 unidade de lado) + a cota do 2º ponto = "(+ 1 (cadr ponto2)".
Na 5ª as coordenadas do 4º ponto, neste caso o seu afastamento será igual ao do 1º ponto, logo "(car ponto)" a sua cota, será igual à do 3º ponto = "(cadr ponto3)".
Na 7ª introduzimos a indicação do comando que cumprirá este "plano de execução" que acabámos de definir.
Na 8ª colocámos apenas um parênteses ")" para dar por concluída a função.
De seguida, alterámos a forma da nossa Macro e em vez de ser uma Macro de criação de quadrados de 1 unidade de lado, vamos ter uma de criação de rectângulos de 2 por 1; alterando apenas a 3ª linha para:
" 3.(setq ponto2 (list (+ 2 (car ponto)) (cadr ponto)))
De seguida, passámos à criação de uma função que unisse dois pontos à escolha formando um segmento de recta e que a meio desse segmento tivéssemos um círculo cujo raio fosse ⅟10 da distância entre o 1º ponto (início do segmento) e o 2º ponto (fim do segmento):
- (defun c:teste ()
- (setq p1 (getpoint " Qual o primeiro ponto " ))
- (setq p2 (getpoint " Qual o segundo ponto " ))
- (command "line" p1 p2 "")
- (command "circle" ( polar p1 (angle p1 p2) (/ (distance p1 p2) 2)) (* 0.1 distance p1 p2)
- )
De seguida, passámos à criação de uma função que unisse dois pontos à escolha formando um segmento de recta e que a meio desse segmento tivéssemos um triângulo:
- (defun c:teste ()
- (setq p1 (getpoint " Qual o primeiro ponto " ))
- (setq p2 (getpoint " Qual o segundo ponto " ))
- (command "line" p1 p2 "")
- ;(command "circle" ( polar p1 (angle p1 p2) (/ (distance p1 p2) 2)) (* 0.01 distance p1 p2))
- (command "polygon" "3" ( polar p1 (angle p1 p2) (/ (distance p1 p2 ) 2)) "I" (* 0.1 (distance p1 p2)))
- )
Na 6ª linha a informação aparece depois de ";", pois é apenas isso que queremos que seja, por outras palavras, quisemos guardar esta informação da Macro anterior mas não a queremos utilizar nesta, então "colocamos de parte" e torna-mo-la uma mera informação que nada vai interferir com a Macro actual.
Terminando a aula com o professor a esclarecer dúvidas particulares nas Macros Individuais dos alunos.
*Em actualização...
terça-feira, 26 de novembro de 2013
Aula 20_22/11/13
Esta aula, foi direccionada para o auxílio e esclarecimento de dúvidas dos vários alunos relativamente ás respectivas Macros.
Aula 19_ 20/11/13
Devido a dúvidas
relativas ao último exercício, o professor, através da construção de 2 cones
invertidos explicou-nos o processo de construção de uma hipérbole;
Introduzimos na
linha de comandos:
Cone
Enter
0,0
Enter
5
Enter
10
Vamos então alterar
a visualização de modo a que consigamos visualizar o cone em perspectiva;
Vpoint
Enter
1,-1,2
Enter
Vamos então alterar
o referencial:
Ucs
Enter
X
Enter
90
Enter
Com o comando
“Mirror” vamos copiar o cone e criar um cone invertido, sobre o outro;
Mi
(Mirror)
Enter
Seleccionar
o cone
Enter
Seleccionamos
o vértice (1) e um ponto qualquer à direita (2)
Enter
E vamos criar quatro
novas Layers:
· * Layer 1 – Color 1
· *Layer 2 – Color 2
· *Layer 3 – Color 3
· *Layer 4 – Color 4
E tornamos a Layer 1, Layer de trabalho;
Com o comando
“Section”, vamos como comando indica sececionar os nossos cones invertidos – e
teremos as nossas Assímptotas da Hipérbole;
Section
Enter
Seleccionamos
os dois cones
Enter
ZX
Enter
0,0
Enter
Seleccionamos a Layer 2 como Layer de trabalho;
Repetimos o processo
para um segundo seccionamento:
Section
Enter
Seleccionamos
os dois cones
Enter
ZX
Enter
0,-1,0
Enter
Seleccionamos a Layer 3 como Layer de trabalho;
Repetimos o processo
para um terceiro seccionamento:
Section
Enter
Seleccionamos
os dois cones
Enter
ZX
Enter
0,-2,0
Enter
Seleccionamos a Layer 4 como Layer de trabalho;
Repetimos o processo
para um quarto seccionamento:
Section
Enter
Seleccionamos
os dois cones
Enter
ZX
Enter
0,-3,0
Enter
Alteramos a nossa visulização através:
Vpoint
Enter
0,-1,0
Enter
Alteramos mais uma vez o referencial:
Ucs
Enter
X
Enter
90
Enter
Ucs
Enter
Z
Enter
90
Enter
Plan
Enter
Enter
Temos então as Hipérboles criadas através de
dois cones invertidos.
O resto da aula, foi a repetição do exercício
da aula anterior, que optei por completar na Aula 18, concluindo esta aula por
aqui.
Aula 18_15/11/2013
Na primeira parte da
aula o professor tirou dúvidas relativamente aos Pormenores Construtivos;
Devido a expressões do tipo 39/16'', que nos dão medidas em polegadas, criámos então um comando que nos fará a conversão deste tipo de expressões para metros, abrimos então um novo ficheiro no Notepad ++ e criamos o comando com as seguintes direcções:
Devido a expressões do tipo 39/16'', que nos dão medidas em polegadas, criámos então um comando que nos fará a conversão deste tipo de expressões para metros, abrimos então um novo ficheiro no Notepad ++ e criamos o comando com as seguintes direcções:
- (defun cv2 a b c)
- (* (+ a (/ b c )) 0.025)
- )
Guardamos
então este ficheiro em formato .lsp , com o nome de “Conversor2”, e vamos no
AutoCAD, com o comando “Appload”, fazer o upload do ficheiro .lsp para o
ficheiro do AutoCAD.
Sendo que, nesta
expressão as letras assumirão estes valores:
a=3
b=9
c=16
Posto isto inserimos na
linha de comandos:
(cv2 3 9 16)
Enter
Cujo resultado será:
0.075 metros
Este comando que acabamos de criar, pode
ser utilizado, para descobrirmos a partir da indicação da escala no desenho e
de uma medida retirada do mesmo, as medidas do objecto à escala real. Nomeadamente
em casos em que a escala indicada seja 1½’’, e a medida que retirámos do
desenho de uma determinada peça é 3 cm colocamos na linha de comandos:
(cv2 1 1 2.0)
Enter
* Inserimos 2.0, para que a função nos dê um número real)
Cujo resultado será 0.0375, o qual nós
arredondamos por excesso para 0.038.
E novamente na linha de comandos
escrevemos:
(/ 0.038 0.305)
Enter
* Inserimos 0.305, pois 1’ corresponde a 0,305 metros, aproximadamente.
Cujo resultado será 0.12459, a partir
deste resultado podemos calcular aproximadamente a escala a que está representado
o pormenor, neste caso a escala mais próxima deste valor é 1:10; logo assumimos
que o desenho está à escala 1:10.
Escrevemos então na linha de comandos:
(/ 0.03 0.0125)
Enter
Cujo resultado será: 0.24 m
Ou seja a peça medida, terá à escala real
24 cm.
Após o esclarecimento de
dúvidas relativas aos pormenores e as sua escalas, iniciámos um novo exercício
no AutoCAD – Construção de um Cubo Hiperbólico, inserimos então na linha de
comandos:
Box
Enter
0,0
Enter
100,100,100
Enter
Z (Zoom)
Enter
E (Extents)
Enter
Para termos uma
melhor visualização do objecto inserimos:
Vpoint
Enter
1,-1,2
Enter
Colocamos ainda para
uma diferente visualização:
Shademode
Enter
SK
(SKetchy)
Enter
Para voltarmos à visualização anterior,
podemos voltar a inserir na linha de comandos:
Shademode
Enter
2d
(2dwireframe)
Enter
Vamos então criar um
nova Layer, “Rectângulo” com a color
1, e torná-la Layer de trabalho.
Na opção “OSNAP”,
vamos deixar seleccionados os seguintes itens:
Vamos então criar o
nosso rectângulo a partir das diagonais espaciais do cubo anteriormente criado;
L
(Line)
Enter
Seleccionamos
o ponto 1
Seleccionamos
o ponto 2
Seleccionamos
o ponto 3
Seleccionamos
o ponto 4
Seleccionamos
o ponto 5
Enter
Vamos então agora
unir os pontos médios das diagonais espaciais do cubo;
L (Line)
Enter
Seleccionamos
o ponto 6
Seleccionamos
o ponto 7
Enter
L
(Line)
Enter
Seleccionamos
o ponto 8
Seleccionamos
o ponto 9
Enter
Uma vez tendo o rectângulo desenhado, vamos
alterar o referencial do nosso sistema de representação através do comando
“UCS”;
Ucs
Enter
3p
Seleccionamos
o ponto 1
Seleccionamos
o ponto 2
Seleccionamos
o ponto 3
Congelamos a Layer do cubo – “0”;
Plan
Enter
Enter
Para
facilitar vamos considerar que os diversos segmentos de recta, correspondem:
Ev – Eixo Vertical
Et – Eixo Transversal
A1 e A2 – Assímptotas
Ch – Centro da Hipérbole
Vamos
então fazer “Offset” do nosso “EV” para a esquerda;
O
(Offset)
Enter
15
Seleccionamos
o EV
Seleccionamos
um ponto qualquer à esquerda
Enter
Vamos evidenciar o
ponto de intersecção do segmento imediatamente criado com o nosso Eixo Transversal;
Point
Enter
Seleccionar
a o ponto da intersecção
Para que seja
visível, inserimos;
Pdmode
Enter
35
Enter
Apagamos então o segmento que deu origem ao
ponto;
Criamos uma nova Layer, “Pontos da Hipérbole” com a color 2 e tornamo-la Layer de trabalho.
*De modo a facilitar a visualização, alterei
a cor da Layer para a color 5.
Vamos agora criar
uma circunferência com centro no “CH” cujo raio será a distância do mesmo até
ao ponto criado (através da intersecção).
C
(Circle)
Enter
Seleccionamos
o CH
Vamos agora copiar o Eixo Vertical, para a
interseção da circunferência com a Assímptota 1;
Cp
(Copy)
Enter
Seleccionamos
o EV
Seleccionamos
o ponto de Intersecção do EV com a circunferência
Seleccionamos
o ponto de intersecção da circunferência com a A1
Esc
Vamos então
evidenciar os pontos das intersecções:
Point
Enter
Seleccionamos os ponto da intersecção do
segmento copiado com o ET
Apagamos as
entidades auxiliares, a circunferência e o segmento de recta;
Com o comando
“Mirror”, vamos espelhar os pontos para o lado direito utilizando como
charneira dois pontos do Eixo Vertical;
Mi
(Mirror)
Enter
Seleccionamos
os pontos
Enter
Seleccionamos
dois pontos do eixo vertical
Enter
Vamos copiar através
do comando “Offset” o EV 3 vezes para a esquerda com uma distância de 20
unidades entre si;
O
(Offset)
Enter
20
Seleccionamos
o EV
Seleccionamos
um ponto qualquer à esquerda
Seleccionamos
a linha 1
Seleccionamos
um ponto qualquer à esquerda
Seleccionamos
a linha 2
Com o comando “Extend” vamos prolongar o Eixo Transversal até ao
segmento 3.
Extend
Enter
Seleccionamos
o segmento 3
Enter
Seleccionamos
o eixo transversal
Enter
Vamos evidenciar os
pontos das intersecções como já fizemos anteriormente, com o comando “Point”;
Vamos agora
encontrar os pontos da nossa curva da hipérbole, e para isso iremos criar círculos,
para facilitar a explicação da criação dos mesmos, vou utilizar nomes para os
pontos como mostra a imagem seguinte:
Portanto:
1º Círculo é feito,
com centro no ponto A e raio até B
C
(Circle)
Enter
Seleccionamos
o ponto A
Seleccionamos
o ponto B
2º Círculo é feito,
com centro no ponto F e raio igual ao primeiro círculo:
C
(Circle)
Enter
Seleccionamos
o ponto F
Enter
*Apagamos
o 1º Círculo
3º Círculo é feito, com centro no ponto A’ e
raio até B
C
(Circle)
Enter
Seleccionamos
o ponto A’
Seleccionamos
o ponto B
4º Círculo é feito,
com centro no ponto F’ e raio igual ao terceiro círculo
C
(Circle)
Enter
Seleccionamos
o ponto F’
Enter
Enter
*Apagamos
o 3º Círculo
Temos então os dois primeiros pontos da nossa
Hipérbole, definidos pela intersecção das duas circunferências criadas,
evidenciamo-los com o comando "Point", e apagamos os círculos auxiliares;
Para os outros 6
pontos restantes, repetimos o processo feito anteriormente:
5º Círculo é feito,
com centro no ponto A e raio até C
C
(Circle)
Enter
Seleccionamos
o ponto A
Seleccionamos o ponto C
6º Círculo é feito,
com centro no ponto F e raio igual ao quinto círculo
C
(Circle)
Enter
Seleccionamos
o ponto F
Enter
Enter
*Apagamos
o 5º Círculo
7º Círculo é feito, com centro no ponto A’ e
raio até C
C
(Circle)
Enter
Seleccionamos
o ponto A’
Seleccionamos
o ponto C
8º Círculo é feito,
com centro no ponto F’ e raio igual ao sétimo círculo
C
(Circle)
Enter
Seleccionamos
o ponto F’
Enter
Enter
*Apagamos
o 7º Círculo
Point
Enter
9º Círculo é feito,
com centro no ponto A e raio até D
C
(Circle)
Enter
Seleccionamos
o ponto A
Seleccionamos
o ponto D
10º Círculo é feito,
com centro no ponto F e raio igual ao 9º círculo
C
(Circle)
Enter
Seleccionamos
o ponto F
Enter
*Apagamos
o 9º Círculo
11º Círculo é feito, com centro no ponto A’ e
raio até D
C
(Circle)
Enter
Seleccionamos
o ponto A’
Seleccionamos
o ponto D
12º Círculo é feito,
com centro no ponto F’ e raio igual ao 11º círculo
C
(Circle)
Enter
Seleccionamos
o ponto F’
Enter
Enter
*Apagamos
o 11º Círculo
Point
Enter
Temos então todos os
pontos da nossa Hipérbole;
Vamos criar uma nova
Layer – “Curva da Hipérbole”, color
4, e tornamo-la Layer de trabalho.
Com o comando
“Spline” vamos unir todos os pontos da seguinte ordem:
Spline
Enter
F
(Fit)
Enter
Seleccionamos
o ponto 1
Seleccionamos
o ponto 2
Seleccionamos
o ponto 3
Seleccionamos
o ponto 4
Seleccionamos
o ponto 5
Seleccionamos
o ponto 6
Seleccionamos
o ponto 7
Para prolongarmos a curva da Hipérbole até à
extremidade do rectângulo em que está circunscrita;
F
(Fillet)
Enter
R
(Radius)
Enter
0
Enter
Seleccionamos
as duas linhas
Enter
Criamos uma nova Layer – “Perfil”, com a color 6, e tornamo-la Layer de trabalho;
Vamos então com o comando “Boundary” criar
uma entidade singular, que será a origem da nossa hipérbole;
Boundary
Enter
Alterar
a opção “Polyline” para “Region”
Seleccionar
a opção “Pick Points”
Seleccionar
um ponto no interior da metade superior da curva da hipérbole
Enter
Vamos congelar as outras Layers e deixar apenas a “0” e a “Perfil”;
Vamos então alterar o referencial:
UCS
Enter
W
Enter
E vamos então alterar a visualização do
objecto:
Vpoint
Enter
1,-1,2
Enter
Vamos utilizar o comando “Revolve”;
Revolve
Enter
Seleccionamos
o perfil
Enter
Seleccionamos
os pontos 1 e 2, respectivamente
360
Enter
Com o comando “Mirror”, vamos copiar esta
entidade para outra face do cubo;
Mi
(Mirror)
Enter
Seleccionamos
o Objecto
Enter
Seleccionamos
os pontos 1 e 2
Enter
Vamos reproduzir para as outras faces,
seguindo a mesma lógica;
Mi
(Mirror)
Enter
Seleccionamos
o Objecto
Enter
Seleccionamos
os pontos da diagonal contrária à anteriormente seleccionada
Enter
Alteramos novamente o referencial para
facilitar a reprodução dos objectos nas outras faces do cubo;
UCS
Enter
X
Enter
90
Enter
Mi
(Mirror)
Enter
Seleccionamos
o Objecto
Enter
Seleccionamos
os pontos da diagonal lateral (3 e 4)
Enter
E vamos fazendo constantes reproduções seleccionando as várias diagonais
do cubo, fazendo recurso aos referenciais escolhidos;
Com o comando “Union”, vamos unir todas as
entidades, retirando o cubo;
Union
Enter
All
Enter
R (Remove)
Enter
Seleccionar
o Cubo
Enter
Enter
Subtract
Enter
Seleccionar o Cubo
Seleccionar os Pratos
Enter
3Dorbit
Enter
Subscrever:
Mensagens (Atom)