50
Concepção e Fabrico Assistidos por Computador Desenho automático de uma união elástica através do AUTO LISP Docentes: Eng. João Manuel Ribeiro Silva Tavares Eng. Joaquim de Oliveira Fonseca Realizado por: Nuno Filipe Ribeiro Cardoso Sérgio Manuel Oliveira Tavares Ano lectivo: 2002/03

Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Concepção e Fabrico Assistidos

por Computador

Desenho automático de uma união elástica através do AUTO LISP

Docentes: Eng. João Manuel Ribeiro Silva Tavares Eng. Joaquim de Oliveira Fonseca Realizado por: Nuno Filipe Ribeiro Cardoso Sérgio Manuel Oliveira Tavares Ano lectivo: 2002/03

Page 2: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:2/50

Índice Sumário e objectivos ................................................................... 3 Programa..................................................................................4

Ficheiro de dados ...................................................................... 4 Programa principal (uniao) ........................................................... 4 Função leitura (leitura) ............................................................... 5 Funções de desenho: .................................................................. 7

⇒ Vista de Frente (vistafrente) ................................................. 7 ⇒ Vista em corte (vistac) ....................................................... 15 ⇒ Vista tridimensional (vista3d) ............................................... 23

Função rotação do desenho da vista (rot)......................................... 40 Funções caixas de diálogo ........................................................... 40

⇒ Diálogo inicial (dialogo) ...................................................... 40 ⇒ Função de recuperação dos valores da caixa de diálogo (dget) ........ 41 ⇒ Função para colocação dos valores por defeito (dialogo_defaults).... 42 ⇒ Ficheiro DCL, utilizado pela função dialogo .............................. 43 ⇒ Diálogo final (dialogo2) ...................................................... 46 ⇒ Ficheiro DCL, utilizado pela função dialogo2 ............................. 46 ⇒ Diálogo da vista tridimensional ............................................. 47 ⇒ Ficheiro DCL, utilizado pela função dialogo3 ............................. 47

Bibliografia ..............................................................................48 Anexos....................................................................................49

⇒ Desenho retirado do catálogo: .............................................. 49 ⇒ Tabela retirado do catálogo................................................. 49 ⇒ Aplicações da união elástica ................................................ 50

Page 3: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:3/50

Sumário e objectivos

A realização deste trabalho no âmbito da cadeira de Concepção e Fabrico Assistidos por Computador, teve como objectivo, o desenho em AutoCad, e através de programação em AutoLisp, de uma união elástica. Este desenho após executado o programa em Autolisp, é realizado de forma automática, tendo a possibilidade de desenhar três vistas (uma vista de frente, uma vista em corte, e uma vista tridimensional). Foram também realizadas caixas de diálogo, em que o utilizador tem a possibilidade de escolher os parâmetros para o desenho da união elástica, através de janelas.

Page 4: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:4/50

Programa O código fonte deste programa está subdividido em 10 funções e o programa principal. São distribuídos da seguinte forma: Ø Programa principal : “união”. Ø Função leitura: “leitura”. Ø Funções de desenho: “vistafrente” ,“vista3d” ; “vistac”. Ø Função rotação do desenho da vista: “rot”. Ø Funções caixas de diálogo: “dialogo”; “dget”; “dialogo_defaults”;

“dialogo2”; “dialogo3”. O desenho da caixa de diálogo foi realizado com a linguagem DCL (Dialog

Control Language), havendo três ficheiros dcl, correspondentes a cada diálogo, mas o programa funcionará sem estas caixas de diálogo, caso os ficheiros dcl necessários, não sejam encontrados. Os ficheiros dcl são: dialogo.dcl; dialogo2.dcl; dialogo3.dcl.

O ficheiro dat.dat tem as dimensões fornecidas pelo catálogo, para o desenho desta união elástica, e as dimensões normalizadas de cada parafuso correspondentes a cada dimensão.

Ficheiro de dados O ficheiro de dados, foi realizado num editor de texto, com uma formatação ANSI, com a seguinte estrutura: cada linha representa os dados referentes a cada medida da união elástica.

Programa principal (uniao) (defun c:uniao() (setq oblip (getvar "blipmode") ;guarda modo de colocação de cruzes nos pontos oecho (getvar "cmdecho") ;guarda o modo de projecção dos comandos olayer (getvar "clayer") ;guarda o layer corrente oosnap (getvar "osmode") ;guarda o modo osnap actual ) (setvar "blipmode" 0) ;desliga a colocação de cruzes nos pontos (setvar "cmdecho" 0) ;desliga a projecção dos comandos (setvar "osmode" 0) ;desliga qualquer modo osnap (setq continuar 1) (while (= continuar 1) ;ciclo do programa

Page 5: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:5/50

(dialogo) ;chama a funcao dialogo (if (= dial 0) ;caso o ficheiro dialogo.dcl não seja encontrado (progn (initget 1 "1 2 3") (setq opcao (getkword "\nVista de Frente(1), Vista em corte(2),Modelação 3D(3):")) (setq opcao (atoi opcao)) (initget 1) (setq pt0 (getpoint "\nInsira o ponto inicial!")) (if (/= opcao 3) (progn (initget 1) (setq alfa (getangle pt0 "\nDefina a direcção do eixo!"))) ))) (leitura) ;chama a função leitura (cond ((= opcao 1) (vistafrente)) ;caso seja escolhida a vista de frente ((= opcao 2) (vistac)) ;caso seja escolhida a vista em corte ((= opcao 3) (vista3d)) ;caso seja escolhida a vista tridimensional ) (dialogo2) ;chama a função dialogo 2 (if (= dial2 0) ;caso o ficheiro dialogo.dcl não seja encontrado (progn (initget "S s N n")(prompt"\nDesenhar mais alguma vista ou modelação 3D?(s/n)") (setq continuar (getkword)) (if (or (= continuar "s") (= continuar "S")) (setq continuar 1) (setq continuar 0)) ))) (command "layer" "m" olay "") ;cola (setvar "osmode" oosnap) (setvar "blipmode" oblip) (setvar "cmdecho" oecho) )

Função leitura (leitura) ;função para leitura da tabela de dados (defun leitura() (setq linha nil listd nil i -1 ) (while (= linha nil) ;while para leitura da tabela (setq f (open "dat.dat" "r") ;nome e localização do ficheiro

Page 6: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:6/50

dif 0. ierro 0 ) (if (= f nil) ;ficheiro não encontrado (progn (alert "Ficheiro dat.dat não encontrado!") (exit) ) (progn ;vai fazer a leitura do ficheiro (if (= dial 0) (progn (initget (+ 1 2 4)) ;não permite que d seja vazio, nulo ou negativo (setq d (getreal "\nQual o diametro interior da união elática?:")) )) (while (and (/= d dif) (= ierro 0)) (setq linha (read-line f)) (if (and (/= linha nil) (= ierro 0)) ; então (setq dif (atof (substr linha 1 4)) ; guarda diâmetro lido listd (append listd (list dif)) i (+ i 1); guarda diâmetro lido ) (setq dif d ;senão ierro 2 ;diametro não encontrado ) ) ) (close f) (if (= ierro 2) (progn ;então (setq j 0) (prompt "\nDiametro ERRADO. No ficheiro existem:") (while (<= j i) ;escreve os diametros lidos do ficheiro (princ (nth j listd)) (princ ",") (setq j (+ j 1)) ) (setq listd nil i -1 dif 0.0 ) ) ) ; fim do if erro 2 ) ; fim do progn de processamento ) ; fim do if f = nil ) ; fim do while para leitura

Page 7: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:7/50

(if (= ierro 0) (progn ;então1 ;define os restantes parametros (setq dh (atof (substr linha 4 6))) ;Diametro total (setq dhh (atof (substr linha 8 11))) ;Diametro da concavidade da roda dentada (setq LL (atof (substr linha 13 15))) ;Comprimento total da união (setq L (atof (substr linha 17 20))) ;Comprimento da parte de união (setq E (atof (substr linha 22 23))) ;Distância entre as duas partes de união (setq b (atof (substr linha 25 26))) ;Espessura da roda dentada (setq s (atof (substr linha 28 30))) ;Distância entre a roda dentada e cada uma das partes (setq a (atof (substr linha 32 34))) ;Espessura da parte interior da roda dentada (setq m (atof (substr linha 36 37))) ;Diametro do parafuso (setq ddi (atof (substr linha 39 44)));Diametro da rosca interior (setq LP (atof (substr linha 46 47))) ;Comprimento do parafuso (setq di (atof (substr linha 49 51))) ;Diametro do furo passante (setq DD (atof (substr linha 53 55))) ;Diametro da caixa do parafuso (setq dk (atof (substr linha 57 59))) ;Diametro da cabeça do parafuso (setq p (atof (substr linha 61 64))) ;Passo da rosca do parafuso (setq tt (atof (substr linha 66 68))) ;Profundida do oco hexagonal (setq ss (atof (substr linha 70 72))) ;Distância entre faces do hexagono ) (alert "nO diâmetro introduzido não existe no ficheiro!") ) )

Funções de desenho:

