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:


  1. (defun c:sq1 ()
  2. (setq ponto (getpoint " Qual o ponto de insercção"))
  3. (setq ponto2 (list (+ 1 (car ponto)) (cadr ponto)))
  4. (setq ponto3 (list (car ponto2) (+ 1 (cadr ponto2))))
  5. (setq ponto4 (list (car ponto) (cadr ponto3)))

  6. (command "line" ponto ponto2 ponto3 ponto4 "c")
  7. )

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


  1. (defun c:teste ()
  2. (setq p1 (getpoint " Qual o primeiro ponto " ))
  3. (setq p2 (getpoint " Qual o segundo ponto " ))

  4. (command "line" p1 p2 "")
  5. (command "circle" ( polar p1 (angle p1 p2) (/ (distance p1 p2) 2)) (* 0.1 distance p1 p2)
  6. )

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:
  1. (defun c:teste ()
  2. (setq p1 (getpoint " Qual o primeiro ponto " ))
  3. (setq p2 (getpoint " Qual o segundo ponto " ))

  4. (command "line" p1 p2 "")
  5. ;(command "circle" ( polar p1 (angle p1 p2) (/ (distance p1 p2) 2)) (* 0.01 distance p1 p2))
  6. (command "polygon" "3" ( polar p1 (angle p1 p2) (/ (distance p1 p2 ) 2)) "I" (* 0.1 (distance p1 p2)))
  7. )



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:

  1. (defun cv2 a b c)
  2. (* (+ a (/ b c )) 0.025)
  3. )

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
Seleccionamos o outro ponto



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
Seleccionamos um ponto qualquer à esquerda

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


Enter


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