







































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Slide definindo pontos para criação de rotina de programa
Tipologia: Notas de aula
1 / 47
Esta página não é visível na pré-visualização
Não perca as partes importantes!








































(O utilizador define a largura, a altura e o ponto pt1.)
pt
pt3^ pt
pt
pt pt
pt pt
pt
a
b
5
(O utilizador define a largura, a altura e o ponto pt0.)
;Programa para desenhar uma Porta de arco através de: ;Centro inferior, largura e altura direita. jof-92-11- (Defun c:porta() ; LEITURA ; vai ler os valores (setq a (getreal "\nLargura da porta : ")) (setq b (getreal "\nAltura direita da porta : ")) (setq pt0 (getpoint "\nPonto Central inferior : ")) ; CÁLCULOS ; vai calcular outros pontos necessários ao desenho da figura (setq a2 (/ a 2)) (setq pi2 (/ pi 2)) (setq pt1 (polar pt0 0 a2)) (setq pt2 (polar pt1 pi2 b)) (setq pt4 (polar pt0 pi a2)) (setq pt3 (polar pt4 pi2 b))
pt
pt3^ pt
pt
pt pt
pt pt
pt
a
b
5
pt
pt3 pt
pt
pt pt
pt pt
pt
a
b
5
(setq pi2 (/ pi 2)) (setq pt1 (polar pt0 0 a2)) (setq pt2 (polar pt1 pi2 b)) (setq pt4 (polar pt0 pi a2)) (setq pt3 (polar pt4 pi2 b)) (setq pt5 (polar pt0 (- pi2) 5)) (setq pt7 (polar pt2 0 5)) (setq pt8 (polar pt3 pi 5)) (setq pp (+ b a2 10)) (setq pt6 (polar pt5 pi2 pp)) ;DESENHO ; Altera layer e desenha (command "layer" "m" "TG" "") (command "line" pt3 pt4 pt1 pt2 "" "arc" "" pt3 ; Arco contínuo )
pt
pt3^ pt
pt
pt pt
pt pt
pt
a
b
5
k
∅s pt
pt
pt3 pt pt pt pt
pt
pt
pt pt10 pt11^ pt
pt 30º
e
Ficheiro a ser criado exteriormente (a primeira linha não pertence ao ficheiro e serve somente para ajudar a localizar os valores em cada linha). parafhex.dat 1234567890123456789012345678901234567890123456 3 ,0.5 ,5.5 , 2.0 ,6. ,20. ,30. , 4 ,0.7 ,7. , 2.8 ,8. ,25. ,40. , 5 ,0.8 ,8. , 3.5 ,10. ,25. ,50. , 6 ,1. ,10. , 4. ,12. ,30. ,60. , 8 ,1.25 ,13. , 5.3 ,16. ,35. ,80. , 10 ,1.5 ,17. , 6.4 ,20. ,40. ,100. , 12 ,1.75 ,19. , 7.5 ,25. ,45. ,100. , 14 ,2. ,22. , 8.8 ,30. ,50. ,100. , 16 ,2. ,24. ,10. ,35. ,55. ,100. , 20 ,2.5 ,30. ,22.5 ,40. ,65. ,100. , 24 ,3. ,36. ,15. ,40. ,80. ,100. , 30 ,3.5 ,46. ,18.7 ,40. ,90. ,100. , 36 ,4. ,55. ,22.5 ,40. ,110. ,100. ,
(setq pt0 (getpoint "\nDefina ponto de localização paraf : ")) (initget 1) ; não admite resposta nula (setq alfa (getangle pt0 "\nDefina direcção do eixo : ")) (initget 1 "1 2 3") (setq ilog (getkword "Três faces(1), Duas faces(2), de cima (3): ")) (if (/= ilog "3") ; pergunta pelo comprimento se não for ; a vista de cima (progn (initget (+ 1 2 4)) ; não permite que L seja vazio, nulo ou negativo (setq L (getreal "\nQual a comprimento do Parafuso :")) ) ) (setq linha nil ; inicializa os valores para controle listd nil i - )
(while (= linha nil) ; while para leitura da tabela (setq f (open "parafhex.dat" "r") dif 0. ierro 0 ) (if (= f nil) (progn (prompt "\nFicheiro parafhex.dat não encontrado!") (setq lixo (getstring "\nIntroduza ENTER : ") ierro 1 ; ficheiro não existe linha "1“ ) )
(close f) (if (= ierro 2) (progn ; então (setq j 0) (prompt "\nDiametro ERRADO. No ficheiro existem: ") (while (<= j i) ; escreve os diâmetros lidos do ficheiro (princ (nth j listd)) ; escreve elemento j da lista listd (princ " , ") (setq j (+ j 1)) ) (setq listd nil i - dif 0. ) ) ) ; fim do if do ierro 2
) ; fim do progn de processamento ) ; Fim do if f=nil ) ; Fim do while para leitura (if (= ierro 0) ; no caso de ter encontrado o d na tabela, desenha (progn ; então ; define os restantes parâmetros (setq p (atof (substr linha 6 5))) ; passo da rosca (setq s (atof (substr linha 12 5))) ; entre-faces do sextavado (setq k (atof (substr linha 18 4))) ; altura da cabeça do parafuso (setq lmin1 (atof (substr linha 24 5))) ; compr mínimo para todo roscado (setq lmin2 (atof (substr linha 30 4))) ; compr mínimo para o com liso (setq lmax1 (atof (substr linha 36 5))) ;compr máx p/ todo roscado (setq lmax2 (atof (substr linha 42 4))) ; compr máx para com liso
(setq op 1) ; senão2 define um valor para o caso da vista de cima ) (if (equal op 1) ; no caso de ser aceitável o comprimento (progn ; então (setq pi6 (/ pi 6)) (setq pi2 (/ pi 2)) (setq e (/ s (cos pi6))) ; definição de layer (command "layer" "m" "tg" "") (setq fl (/ (- e s) 2)) (setq fl (* fl (/ (sin pi6) (cos pi6)))) (if (= ilog "1") (progn ; então3 definição de pontos
(setq pt1 (polar pt0 pi2 (/ e 4))) (setq pt2 (polar pt0 pi2 (/ e 2))) (setq pt3 (polar pt2 pi (- k fl))) (setq pt7 (polar pt0 pi k)) (setq pt4 (polar pt7 pi2 (/ s 2))) (setq pt5 (polar pt7 pi2 (/ (* e 3) 8))) (setq pt6 (polar pt1 pi (- k fl))) (setq pt12 (polar pt0 (- pi2) (/ e 2))) (setq pt13 (polar pt0 (- pi2) (/ e 4))) (setq pt8 (polar pt13 pi (- k fl))) (setq pt9 (polar pt7 (- pi2) (/ (* e 3) 8))) (setq pt10 (polar pt7 (- pi2) (/ s 2))) (setq pt11 (polar pt12 pi (- k fl))) ; vai agora desenhar parafuso