⇒ Vista de Frente (vistafrente) ;função para o desenho da vista de frente (defun vistafrente () ;CALCULO DOS PONTOS ;Variaveis: dh-diamtro exterior, dhh-diamtro dh, L -l1, m - diamentro dos parafusos, LL - Diametro total ;E -E (roda dentada) s-s (espaço livre) b -b espessura da roda dentada (setq l1 (* L (/ 33 61.0))) (setq pi2 (/ pi 2)) (setq pta1 (polar pt0 pi2 (* dh 0.4823))) (setq pta2 (polar pt0 0 (* l1 (/ 2.0 33.0)))) (setq pta3 (polar pta2 pi2 (/ dh 2.0))) (setq pta4 (polar pta3 0 (- l1 (* 2 (* l1 (/ 2.0 33.0))))))

Page 8: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:8/50

(setq pta5 (polar pta1 0 l1)) (setq pta6 (polar pt0 0 (- l1 (* l1 (/ 2.0 33.0))))) (setq pta7 (polar pt0 0 l1)) (setq pta8 (polar pt0 (- 0 pi2) (/ d 2.0))) (setq pta9 (polar pta2 (- 0 pi2) (/ d 2.0))) (setq pta10 (polar pta7 (- 0 pi2) (+ (* l1 (/ (sin (/ (* 5 pi) 180))) (cos (/ (* 5 pi) 180))) (* d (/ 24 42.0))))) (setq pta11 (polar pt0 (- 0 pi2) (* d (/ 24 42.0)))) (setq pta12 (polar pt0 (- 0 pi2) (* dh (/ 42.0 113.0)))) (setq pta13 (polar pta12 (- 0 pi) (* LL (/ 5 160.0)))) (setq pta14 (polar pt0 (- 0 pi2) (* dh 0.4823))) (setq pta15 (polar pta2 (- 0 pi2) (/ dh 2.0))) (setq pta16 (polar pta15 0 (- l1 (* 2 (- (/ dh 2.0) (* dh 0.4823)))))) (setq pta17 (polar pta14 0 l1)) (setq pta18 (polar pta12 pi2 (/ m 2.0))) (setq pta19 (polar pta18 0 l1)) (setq pta20 (polar pta12 (- 0 pi2) (/ m 2.0))) (setq pta21 (polar pta20 0 l1)) (setq pta22 (polar pta18 (- 0 pi2) (- (/ m 2.0) (/ ddi 2.0)))) (setq pta23 (polar pta20 pi2 (- (/ m 2.0) (/ ddi 2.0)))) (setq pta24 (polar pt0 pi2 (* dh (/ 42.0 113.0)))) (setq pta30 (polar pta24 (- 0 pi) (* LL (/ 5 160.0)))) (setq ptb1 (polar pta7 0 (* l1 (/ 2 33.0)))) (setq ptb2 (polar pta7 pi2 (+ (* l1 (/ (sin (/ (* 5 pi) 180))) (cos (/ (* 5 pi) 180))) (* d (/ 24 42.0))))) (setq ptb3 (polar ptb1 pi2 (+ (* (+ l1 (* l1 (/ 2 33.0))) (/ (sin (/ (* 5 pi) 180))) (cos (/ (* 5 pi) 180))) (* d (/ 24 42.0))))) (setq ptb4a (polar ptb1 0 (* l1 (/ 2 33.0)))) (setq ptb4 (polar ptb4a pi2 (+ (* (+ l1 (* l1 (/ 2 33.0))) (/ (sin (/ (* 5 pi) 180))) (cos (/ (* 5 pi) 180))) (* d (/ 23 42.0))))) (setq ptb5 (polar ptb1 0 (* l1 (/ 4 33.0)))) (setq pta31 (polar ptb5 pi2 (* dh (/ 42.0 113.0)))) (setq pta25 (polar pta31 0 (* L (/ 5 61.0)))) (setq pta32 (polar pta31 (- 0 pi2) (/ m 2.0))) (setq pta33 (polar pta31 (- 0 pi2) (/ ddi 2.0))) (setq pta34 (polar pta31 pi2 (/ ddi 2.0))) (setq pta35 (polar pta31 pi2 (/ m 2.0))) (setq pta26 (polar pta35 (- 0 pi) (* L (/ 6 61.0)))) (setq pta27 (polar pta32 (- 0 pi) (* L (/ 6 61.0)))) (setq pta28 (polar pta34 (- 0 pi) (* L (/ 6 61.0)))) (setq pta29 (polar pta33 (- 0 pi) (* L (/ 6 61.0)))) (setq ptb6 (polar ptb5 pi2 (+ (* (+ l1 (* l1 (/ 2 33.0))) (/ (sin (/ (* 5 pi) 180))) (cos (/ (* 5 pi) 180))) (* d (/ 24 42.0))))) (setq ptb7 (polar ptb5 pi2 (/ dh 2.0))) (setq ptb8 (polar ptb5 0 (* l1 (/ 6 33.0)))) (setq ptb9 (polar ptb8 pi2 (- (/ dh 2.0) (* dh (/ 1 113.0)))))

Page 9: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:9/50

(setq ptb10 (polar ptb8 pi2 (/ dh 2.0))) (setq ptb11 (polar ptb5 0 (* l1 (/ 14 33.0)))) (setq ptb12 (polar ptb11 pi2 (- (/ dh 2.0) (* dh (/ 1 113.0))))) (setq ptb13 (polar ptb11 pi2 (/ dh 2.0))) (setq ptc1 (polar pt0 0 (+ L s))) (setq ptb14 (polar pt0 0 L)) (setq ptb13a (polar ptb14 pi2 (/ dh 2.0))) (setq ptb15a (polar ptb14 pi2 (* (/ dh 2.0) (sin 0.10472)))) (setq ptb15 (polar ptb15a (- 0 pi2) (* dh (/ 3.0 135.0)))) (setq ptb16 (polar ptb15a 0 (* dh (/ 3 135.0)))) (setq ptc21 (polar ptc1 0 b)) (setq ptb17 (polar ptc21 pi2 (* (/ dh 2.0) (sin 0.10472)))) (setq ptb18 (polar ptc21 pi2 (* (/ dh 2.0) (sin 0.68069)))) (setq ptb20a (polar ptb14 pi2 (* (/ dh 2.0) (sin 0.68069)))) (setq ptb19 (polar ptb20a 0 (* dh (/ 3 135.0)))) (setq ptb20 (polar ptb20a pi2 (* dh (/ 3.0 135.0)))) (setq ptb21 (polar pt0 0 (* L (/ 43 61.0)))) (setq ptb22 (polar pta8 0 (* L (/ 43 61.0)))) (setq ptb23 (polar ptb21 (- 0 pi2) (* d (/ 22 42.0)))) (setq ptb24 (polar ptb14 (- 0 pi2) (* d (/ 22 42.0)))) (setq ptb25 (polar ptb14 (- 0 pi2) (/ dh 2.0))) (setq ptb26 (polar ptb11 (- 0 pi2) (/ dh 2.0))) (setq ptb27 (polar ptb11 (- 0 pi2) (- (/ dh 2.0) (* dh (/ 1 113.0))))) (setq ptb28 (polar ptb8 (- 0 pi2) (- (/ dh 2.0) (* dh (/ 1 113.0))))) (setq ptb29 (polar ptb8 (- 0 pi2) (/ dh 2.0))) (setq ptb30 (polar ptb5 (- 0 pi2) (/ dh 2.0))) (setq ptb31 (polar ptb5 (- 0 pi2) (+ (* (+ l1 (* l1 (/ 2 33.0))) (/ (sin (/ (* 5 pi) 180))) (cos (/ (* 5 pi) 180))) (* d (/ 24 42.0)))) ptb32 (polar ptb4a (- 0 pi2) (+ (* (+ l1 (* l1 (/ 2 33.0))) (/ (sin (/ (* 5 pi) 180))) (cos (/ (* 5 pi) 180))) (* d (/ 23 42.0)))) ptb33 (polar ptb1 (- 0 pi2) (+ (* (+ l1 (* l1 (/ 2 33.0))) (/ (sin (/ (* 5 pi) 180))) (cos (/ (* 5 pi) 180))) (* d (/ 24 42.0)))) ptb34 (polar ptb14 (- 0 pi2) (* dh (/ 47.5 113))) ptb35 (polar ptb14 (- 0 pi2) (* dh (/ 25.5 113))) ptb36 (polar pta19 0 (* l1 (/ 6 33.0))) ptb37 (polar pta21 0 (* l1 (/ 6 33.0))) ptb38 (polar pta12 0 L) ptb39 (polar ptb38 0 (* L (/ 3 61.0))) ptb40 (polar ptb38 pi2 (/ DD 2.0)) ptb41 (polar ptb38 (- 0 pi2) (/ DD 2.0)) ptb42 (polar ptb40 (- 0 pi) (* 1.1 m)) ptb43 (polar ptb41 (- 0 pi) (* 1.1 m)) ptb44 (polar ptb42 (- 0 pi2) (- (/ DD 2.0) (/ di 2.0))) ptb45 (polar ptb43 pi2 (- (/ DD 2.0) (/ di 2.0))) ptb46 (polar ptb36 pi2 (- (/ di 2.0) (/ m 2.0))) ptb47 (polar ptb37 (- 0 pi2) (- (/ di 2.0) (/ m 2.0)))

Page 10: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:10/50

ptc2 (polar ptc1 pi2 (* (/ dh 2.0) (sin 0.07854))) ptc3 (polar ptc1 pi2 (* (/ dh 2.0) (/ (sin 0.10472) (cos 0.10472)))) ptc2a (polar ptc3 0 (* b (/ 3.0 29))) ptc4 (polar ptc1 pi2 (* (/ dh 2.0) (sin 0.68069))) ptc5 (polar ptc1 pi2 (* (/ dh 2.0) (sin 0.70686))) ptc6 (polar ptc1 pi2 (* (/ dh 2.0) (sin 0.86394))) ptc7 (polar ptc1 pi2 (* (/ dh 2.0) (sin 0.89012))) ptc8 (polar ptc1 pi2 (* (/ dh 2.0) (sin 1.46608))) ptc9 (polar ptc1 pi2 (/ dh 2.0)) ptc19 (polar ptc21 pi2 (* (/ dh 2.0) (/ (sin 0.07854) (cos 0.07854)))) ptc16 (polar ptc21 pi2 (* (/ dh 2.0) (sin 0.70686))) ptc15 (polar ptc21 pi2 (* (/ dh 2.0) (sin 0.86394))) ptc14 (polar ptc21 pi2 (* (/ dh 2.0) (sin 0.89012))) ptc11 (polar ptc21 pi2 (* (/ dh 2.0) (sin 1.46608))) ptc10 (polar ptc21 pi2 (/ dh 2.0)) ptc12 (polar ptc7 0 (* b (/ 3.0 29))) ptc13 (polar ptc14 (- 0 pi) (* b (/ 3.0 29))) ptc17 (polar ptc4 0 (* b (/ 3.0 29))) ptc18 (polar ptb18 (- 0 pi) (* b (/ 3.0 29))) ptc20 (polar ptb17 (- 0 pi) (* b (/ 3.0 29))) ptc22 (polar ptc1 0 (* b (/ 4.0 29))) ptc23 (polar pt0 0 (- (/ LL 2.0) (/ a 2.0))) ptc24 (polar pt0 0 (/ LL 2.0)) ptc25 (polar ptc23 0 a) ptc26 (polar ptc1 0 (* b (/ 25.0 29))) ptc27 (polar ptc21 (- 0 pi2) (/ dh 2.0)) ptc28 (polar ptc1 (- 0 pi2) (/ dh 2.0)) ptc29 (polar ptc1 (- 0 pi2) (* dh (/ 47.5 113))) ptc30 (polar ptc1 (- 0 pi2) (/ dhh 1.9)) ptc31 (polar ptc22 (- 0 pi2) (/ dhh 2.0)) ptc32 (polar ptc31 0 (* b (/ 3.5 26))) ptc33 (polar ptc23 (- 0 pi2) (- (/ dhh 2.0) (* b (/ 3.66 26.0)))) ptc34 (polar ptc1 (- 0 pi2) (* dh (/ 25.5 113))) ptc35 (polar ptc25 (- 0 pi2) (- (/ dhh 2.0) (* b (/ 3.66 26.0)))) ptc37 (polar ptc26 (- 0 pi2) (/ dhh 2.0)) ptc36 (polar ptc37 (- 0 pi) (* b (/ 3.5 26))) ptc38 (polar ptc21 (- 0 pi2) (/ dhh 1.9)) ptc39 (polar ptc21 pi2 (* dh (/ 17.5 113))) ptc40 (polar ptc21 pi2 (* dh (/ 6.5 113))) ptc41 (polar ptc21 (- 0 pi2) (* dh (/ 6.5 113))) ptc42 (polar ptc21 (- 0 pi2) (* dh (/ 17.5 113))) ptc43 (polar ptc21 (- 0 pi2) (* dh (/ 53.5 113))) ptc44 (polar ptc24 pi2 (/ dh 2.0)) ptd1 (polar pt0 0 (+ L E)) ptd2 (polar ptc40 0 s) ptd3 (polar ptc39 0 s)

Page 11: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:11/50

ptd4a (polar ptd1 pi2 (* (/ dh 2.0) (sin 0.89012))) ptd4 (polar ptd4a (- 0 pi2) (* dh (/ 3 135.0))) ptd5 (polar ptd4a (- 0 pi) (* dh (/ 3 135.0))) ptd6 (polar ptc11 0 (* s (/ 1.0 4.0))) ptd7 (polar ptc10 0 s) ptd8 (polar ptd7 0 (* L (/ 8 61.0))) ptd9 (polar ptc41 0 s) ptd10 (polar ptc42 0 s) ptd11 (polar ptc43 0 s) ptf1 (polar ptb43 pi2 (- (/ DD 2.0) (/ dk 2.0))) ptf2 (polar ptb42 (- 0 pi2) (- (/ DD 2.0) (/ dk 2.0))) ptf3 (polar ptf1 0 (- m (* m 0.1))) ptf17 (polar ptb38 (- 0 pi) (* 0.1 m)) ptf4 (polar ptf17 (- 0 pi2) (- (/ dk 2.0) (* 0.1 m))) ptf6 (polar ptf2 0 (- m (* m 0.1))) ptf5 (polar ptf17 pi2 (- (/ dk 2.0) (* 0.1 m))) ptf7 (polar ptf17 pi2 (/ (* 1.14 ss) 2.0)) ptf8 (polar ptf17 pi2 (/ (* 1.14 ss) 4.0)) ptf9 (polar ptf17 (- 0 pi2) (/ (* 1.14 ss) 4.0)) ptf10 (polar ptf17 (- 0 pi2) (/ (* 1.14 ss) 2.0)) ptf11 (polar ptf10 (- 0 pi) tt) ptf12 (polar ptf9 (- 0 pi) tt) ptf13 (polar ptf8 (- 0 pi) tt) ptf14 (polar ptf7 (- 0 pi) tt) ptf15 (polar ptf2 (- 0 pi2) (- (/ dk 2.0) (/ m 2.0))) ptf16 (polar ptf1 pi2 (- (/ dk 2.0) (/ m 2.0))) ptf18 (polar ptf15 (- 0 pi) (* p 1.3)) ptf19 (polar ptf16 (- 0 pi) (* p 1.3)) ptf20 (polar ptf18 (- 0 pi2) (- (/ m 2.0) (/ ddi 2.0))) ptf21 (polar ptf19 pi2 (- (/ m 2.0) (/ ddi 2.0))) ptf22 (polar ptf15 (- 0 pi) (- LP p)) ptf23 (polar ptf16 (- 0 pi) (- LP p)) ptf24 (polar ptf20 (- 0 pi) (- LP (* p 1.3))) ptf25 (polar ptf21 (- 0 pi) (- LP (* p 1.3))) pt1 (polar pt0 (- 0 pi) (* LL (/ 5 160.0))) pt2 (polar pt0 0 (+ LL (* LL (/ 5 160.0)))) pt3 (polar ptb13 0 (* L1 (/ 4 33.0))) pt4 (polar ptb39 pi2 (* dh (/ 42.0 113.0))) pt5 (polar pt4 (- 0 pi2) (/ 113 2.0)))

;***************DESENHO************* ;Desenho da parte inferior esquerda e gerar o respectivo espelho (command "layer" "m" "tg" "") ; Definição da layer para traço grosso (command "line" (rot pt0) (rot pta1) "") (setq mirror1 (entlast)) ;Guarda a ultima entidade desenhada (command "line" (rot pta1) (rot pta3) (rot pta4) (rot pta5) (rot pta7) "" "line" (rot pta3) (rot pta2) ""

Page 12: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:12/50

"line" (rot pta4) (rot pta6) "" "line" (rot ptb2) (rot ptb3) "" "arc" (rot ptb3) (rot ptb4) (rot ptb6) "line" (rot ptb5) (rot ptb7) (rot ptb10) (rot ptb8) "" "line" (rot ptb9) (rot ptb12) "" "line" (rot ptb13) (rot ptb11) "" "line" (rot ptb3) (rot ptb1) "" "line" (rot pta26) (rot pta35) "" "line" (rot pta27) (rot pta32) "" ) (command "layer" "m" "TF" "") ; Definição da layer para traço fino (command "line" (rot pta28) (rot pta34) "" "line" (rot pta29) (rot pta33) "") (command "layer" "m" "tm" "") ; Definição da layer para traço misto (command "line" (rot pta30) (rot pta25) "") (command "mirror" ) ;Mirror da parte superior esquerda (while (/= mirror1 nil) ;Seleciona todas as entidades desenhadas desde a mirror1 até a última entidade desenhada (command mirror1) (setq mirror1 (entnext mirror1)) ) (command ""(rot ptc24) (rot ptc44) "") (setq mirror1 nil) (gc) ;Desenho da parte inferior esquerda e gerar o respectivo espelho (command "layer" "m" "tg" "") ; Definição da layer para traço grosso (command "line" (rot pt0) (rot pta8) "") (setq mirror2 (entlast)) ;Guarda a última entidade desenhada (command "pline" (rot pta8) (rot ptb22) (rot ptb23) (rot ptb24) (rot ptb40) (rot ptb42) (rot ptb44) (rot ptb46) (rot ptb31) "a" "s" (rot ptb32) (rot ptb33) "l" (rot pta10) (rot pta11) "c" ) (setq hatch1 (entlast));Grava na variavel hatch1 a ultima entidade desenhada (command "pline" (rot ptb47) (rot ptb30) (rot ptb29) (rot ptb28) (rot ptb27) (rot ptb26) (rot ptb25) (rot ptb41) (rot ptb43) (rot ptb45) "c") (setq hatch2 (entlast));Grava na variavel hatch2 a ultima entidade desenhada (setq tempp (+ (/(* alfa 180)pi) 45)) (command "layer" "m" "hatch" "") ; Definição da layer para "hatch" (command "hatch" "u" tempp (* L(/ 10 61.0)) "n" hatch1 hatch2 "");Realiza o hatch nos objectos hatch1 e hatch2) (command "layer" "m" "tg" "") ; Definição da layer para traço grosso (command "pline" (rot pta11) (rot pta10) (rot pta19) (rot ptf22) (rot ptf24) (rot pta22) "c") (setq hatch3 (entlast)) ;Grava na variavel hatch3 a ultima entidade desenhada (command "pline" (rot pta23) (rot ptf25) (rot ptf23) (rot pta21) (rot pta17) (rot pta16) (rot pta15) (rot pta14) "c")

Page 13: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:13/50

(setq hatch4 (entlast)) ;Grava na variavel hatch4 a ultima entidade desenhada (command "layer" "m" "hatch" "") ; Definição da layer para "hatch" (setq tempp (+ tempp 45)) (command "hatch" "ANSI33" (* L(/ 1.25 61.0)) tempp hatch3 hatch4 "") (command "layer" "m" "tg" "") ; Definição da layer para traço grosso (command "line" (rot pta22) (rot pta23) "" "line" (rot pta2) (rot pta9) "" "line" (rot ptb22) (rot ptb21) "" "line" (rot ptb25) (rot ptb14) "" "line" (rot ptb36) (rot ptb46) "" "line" (rot ptb47) (rot ptb37) "" "line" (rot ptf15) (rot pta19) "" "line" (rot pta21) (rot ptf16) "" "line" (rot ptf1) (rot ptf3) "" "arc" "" (rot ptf4) "line" (rot ptf4) (rot ptf5) "" "arc" "" (rot ptf6) "line" (rot ptf6) (rot ptf2) (rot ptb45)"" "line" (rot ptf18) (rot ptf19) "" "line" (rot ptf24) (rot ptf25) "" "line" (rot ptf22) (rot ptf23) "") (command "layer" "m" "tf" "") ; Definição da layer para traço fino (command "line" (rot ptf15) (rot ptf20) (rot ptf24) "" "line" (rot ptf16) (rot ptf21) (rot ptf25) "" "line" (rot pta18) (rot ptf22) "" "line" (rot pta20) (rot ptf23) "") (command "layer" "m" "tm" "") ; Definição da layer para traço misto (command "line" (rot pta13) (rot ptb39) "") (command "mirror" ) ;Mirror da parte inferior esquerda (while (/= mirror2 nil) ;Seleciona todas as entidades desenhadas desde a mirror2 até a última entidade desenhada (command mirror2) (setq mirror2 (entnext mirror2)) ) (command "" (rot ptc24) (rot ptc44) "") (setq mirror2 nil) (gc) (command "layer" "m" "tm" "") ; Definição da layer para traço misto (command "line" (rot ptc23) (rot ptc25) "") (setq hatch5 (entlast)) ;Grava na variavel hatch5 a ultima entidade desenhada para posteriomente fazer-se o hatch do corte da roda dentada (setq hatchtemp (entlast)) ;Para posteriormente apagar a entidade que não pertence ao desenho (command "layer" "m" "tg" ""); Definição da layer para traço grosso (command "line" (rot ptc25) (rot ptc35) ""

Page 14: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:14/50

"arc" "" (rot ptc36) "line" (rot ptc36) (rot ptc37) (rot ptc38) (rot ptc27) (rot ptc28) (rot ptc30) (rot ptc31) (rot ptc32) "" "arc" "" (rot ptc33) "line" (rot ptc33) (rot ptc23) "") (command "layer" "m" "hatch" "") ;Definição da layer para "hatch" (command "hatch" "ANSI37" (* L(/ 1.25 61.0)) tempp) (while (/= hatch5 nil) (command hatch5) (setq hatch5 (entnext hatch5)) ) (command "") (setq hatch5 nil) (command "erase" hatchtemp "") ;apaga a linha, que foi utilizada só para fazer o hatch (setq hatchtemp nil) (gc) (command "layer" "m" "tg" "") ; Definição da layer para traço grosso (command "line" (rot ptc30) (rot ptc3) "" "line" (rot ptc31) (rot ptc22) "" "line" (rot ptc37) (rot ptc26) "" "line" (rot ptc38) (rot ptb17) "" "line" (rot ptb34) (rot ptc29) "" "line" (rot ptb35) (rot ptc34) "" "line" (rot ptc43) (rot ptd11) "" "line" (rot ptc42) (rot ptd10) "" "line" (rot ptc41) (rot ptd9) "" "line" (rot ptc40) (rot ptd2) "" "line" (rot ptc39) (rot ptd3) "" "line" (rot ptb13) (rot ptb13a) (rot ptb20) "" "arc" "" (rot ptb19) "line" (rot ptb19) (rot ptb18) (rot ptb17) (rot ptb16) "" "arc" "" (rot ptb15) "line" (rot ptb15) (rot ptb14) "" "line" (rot ptc1) (rot ptc3) "" "line" (rot ptc2) (rot ptc2a) "" "line" (rot ptc20) (rot ptc19) "" "line" (rot ptc4) (rot ptc9) (rot ptc10) (rot ptc11) (rot ptc8) "" "line" (rot ptc11) (rot ptd6) (rot ptd7) (rot ptd8) "" "line" (rot ptd1) (rot ptd4) "" "arc" "" (rot ptd5) "line" (rot ptd5) (rot ptc7) "" "line" (rot ptb18) (rot ptc14) "" "line" (rot ptc6) (rot ptc12) "" "line" (rot ptc13) (rot ptc15) "" "line" (rot ptc18) (rot ptc16) ""

Page 15: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:15/50

"line" (rot ptc5) (rot ptc17) "" ) (command "layer" "m" "tm" "") ;Definição da layer para traço misto (command "line" (rot pt1) (rot pt2) "") )

Fig.1: Vista da frente

⇒ Vista em corte (vistac) ;função para o desenho da vista em corte: (Defun vistac() (setq pi2 (/ pi 2) pi4 (/ pi 4)) ;definição dos varios raios em função de DH e de dhh: (setq r1 (/ dhh 2) r2 (/ (* 8 dhh) 15) r3 (/ (* 3 dhh) 5) r4 (/ (* 10 DH) 31) r5 (/ (* 21 DH) 62) r6 (/ (* 12 DH) 31) r7 (/ (* 25 DH) 62) r8 (/ (* 15 DH) 31) rH (/ DH 2))

Page 16: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:16/50

;definiçao do diametro dos pequenos circulos existentes em 4 dos 8 dentes: (setq d (/ DH 31)) ;definição dos ângulos (em graus) dos diferentes pontos em relação ao eixo mais proximo: (setq a1 4.0 a2 4.5 a3 6.0 a4 7.0 a5 8.0 a6 9.0 a7 10.0 a8 9 a9 12.0 a10 9.5) ;definição dos ângulos em radianos: (setq a1r (/(* a1 pi) 180) a2r (/(* a2 pi) 180) a3r (/(* a3 pi) 180) a4r (/(* a4 pi) 180) a5r (/(* a5 pi) 180) a6r (/(* a6 pi) 180) a7r (/(* a7 pi) 180) a8r (/(* a8 pi) 180) a9r (/(* a9 pi) 180) a10r(/(* a10 pi) 180)) ;alterar layer activa para TG (command "layer" "m" "TG" "") ;desenho dos dois circulos centrais (c/ r=r1 e r=r2): (command "circle" (rot pt0) r1 "circle" (rot pt0) r2) ;desenho do circulo exterior (c/ r=rH): (command "circle" (rot pt0) rH) ;desenho dos arcos com r=r3 ;defenição de pt1 e pt2 (setq temp1 (+ pi4 a2r) temp2 (- pi2 a2r) pt1 (polar pt0 temp1 r3) pt2 (polar pt0 temp2 r3)) (command "arc" "c" (rot pt0) (rot pt1) (rot pt2) "array" (entlast) "" "p" (rot pt0) 8

Page 17: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:17/50

360 "Y") ;desenho dos dentes: (setq temp1 (- pi2 a5r) temp2 (- pi2 a2r) pt3 (polar pt0 temp1 r7) pt4 (polar pt0 temp2 rH)) (command "arc" (rot pt2) (rot pt3) (rot pt4) "array" (entlast) "" "p" (rot pt0) 8 360 "y") (setq temp1 (+ pi4 a5r) temp2 (+ pi4 a2r) pt5 (polar pt0 temp1 r7) pt6 (polar pt0 temp2 rH)) (command "arc" (rot pt1) (rot pt5) (rot pt6) "array" (entlast) "" "p" (rot pt0) 8 360 "y") (setq temp3 (- pi2 a4r) pt7 (polar pt0 temp3 r3) temp1 (- pi2 a8r) temp2 (- pi2 a3r) pt8 (polar pt0 temp1 r4) pt9 (polar pt0 temp2 rH)) (command "arc" (rot pt7) (rot pt8) (rot pt9) "array" (entlast) "" "p" (rot pt0) 8 360 "y") (setq temp3 (+ pi4 a4r) pt10 (polar pt0 temp3 r3) temp1 (+ pi4 a8r) temp2 (+ pi4 a3r) pt11 (polar pt0 temp1 r4)

Page 18: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:18/50

pt12 (polar pt0 temp2 rH)) (command "arc" (rot pt10) (rot pt11) (rot pt12) "array" (entlast) "" "p" (rot pt0) 8 360 "y") ;desenho dos arcos com r=r5 (setq temp1 (- pi2 a9r) temp2 (+ pi4 a9r) pt14 (polar pt0 temp2 r5) pt15 (polar pt0 temp1 r5)) (command "arc" "c" (rot pt0) (rot pt14) (rot pt15) "array" (entlast) "" "p" (rot pt0) 4 360 "y") ;desenho dos arcos com r=r8: (setq temp1 (- pi2 a6r) temp2 (+ pi4 a6r) pt16 (polar pt0 temp2 r8) pt17 (polar pt0 temp1 r8)) (command "arc" "c" (rot pt0) (rot pt16) (rot pt17) "array" (entlast) "" "p" (rot pt0) 4 360 "y") ;desenho dos arcos que unem pt15 a pt 17: (setq temp1 (- pi2 a9r) pt18 (polar pt0 temp1 r7)) (command "arc" (rot pt15) (rot pt18) (rot pt17) "array" (entlast) "" "p" (rot pt0)

Page 19: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:19/50

4 360 "y") ;desenho dos arcos que unem pt14 a pt 16: (setq temp1 (+ pi4 a9r) pt19 (polar pt0 temp1 r7)) (command "arc" (rot pt14) (rot pt19) (rot pt16) "array" (entlast) "" "p" (rot pt0) 4 360 "y") ;desenho das rectas que unem pt9 a pt17 e pt12 a pt16: (command "line" (rot pt9) (rot pt17)"" "array" (entlast) "" "p" (rot pt0) 4 360 "y" "line" (rot pt12) (rot pt16)"" "array" (entlast) "" "p" (rot pt0) 4 360 "y" "arc" "c" (rot pt0) (rot pt11) (rot pt8) "array" (entlast) "" "p" (rot pt0) 8 360 "y") ;desenho das rectas que unem pt15 a pt21 e pt14 a pt20: (command "line" (rot pt15) (rot pt8) "" "array"

Page 20: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:20/50

(entlast) "" "p" (rot pt0) 4 360 "y" "line" (rot pt14) (rot pt11) "" "array" (entlast) "" "p" (rot pt0) 4 360 "y") ;desenho do hatch dos 4 dentes cortados: (setq temp1 (- pi4 a8r) temp2 (- pi4 a3r) temp3 (- pi4 a7r) pt20 (polar pt0 a8r r4) pt21 (polar pt0 temp1 r4) pt22 (polar pt0 temp2 rH) pt23 (polar pt0 a3r rH) pt24 (polar pt0 temp3 r7) pt25 (polar pt0 a4r r3) temp1(- pi4 (/ pi 8)) pt26 (polar pt0 temp1 rH) temp2(/(* dh (/ 31.5 40))2)) (setq pt80 (polar pt0 a10r temp2)) (command "layer" "s" "tg" "" "pline" (rot pt20) "a" "ce" (rot pt0) (rot pt21) "s" (rot pt24) (rot pt22) "s" (rot pt26) (rot pt23) "s" (rot pt80) (rot pt20) "") (setq dente1 (entlast) temp1 (+ pi2 a3r) pt28 (polar pt0 temp1 rH)) (command "copy" dente1 "" (rot pt23) (rot pt28) "rotate" (entlast)"" (rot pt28) "90") (setq dente2 (entlast) temp1 (+ pi a3r) pt40 (polar pt0 temp1 rH)) (command "copy" dente2 "" (rot pt28) (rot pt40)

Page 21: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:21/50

"rotate" (entlast)"" (rot pt40) "90") (setq dente3 (entlast) temp1 (+ pi pi2 a3r) pt57 (polar pt0 temp1 rH)) (command "copy" dente3 "" (rot pt40) (rot pt57) "rotate" (entlast)"" (rot pt57) "90") (setq dente4 (entlast) temp2(/(* d 4.0)6) temp(+ (/(* alfa 180)pi) 45)) (command "layer" "m" "hatch""" "hatch" "u" temp temp2 "n" dente1 "" "hatch" "u" temp temp2 "n" dente2 "" "hatch" "u" temp temp2 "n" dente3 "" "hatch" "u" temp temp2 "n" dente4 "" "erase" dente1 dente2 dente3 dente4 "") ;desenho dos eixos dos diferentes dentes: (setq temp1 (/ (* 33 DH) 62)

Page 22: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:22/50

pt13 (polar pt0 pi2 temp1)) ;cria a layer TM (caso não exista) e altera a layer activa para TM: (command "layer" "m" "TM" "" "line" (rot pt13) (rot pt0) "" "array" (entlast) "" "p" (rot pt0) 8 360 "y") ;desenho dos arcos que identificam os centros dos pequenos ;círculos que se encontram em 4 dos 8 dentes: (setq temp1 (- pi2 0.1) temp2(+ pi2 0.1) pt71 (polar pt0 temp1 r6) pt72 (polar pt0 pi2 r6) pt73 (polar pt0 temp2 r6)) (command "arc" (rot pt71) (rot pt72) (rot pt73) "array" (entlast) "" "p" (rot pt0) 4 360 "y") ;desenho dos pequenos circulos que se encontram em 4 do 8 dentes: (command "layer" "m" "TG" "" "circle" (rot pt72) d "array" (entlast) "" "p" (rot pt0) 4 360 "y") )

Page 23: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:23/50

Fig.5: Vista em corte

⇒ Vista tridimensional (vista3d) ;função para modelação 3d (Defun vista3d() ;definição dos comprimentos das peças: (setq d (/ d 2) ;raio da união q m ;passo/ diametro do parafuso o m ;altura da cabeça do parafuso p (* 1.1 o) ;altura da cavidade onde esta a cabeça do parafuso d1 dhh ;Diametro da concavidade da roda dentada x lp ;comprimento do parafuso u dd ;diametro da caixa do parafuso w dk ;diametro da cabeça do parafuso m (* l (/ 22.0 61)) ;comprimento da parte circular da peça 2 n (* l (/ 33.0 61)) ;comprimento da peça 3 v (* dh (/ 42.0 113.0)) ;distancia entre o eixo dos parafusos e o eixo da peça ) ;definição dos ângulos que dão a posição dos pontos em coordenadas polares:a3 6) (setq a1 4.0

Page 24: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:24/50

a2 4.5 a3 6.0 a4 7.0 a5 8.0 a6 9.0 a7 10.0 a8 9 a9 12.0) ;definição dos ângulos em radianos: (setq a3r (/(* a3 pi) 180) a4r (/(* a4 pi) 180) a7r (/(* a7 pi) 180) a8r (/(* a8 pi) 180)) ;definição dos raios (setq r1 (/ d1 2) r3 (/(* d1 3) 5) r4 (/(* DH 10) 31) r7 (/(* DH 25) 62) rH (/ DH 2) pi2 (/ pi 2) pi4 (/ pi 4) pi32 (/ (* 3 pi) 2)) ;modificação do ucs para a peça ser desenhada na horizontal: (command "ucs" "y" "-90") ; utilização do comando "shade": (command "shademode" "g") ;definição pt7, pt8 pt9: (setq temp1 (- pi2 a4r) temp2 (- pi2 a8r) temp3 (- pi2 a3r) pt7 (polar pt0 temp1 r3) pt8 (polar pt0 temp2 r4) pt9 (polar pt0 temp3 rH)) ;definição de pt10, pt11 e pt12: (setq temp1 (+ pi4 a4r) temp2 (+ pi4 a8r) temp3 (+ pi4 a3r) pt10 (polar pt0 temp1 r3) pt11 (polar pt0 temp2 r4) pt12 (polar pt0 temp3 rH)) ;definição de pt28, pt29 e pt30: (setq temp1 (+ pi2 a4r) temp2 (+ pi2 a8r) temp3 (+ pi2 a3r) pt30 (polar pt0 temp1 r3) pt29 (polar pt0 temp2 r4)

Page 25: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:25/50

pt28 (polar pt0 temp3 rH)) ;definição de pt31, pt32 e pt33: (setq temp1 (- (+ pi2 pi4) a4r) temp2 (- (+ pi2 pi4) a8r) temp3 (- (+ pi2 pi4) a3r) pt31 (polar pt0 temp1 r3) pt32 (polar pt0 temp2 r4) pt33 (polar pt0 temp3 rH)) ;definição de pt34, pt35 e pt36: (setq temp1 (+ (+ pi2 pi4) a4r) temp2 (+ (+ pi2 pi4) a8r) temp3 (+ (+ pi2 pi4) a3r) pt36 (polar pt0 temp1 r3) pt35 (polar pt0 temp2 r4) pt34 (polar pt0 temp3 rH)) ;definição de pt37, pt38 e pt39: (setq temp1 (- pi a4r) temp2 (- pi a8r) temp3 (- pi a3r) pt37 (polar pt0 temp1 r3) pt38 (polar pt0 temp2 r4) pt39 (polar pt0 temp3 rH)) ;definição de pt40, pt41 e pt42: (setq temp1 (+ pi a4r) temp2 (+ pi a8r) temp3 (+ pi a3r) pt42 (polar pt0 temp1 r3) pt41 (polar pt0 temp2 r4) pt40 (polar pt0 temp3 rH)) ;definição de pt43, pt44 e pt45: (setq temp1 (- (+ pi pi4 ) a4r) temp2 (- (+ pi pi4 ) a8r) temp3 (- (+ pi pi4 ) a3r) pt43 (polar pt0 temp1 r3) pt44 (polar pt0 temp2 r4) pt45 (polar pt0 temp3 rH)) ;definição de pt46, pt47 e pt48: (setq temp1 (+ (+ pi pi4 ) a4r) temp2 (+ (+ pi pi4 ) a8r) temp3 (+ (+ pi pi4 ) a3r) pt48 (polar pt0 temp1 r3) pt47 (polar pt0 temp2 r4) pt46 (polar pt0 temp3 rH)) ;definição de pt49, pt50 e pt51: (setq temp1 (- pi32 a4r) temp2 (- pi32 a8r)

Page 26: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:26/50

temp3 (- pi32 a3r) pt49 (polar pt0 temp1 r3) pt50 (polar pt0 temp2 r4) pt51 (polar pt0 temp3 rH)) ;definição de pt52, pt53 e pt54: (setq temp1 (+ pi32 a4r) temp2 (+ pi32 a8r) temp3 (+ pi32 a3r) pt54 (polar pt0 temp1 r3) pt53 (polar pt0 temp2 r4) pt52 (polar pt0 temp3 rH)) ;definição de pt55, pt56 e pt57: (setq temp1 (- (+ pi32 pi4 ) a4r) temp2 (- (+ pi32 pi4 ) a8r) temp3 (- (+ pi32 pi4 ) a3r) pt55 (polar pt0 temp1 r3) pt56 (polar pt0 temp2 r4) pt57 (polar pt0 temp3 rH)) ;definição de pt58, pt59 e pt60: (setq temp1 (+ (+ pi32 pi4 ) a4r) temp2 (+ (+ pi32 pi4 ) a8r) temp3 (+ (+ pi32 pi4 ) a3r) pt60 (polar pt0 temp1 r3) pt59 (polar pt0 temp2 r4) pt58 (polar pt0 temp3 rH)) ;definição de pt61, pt62 e pt63: (setq temp1 (- a4r) temp2 (- a8r) temp3 (- a3r) pt61 (polar pt0 temp1 r3) pt62 (polar pt0 temp2 r4) pt63 (polar pt0 temp3 rH)) ;definição de pt20, pt23 e pt64: (setq temp1 a4r temp2 a8r temp3 a3r pt64 (polar pt0 temp1 r3) pt20 (polar pt0 temp2 r4) pt23 (polar pt0 temp3 rH)) ;definição de pt21, pt22 e pt65: (setq temp1 (- pi4 a4r) temp2 (- pi4 a8r) temp3 (- pi4 a3r) pt65 (polar pt0 temp1 r3) pt21 (polar pt0 temp2 r4) pt22 (polar pt0 temp3 rH))

Page 27: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:27/50

;definição dos pontos pt90 e pt91(pontos que servirão para fazer o corte da peça: (setq pi8(/ pi 8) temp(- pi pi8) temp1(* 1.1 RH) pt90(polar pt0 pi temp1) temp(-(/ pi 4)) pt91(polar pt0 temp temp1) temp(-(+(caddr pt90) pi8 (/ b 2))) pt90(list (car pt90)(cadr pt90)temp) pt91(list (car pt91)(cadr pt91)temp)) ;desenho da "roda dentada" (peça nº1): (command "layer" "m" "TG" "" "pline" pt7 "a" "s" pt8 pt9 "ce" pt0 pt28 "s" pt29 pt30 "ce" pt0 pt31 "s" pt32 pt33 "ce" pt0 pt34 "s" pt35 pt36 "ce" pt0 pt37 "s" pt38 pt39 "ce" pt0 pt40 "s" pt41 pt42 "ce" pt0 pt43 "s" pt44 pt45 "ce" pt0 pt46 "s" pt47 pt48 "ce" pt0 pt49 "s" pt50 pt51 "ce" pt0 pt52 "s" pt53 pt54 "ce" pt0 pt55 "s" pt56 pt57 "ce" pt0 pt58 "s" pt59 pt60 "ce" pt0 pt61 "s" pt62 pt63 "ce" pt0 pt23 "s" pt20 pt64 "ce" pt0 pt65 "s" pt21 pt22 "ce" pt0 pt12 "s" pt11 pt10 "ce" pt0 pt7 "")

Page 28: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:28/50

;desenho 3D da roda dentada: (command "extrude" (entlast) "" b "0") (setq rodadentada (entlast)) (setq temp1 (- (/ b 2))) (setq pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp1))) (command "move" rodadentada "" pt0 pt) ;desenho e subtração do primeiro cilindro da roda dentada: (setq temp1 (/ (- b a) 2)) (command "circle" pt0 r1 "extrude" (entlast) "" temp1 "0") (setq cilind (entlast)) (setq temp2 (/ a 2)) (setq pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" cilind "" pt0 pt "subtract" rodadentada "" cilind "" ) (setq rodadentada (entlast)) ;desenho e subtração do primeiro cilindro da roda dentada: (setq temp1 (- (/ (- b a) 2))) (command "circle" pt0 r1 "extrude" (entlast) "" temp1 "0") (setq cilind (entlast)) (setq temp2 (- temp2)) (setq pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" cilind "" pt0 pt "subtract" rodadentada "" cilind "" ) (setq rodadentada (entlast)) ;desenho da peça 2: ;desenho do dente nº 1 da peça nº2: (command "layer" "m" "V" "") (setq temp1 (- pi4 a7r) temp2 (+ a3r 0.1) pt24 (polar pt0 temp1 r7) pt27 (polar pt0 a7r r7) pt66 (polar pt0 temp2 rH)) (command "pline" pt23 "a" "s" pt27 pt20 "ce" pt0 pt21 "s" pt24 pt22 "s" pt66 pt23 "") (setq dente1 (entlast)) ;desenho do dente nº 2 da peça nº 2: (command "copy" dente1 "" pt23 pt28 "rotate" (entlast) "" pt28 "90") (setq dente2(entlast)) ;desenho do dente nº 3 da peça nº 2:

Page 29: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:29/50

(command "copy" dente2 "" pt28 pt40 "rotate" (entlast) "" pt40 "90") (setq dente3(entlast)) ;desenho do dente nº 4 da peça nº 2: (command "copy" dente3 "" pt40 pt52 "rotate" (entlast) "" pt52 "90") (setq dente4(entlast)) ;desenho 3D dos 4 dentes: (setq temp2 (- (+ (/ b 2) s)) temp3 (+ b s) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "extrude" dente1 "" temp3 "0" "move" (entlast) "" pt0 pt) (setq dente1 (entlast)) (command "extrude" dente2 "" temp3 "0" "move" (entlast) "" pt0 pt) (setq dente2 (entlast)) (command "extrude" dente3 "" temp3 "0" "move" (entlast) "" pt0 pt) (setq dente3 (entlast)) (command "extrude" dente4 "" temp3 "0" "move" (entlast) "" pt0 pt) (setq dente4 (entlast)) ;desenho do corpo da peça 2: (command "circle" pt0 rH "extrude" (entlast) "" m "0") (setq temp1 (- (+ (/ b 2) s m))) (setq pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp1))) (command "move" (entlast) "" pt0 pt) (setq peca2 (entlast)) (command "union" dente1 dente2 dente3 dente4 peca2 "") (setq peca2 (entlast)) ;desenho e subtração dos furos para alojamento dos parafusos ;na peça 2: (setq temp (- pi2 (/ pi 8)) pt67 (polar pt0 temp v) temp (- pi (/ pi 8)) pt68 (polar pt0 temp v) temp (-(+ pi pi2)(/ pi 8)) pt69 (polar pt0 temp v) temp(- (/ pi 8))

Page 30: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:30/50

pt70 (polar pt0 temp v)) (command "circle" pt67 "d" q "extrude" (entlast) "" m "0") (setq furo1 (entlast)) (command "circle" pt68 "d" q "extrude" (entlast) "" m "0") (setq furo2 (entlast)) (command "circle" pt69 "d" q "extrude" (entlast) "" m "0") (setq furo3 (entlast)) (command "circle" pt70 "d" q "extrude" (entlast) "" m "0") (setq furo4 (entlast) temp2 (-(+(/ b 2) s m)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" furo1 furo2 furo3 furo4 "" pt0 pt "subtract" peca2 "" furo1 furo2 furo3 furo4 "") (setq peca2 (entlast)) (command "circle" pt67 "d" u "extrude" (entlast) "" p "0") (setq furo1 (entlast)) (command "circle" pt68 "d" u "extrude" (entlast) "" p "0") (setq furo2 (entlast)) (command "circle" pt69 "d" u "extrude" (entlast) "" p "0") (setq furo3 (entlast)) (command "circle" pt70 "d" u "extrude" (entlast) "" p "0") (setq furo4 (entlast) temp2 (-(+(/ b 2) s p)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" furo1 furo2

Page 31: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:31/50

furo3 furo4 "" pt0 pt "subtract" peca2 "" furo1 furo2 furo3 furo4 "") (setq peca2 (entlast)) ;desenho da parte conica da peça 2: (setq temp1 (+(/ b 2) s m) pt (list (car pt0) (cadr pt0) (-(caddr pt0)temp1)) temp2 (* d (/ 1.0 4)) pt71 (list (car pt) (+(cadr pt)d) (caddr pt)) temp1 (- l m) pt72 (list (car pt71) (cadr pt71) (-(caddr pt71)temp1)) temp1 (/ temp2 2) pt74 (list (car pt72) (+(cadr pt72)temp1) (caddr pt72)) pt73 (list (car pt71) (+(cadr pt71)temp2) (caddr pt71))) (command "3dpoly" pt71 pt72 pt74 pt73 "c" "revolve" (entlast) "" pt0 pt "360") (setq cone (entlast)) (command "union" peca2 cone "") (setq peca2 (entlast)) ;desenho e subtracção do furo central da peça 2: (command "circle" pt0 d "extrude" (entlast) "" m "0" "move" (entlast) "" pt0 pt) (setq cilindro (entlast)) (command "subtract" peca2 "" cilindro "") (setq peca2 (entlast)) ;desenho da peça nº 3: (command "layer" "m" "TM" "" "circle" pt0 rH "extrude" (entlast) "" n "0") (setq temp1 (- (+ (/ b 2) s l)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp1))) (command "move" (entlast) "" pt0 pt) (setq peca3 (entlast)) (command "circle" pt0 d "extrude" (entlast) "" n "0") (setq temp1 (- (+ (/ b 2) s l)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp1))) (command "move" (entlast) "" pt0 pt)

Page 32: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:32/50

(setq cilindro (entlast)) ;desenho e subtração dos furos para alojamento dos parafusos ;na peca3: (command "subtract" peca3 "" cilindro "" "circle" pt67 "d" q "extrude" (entlast) "" n "0") (setq furo1 (entlast)) (command "circle" pt68 "d" q "extrude" (entlast) "" n "0") (setq furo2 (entlast)) (command "circle" pt69 "d" q "extrude" (entlast) "" n "0") (setq furo3 (entlast)) (command "circle" pt70 "d" q "extrude" (entlast) "" n "0") (setq furo4 (entlast) temp2 (-(+(/ b 2) s l)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" furo1 furo2 furo3 furo4 "" pt0 pt "subtract" peca3 "" furo1 furo2 furo3 furo4 "") (setq peca3 (entlast)) ;desenho e subtração do cone da peça 3: (command "3dpoly" pt71 pt72 pt74 pt73 "c" "revolve" (entlast) "" pt0 pt "360") (setq cone (entlast)) (command "subtract" peca3 "" cone "") (setq peca3 (entlast)) ;desenho dos parafusos: (command "layer" "m" "dim" "" "circle" pt67 "d" w "extrude" (entlast) "" o "0") (setq furo1 (entlast) temp2 (-(+(/ b 2) s p)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" furo1 "" pt0 pt

Page 33: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:33/50

"circle" pt67 "d" q "extrude" (entlast) "" x "0") (setq furo2 (entlast) temp2 (-(+(/ b 2) s x p)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" furo2 "" pt0 pt "union" furo1 furo2 "") (setq parafuso (entlast) ss(/ ss 2)) (command "polygon" "6" pt67 "c" ss "extrude" (entlast) "" tt "0") (setq temp1 (- (+ (/ b 2) s tt (- p o ))) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp1))) (command "move" (entlast) "" pt0 pt) (setq furo1 (entlast) ) (command "subtract" parafuso "" furo1 "") (setq parafuso (entlast)) (command "array" parafuso "" "p" pt0 4 360 "y") ;desenho da outra metade do conjunto: ;movimento da origem do ucs ao longo do eixo dos z: (setq temp1(*(caddr pt0)2) temp2(*(car pt0)2) pt100 (list temp2 0 temp1)) (command "ucs" "m" pt100 "ucs" "y" "180") ;desenho da peça 2: ;desenho do dente nº 1 da peça nº2: (command "layer" "m" "V" "") (command "pline" pt23 "a" "s" pt27 pt20 "ce" pt0 pt21 "s" pt24 pt22 "s" pt66 pt23 "") (setq dente1 (entlast)) ;desenho do dente nº 2 da peça nº 2: (command "copy" dente1 "" pt23 pt28 "rotate" (entlast) "" pt28 "90") (setq dente2(entlast)) ;desenho do dente nº 3 da peça nº 2:

Page 34: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:34/50

(command "copy" dente2 "" pt28 pt40 "rotate" (entlast) "" pt40 "90") (setq dente3(entlast)) ;desenho do dente nº 4 da peça nº 2: (command "copy" dente3 "" pt40 pt52 "rotate" (entlast) "" pt52 "90") (setq dente4(entlast)) ;desenho 3D dos 4 dentes: (setq temp2 (- (+ (/ b 2) s)) temp3 (+ b s) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "extrude" dente1 "" temp3 "0" "move" (entlast) "" pt0 pt) (setq dente1 (entlast)) (command "extrude" dente2 "" temp3 "0" "move" (entlast) "" pt0 pt) (setq dente2 (entlast)) (command "extrude" dente3 "" temp3 "0" "move" (entlast) "" pt0 pt) (setq dente3 (entlast)) (command "extrude" dente4 "" temp3 "0" "move" (entlast) "" pt0 pt) (setq dente4 (entlast)) ;desenho do corpo da peça 2: (command "circle" pt0 rH "extrude" (entlast) "" m "0") (setq temp1 (- (+ (/ b 2) s m))) (setq pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp1))) (command "move" (entlast) "" pt0 pt) (setq peca2 (entlast)) (command "union" dente1 dente2 dente3 dente4 peca2 "") (setq peca2 (entlast)) (command "circle" pt67 "d" q "extrude" (entlast) "" m "0") (setq furo1 (entlast)) (command "circle" pt68 "d" q "extrude" (entlast) "" m "0") (setq furo2 (entlast)) (command "circle" pt69 "d" q "extrude" (entlast) "" m "0")

Page 35: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:35/50

(setq furo3 (entlast)) (command "circle" pt70 "d" q "extrude" (entlast) "" m "0") (setq furo4 (entlast) temp2 (-(+(/ b 2) s m)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" furo1 furo2 furo3 furo4 "" pt0 pt "subtract" peca2 "" furo1 furo2 furo3 furo4 "") (setq peca2 (entlast)) (command "circle" pt67 "d" u "extrude" (entlast) "" p "0") (setq furo1 (entlast)) (command "circle" pt68 "d" u "extrude" (entlast) "" p "0") (setq furo2 (entlast)) (command "circle" pt69 "d" u "extrude" (entlast) "" p "0") (setq furo3 (entlast)) (command "circle" pt70 "d" u "extrude" (entlast) "" p "0") (setq furo4 (entlast) temp2 (-(+(/ b 2) s p)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" furo1 furo2 furo3 furo4 "" pt0 pt "subtract" peca2 "" furo1 furo2 furo3 furo4

Page 36: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:36/50

"") (setq peca2 (entlast)) ;desenho da parte conica da peça 2: (setq temp1 (+(/ b 2) s m) pt (list (car pt0) (cadr pt0) (-(caddr pt0)temp1)) temp2 (* d (/ 1.0 4)) pt71 (list (car pt) (+(cadr pt)d) (caddr pt)) temp1 (- l m) pt72 (list (car pt71) (cadr pt71) (-(caddr pt71)temp1)) temp1 (/ temp2 2) pt74 (list (car pt72) (+(cadr pt72)temp1) (caddr pt72)) pt73 (list (car pt71) (+(cadr pt71)temp2) (caddr pt71))) (command "3dpoly" pt71 pt72 pt74 pt73 "c" "revolve" (entlast) "" pt0 pt "360") (setq cone (entlast)) (command "union" peca2 cone "") (setq peca2 (entlast)) ;desenho e subtracção do furo central da peça 2: (command "circle" pt0 d "extrude" (entlast) "" m "0" "move" (entlast) "" pt0 pt) (setq cilindro (entlast)) (command "subtract" peca2 "" cilindro "") (setq peca2 (entlast)) ;desenho da peça nº 3: (command "layer" "m" "TM" "" "circle" pt0 rH "extrude" (entlast) "" n "0") (setq temp1 (- (+ (/ b 2) s l)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp1))) (command "move" (entlast) "" pt0 pt) (setq peca3 (entlast)) (command "circle" pt0 d "extrude" (entlast) "" n "0") (setq temp1 (- (+ (/ b 2) s l)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp1))) (command "move" (entlast) "" pt0 pt) (setq cilindro (entlast)) ;desenho e subtração dos furos para alojamento dos parafusos ;na peca3: (command "subtract" peca3 "" cilindro "" "circle" pt67 "d" q "extrude" (entlast) "" n "0") (setq furo1 (entlast)) (command "circle" pt68 "d" q "extrude" (entlast) "" n "0")

Page 37: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:37/50

(setq furo2 (entlast)) (command "circle" pt69 "d" q "extrude" (entlast) "" n "0") (setq furo3 (entlast)) (command "circle" pt70 "d" q "extrude" (entlast) "" n "0") (setq furo4 (entlast) temp2 (-(+(/ b 2) s l)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" furo1 furo2 furo3 furo4 "" pt0 pt "subtract" peca3 "" furo1 furo2 furo3 furo4 "") (setq peca3 (entlast)) ;desenho e subtração do cone da peça 3: (command "3dpoly" pt71 pt72 pt74 pt73 "c" "revolve" (entlast) "" pt0 pt "360") (setq cone (entlast)) (command "subtract" peca3 "" cone "") (setq peca3 (entlast)) ;desenho dos parafusos: (command "layer" "m" "dim" "" "circle" pt67 "d" w "extrude" (entlast) "" o "0") (setq furo1 (entlast) temp2 (-(+(/ b 2) s p)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" furo1 "" pt0 pt "circle" pt67 "d" q "extrude" (entlast) "" x "0") (setq furo2 (entlast) temp2 (-(+(/ b 2) s x p)) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp2))) (command "move" furo2 "" pt0 pt "union" furo1 furo2 "") (setq parafuso (entlast) ss(/ ss 2))

Page 38: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:38/50

(command "polygon" "6" pt67 "c" ss "extrude" (entlast) "" tt "0") (setq temp1 (- (+ (/ b 2) s tt (- p o ))) pt(list(car pt0)(cadr pt0)(+(caddr pt0)temp1))) (command "move" (entlast) "" pt0 pt) (setq furo1 (entlast) ) (command "subtract" parafuso "" furo1 "") (setq parafuso (entlast)) (command "array" parafuso "" "p" pt0 4 360 "y") ;reposição da origem do ucs: (setq temp1(-(caddr pt100)) temp2(-(car pt100)) pt100 (list temp2 0 temp1)) (command "ucs" "y" "180" "ucs" "m" pt100) ;corte de parte da peça (dialogo3) (if (= dial2 0) (progn (initget "S s N n")(prompt"\nDeseja visualizar a peça com um corte?(s/n)") (setq corte (getkword)) (if (or (= corte "s") (= corte "S")) (setq corte 1) (setq corte 0)) )) (if (= corte 1) (progn (setq temp(+ l (* 2 b)) parafuso(entnext parafuso) temp1(- 203) temp2(- temp1)) (command "ucs" "z" temp1 "layer" "s" "V" "" "pline" pt91 pt0 pt90 "a" "ce" pt0 pt91 "cl" "extrude" (entlast)"" temp "0" "subtract" peca2 "" (entlast)"" "layer" "s" "TM" "" "pline" pt91 pt0 pt90 "a" "ce" pt0 pt91 "cl" "extrude" (entlast)"" temp "0" "subtract" peca3 "" (entlast)"" "erase" parafuso"" "ucs" "z" temp2)))

Page 39: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:39/50

;reposição do ucs inicial (command "ucs" "y" "90") ;********************************************************* ;layer's necessárias: ;TG -> vermelho ;TM -> amarelo ;V -> verde ;L -> castanho )

Fig.3: Vista tridimensional com corte No desenho da vista tridimensional foram criadas duas novas layers (V e a L), não sendo modificadas as respectivas cores, para que no caso de já existirem não alterar as definições dos utilizadores.

Page 40: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:40/50

Função rotação do desenho da vista (rot) ;Definição da subrotina de rotação em torno de pt0 e de um ângulo alfa (defun rot (ptc / dx dy seno cosse xx yy ptn) (setq dx (- (car ptc) (car pt0)) dy (- (cadr ptc) (cadr pt0)) seno (sin alfa) cosse (cos alfa) xx (- (* cosse dx) (* seno dy)) yy (+ (* seno dx) (* cosse dy)) ptn (list (+ xx (car pt0)) (+ yy (cadr pt0))) ))

Esta função realiza a rotação de um ponto, em torno de pt0, para que seja possível fazer o desenho da vista da frente ou da vista de corte em qualquer direcção.

Funções caixas de diálogo

⇒ Diálogo inicial (dialogo) (defun dialogo () ;Função dialogo inicial (setq dial 1) (setq what_next 5) ;variavel para recuperação da caixa de dialogo (setq opcao 1) (setq alfa 0) (setq dtemp "0") (setq pt0 (list 0 0 0)) (setq dcl_id (load_dialog " dialogo.dcl")) (if (not pt0x)(setq pt0x "0.0")) ;Inicialização dos valores do ponto inicial (if (not pt0y)(setq pt0y "0.0")) ;na primeira vez que é inicializada a caixa de dialogo (if (not pt0z)(setq pt0z "0.0")) (if (not graus)(setq graus "0")) (if (/= dcl_in 0) ;se o ficheiro dcl é encontrado (progn (while (< 2 what_next) ;enquanto que o whatnext é maior que 2 (if (not (new_dialog "dialogo" dcl_id)) (setq dial 0) ) (dialogo_defaults);vai buscar a valores por defeito (action_tile "VF" "(setq opcao 1)(setq dtemp (get_tile \"lb1 \"))(dialogo_defaults)") (action_tile "VC" "(setq opcao 2)(setq dtemp (get_tile \"lb1 \"))(dialogo_defaults)")

Page 41: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:41/50

(action_tile "V3D" "(setq opcao 3)(setq dtemp (get_tile \"lb1 \"))(dialogo_defaults)") (action_tile "x_pt" "(setq pt0x $value)") (action_tile "y_pt" "(setq pt0y $value)") (action_tile "z_pt" "(setq pt0z $value)") (action_tile "pick_pt" "(setq dtemp (get_tile \"lb1\"))(done_dialog 4)") (action_tile "dir" "(setq dtemp (get_tile \"lb1\"))(done_dialog 3)") (action_tile "accept" "(dget)(done_dialog)") ; quando o botão OK é premido (action_tile "cancel" "(exit)") ;quando o botão Cancel é premido (setq what_next (start_dialog)) (if (= what_next 4) (progn (initget 1) (setq pt0 (getpoint "Selecione o Ponto Inicial: ")) (setq pt0x (rtos (car pt0) 2 4)) (setq pt0y (rtos (cadr pt0) 2 4)) (setq pt0z (rtos (caddr pt0) 2 4)) ) ) (if (= what_next 3) (progn (initget 1) (setq alfa (getangle pt0 "\nDefina a direcção do eixo:")) (setq graus (rtos (/ (* alfa 180) pi))) ) ) ))) (start_dialog) (unload_dialog dcl_id) )

Esta função tem como objectivo iniciar e controlar os diversos

parâmetros da caixa de diálogo, através das funções dget e a dialogo_defaults.

⇒ Função de recuperação dos valores da caixa de diálogo (dget) (defun dget () ;função que quando o utilizador fecha a caixa de dialogo, vai guardar os valores (setq dtemp (get_tile "lb1"));introduzidos (setq pt0 (list (atof (get_tile "x_pt")) (atof (get_tile "y_pt")) (atof (get_tile "z_pt"))))

Page 42: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:42/50

(setq alfa (/ (* (atof (get_tile "graus")) pi) 180.0)) (cond ((= dtemp "0") (setq d 14)) ((= dtemp "1") (setq d 19)) ((= dtemp "2") (setq d 24)) ((= dtemp "3") (setq d 28)) ((= dtemp "4") (setq d 38)) ((= dtemp "5") (setq d 42)) ((= dtemp "6") (setq d 48)) ((= dtemp "7") (setq d 55)) ((= dtemp "8") (setq d 65)) ) )

⇒ Função para colocação dos valores por defeito (dialogo_defaults)

(defun dialogo_defaults ();função que muda os campos da caixa de dialogo após o clique num botão (set_tile "x_pt" pt0x) ;ponto inicial (valores em x,y e z) (set_tile "y_pt" pt0y) (set_tile "z_pt" pt0z) (set_tile "lb1" dtemp) (set_tile "graus" graus);graus relativamente a horizontal (cond ;desactiva os campos que não são necessários em determinda opcção ((= opcao 1) (mode_tile "dir" 0) (mode_tile "graus" 0)) ((= opcao 2) (mode_tile "dir" 0) (mode_tile "graus" 0)) ((= opcao 3) (mode_tile "dir" 1) (mode_tile "graus" 1)) ) (setq x2 (- (setq image_x (dimx_tile "imagem")) 1)) (setq y2 (- (setq image_y (dimy_tile "imagem")) 1)) (start_image "imagem") (fill_image 0 0 x2 y2 -2) (end_image) (start_image "imagem") (cond ((= opcao 1) (slide_image 0 0 x2 y2 " vf")) ((= opcao 2) (slide_image 0 0 x2 y2 " vc")) ((= opcao 3) (slide_image 0 0 x2 y2 " 3d")) ) (end_image) ) A função dialogo_defaults tem a finalidade, de quando a caixa de dialogo é iniciada, colocar nos campos os valores iniciais ou os valores alterados pelo

Page 43: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:43/50

utilizador. Os slides contêm uma previsualização da vista da frente, em corte, e tridimensional (os nomes destes ficheiros são: vf.sld, vc.sld, 3d.sld).

⇒ Ficheiro DCL, utilizado pela função dialogo dialogo:dialog { label = "União Elástica"; spacer; :boxed_column{//primeira coluna para a imagem e os botoes label = " Escolha a vista: "; :image_button{ //imagem ou slide key="imagem" ; //nome do objecto width=40; //largura height=30; //altura color=0; //cor de fundo alignment = centered; //alinhamento centrado } :boxed_row{ //caixa em linha :button { //botao vista da frente is_default = true; label = "Vista de Frente"; key = "VF"; //variavel de saida } :button { is_default = true; label = "Vista em Corte"; //botao vista em corte key = "VC"; } :button { is_default = true; label = "Vista em 3D"; key = "V3D"; } } } :row{ //elementos em linha : boxed_column { //caixa em coluna label = "Ponto Inicial"; : button { //botão label = "Selecione o ponto Inicial"; mnemonic = "S"; //atalho através do teclado key = "pick_pt"; } : edit_box { //caixa de edição label = "X:"; mnemonic = "X"; key = "x_pt";

Page 44: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:44/50

edit_width = 10; } : edit_box { label = "Y:"; mnemonic = "Y"; key = "y_pt"; edit_width = 10; } : edit_box { label = "Z:"; mnemonic = "Z"; key = "z_pt"; edit_width = 10; } } :boxed_column{ label = "Diâmetro da União Elástica:"; : popup_list { //define uma popup list box key = "lb1"; //nome da popup list list = "14\n19\n24\n28\n38\n42\n48\n55\n65"; //elementos height = 20; width = 8; fixed_width = true; fixed_height = true; alignment = centered; } } :boxed_column{ label = "Direcção do eixo:"; alignment = top; :button { label = "Selecione o ponto:"; key = "dir"; alignment = top; } :boxed_column{ : edit_box { label = "Graus relativamente ao eixo xx:"; mnemonic = "G"; key = "graus"; edit_width = 6; } } } } ok_cancel;

Page 45: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:45/50

} No ficheiro DCL, é definido todos os elementos da janela. O autolisp “comunica” com os elementos através de chaves (keys), para que seja possível colocar e retirar valores introduzidos pelo utilizador na janela de diálogo.

Fig. 4: Janela de diálogo inicial.

Page 46: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:46/50

⇒ Diálogo final (dialogo2) (defun dialogo2();função dialogo que perguntar se utilizador quer desenhar mais alguma vista (setq dial2 1) (setq dcl_id (load_dialog " dialogo2.dcl")) (if (not (new_dialog "dialogo2" dcl_id)) (setq dial2 0) ) (action_tile "S" "(setq continuar 1)(done_dialog)") (action_tile "N" "(setq continuar 0)(done_dialog)") (start_dialog) )

⇒ Ficheiro DCL, utilizado pela função dialogo2 dialogo2:dialog {

label = "União Elástica"; spacer; :boxed_row{

label = " Deseja desenhar mais alguma vista? "; :button { label = "SIM"; key = "S"; } :button { is_default = true; label = "Não"; key = "N"; }

} }

Page 47: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:47/50

⇒ Diálogo da vista tridimensional (defun dialogo3();função dialogo que perguntar se utilizador se quer ver a vista tridimensional em corte (setq dial3 1) (setq dcl_id (load_dialog "z:\\cfac\\trabalho\\dialogo3.dcl")) (if (not (new_dialog "dialogo3" dcl_id)) (setq dial3 0) ) (action_tile "S" "(setq corte 1)(done_dialog)") (action_tile "N" "(setq corte 2)(done_dialog)") (start_dialog) )

⇒ Ficheiro DCL, utilizado pela função dialogo3 dialogo3:dialog { label = "União Elástica"; spacer; :boxed_row{ label = " Deseja desenhar a vista 3D com um corte? "; :button { label = "SIM"; key = "S"; } :button { is_default = true; label = "Não"; key = "N"; } } }

Page 48: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:48/50

Bibliografia Ø Apontamentos e acetatos das aulas de CFAC (Eng. João Tavares e Eng.

Joaquim Fonseca, Faculdade de Engenharia da Universidade do Porto) Ø FERREIRA, Fernando Luís; SANTOS, João; Programação em AutoCAD - Curso

completo; Editora FCA; 2002. Ø Exemplo do programa ddarray disponibilizado em:

http://www.caddepot.com/autolisp/ddarray.zip Ø Toturial de dcl disponibilizado em:

http://www.caddepot.com/tips/dcl.zip

Page 49: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:49/50

Anexos ⇒ Desenho retirado do catálogo:

⇒ Tabela retirada do catálogo

Page 50: Concepção e Fabrico Assistidos por Computadortavares/ensino/CFAC/2002-2003/Works...Desenho automático de uma união elástica em AutoLisp Concepção e Fabrico Assistido por Computador

Desenho automático de uma união elástica em AutoLisp

Concepção e Fabrico Assistido por Computador (2002/03) Pág.:50/50

⇒ Aplicações da união elástica