1º Exemplo - Rectângulo

Documentos relacionados
AutoLISP Programas Exemplo. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

AutoLISP Programas Exemplo

IMPLEMENTAÇÃO D0 DESENHO AUTOMÁTICO DE CILINDROS DE DUPLO EFEITO AUTOLISP CONCEPÇÃO E FABRICO ASSISTIDOS POR COMPUTADOR ANO LECTIVO

Faculdade de Engenharia Universidade do Porto RELATÓRIO CFAC Trabalho em Autolisp

Faculdade de Engenharia da Universidade do Porto Concepção e Fabrico Assistido por Computador. Relatório

EM GESTÃO E ENGENHARIA INDUSTRIAL Disciplina de Concepção e Fabrico Assistidos por Computador

Caixa de Velocidades. Índice

Elbow flange coupling

Funções Geométricas, de Strings, de Listas e de Manipulação de Arquivos

AutoLISP -VII Funções Geométricas, de Strings, de Listas e de Manipulação de Arquivos

Concepção e Fabrico Assistido por Computador

AutoLISP - VI Conjuntos de seleção

Conjuntos de selecção

AutoLISP - III Funções de repetição e condicionais, Obter e converter informação. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

Função condicional - if. AutoLISP - III Funções de repetição e condicionais, Obter e converter informação

AutoLISP -V Manipulação de entidades

AutoLISP -II Cálculos, Variáveis e Listas

CFAC: AutoLISP (II) - Cálculos, Variáveis e Listas

Modelação Geométrica e Visualização de Edifícios 2007/2008

AutoLISP - II Cálculos, Variáveis e Listas. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

UNIVERSIDADE DO PORTO

Instituto Superior Técnico Licenciatura em Arquitectura Desenho Assistido por Computador II Ano lectivo 2005/06, 2 ano

Exemplo: ; ver exemplo de aplicação abaixo com mapcar. ; retorna uma lista formada pelos elementos indicados. ; retorna o número de elementos na lista

Concepção e Fabrico Assistidos por Computador

Programação e Computação para Arquitectura 2010/2011

Exemplos de Programas para Tratamento de Ficheiros DXF. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

Exercícios de Programação e Computação para Arquitectura. António Menezes Leitão

CFAC: Introdução ao AutoCAD - V. Capitulo V: Construções geométricas

Prof: Heni Mirna Cruz Santos

Pró-Reitoria de Graduação Curso de Engenharia Civil Trabalho de Conclusão de Curso

Programação e Computação para Arquitectura 2007/2008

CFAC: Introdução ao AutoCAD - I. Capitulo I: Iniciação ao AutoCAD

Programação e Computação para Arquitectura 2015/2016

Introdução ao AutoCAD Capitulo IV: Comandos de modificação

Exercícios de Programação e Computação para Arquitectura. António Menezes Leitão

AutoLISP -I Introdução

AutoLISP - I Introdução. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

Introdução ao AutoCAD Capitulo V: Construções geométricas. João Manuel R. S. Tavares Joaquim O. Fonseca

2. LAYERS UTILIZADAS E APLICAÇÕES

Introdução ao AutoCAD Capitulo IV: Comandos de modificação. João Manuel R. S. Tavares Joaquim O. Fonseca

CFAC: Introdução ao AutoCAD - I. Capitulo I: Iniciação ao AutoCAD

Cotagem é a indicação das medidas da peça em seu desenho conf. a norma NBR Para a cotagem de um desenho são necessários três elementos:

Comandos básicos do AutoCAD

2) Considere a figura abaixo. Foi efetuado um corte em desvio à 90º. Com o comando MASSPROP no AutoCAD 2000 encontramos a tela ao lado.

Aplicações de Programação CNC/ISO com Microcomputador. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

CFAC: AutoLISP (I) - Introdução

4 - APLICAÇÕES DE PROGRAMAÇÃO CNC/ISO COM MICROCOMPUTADOR

Cotagem. Regras gerais de cotagem. Cotagem de Dimensões Básicas. Unidade de medida em desenho técnico

RELATÓRIO CFAC Ano lectivo

Programação e Computação para Arquitectura 2012/2013

Introdução ao AutoCAD Capitulo VII: Cotagem. João Manuel R. S. Tavares Joaquim O. Fonseca

C.F.A.C. Concepção e Fabrico Assistido por Computador

(Concepção e Fabrico Assistido por Computador) Ano lectivo: 2001/2002

1/2" Figura Tipos de seta

3. Conhecimentos Básicos

LISP - Introdução. Existem vários dialectos de LISP: COMMON LISP (o mais sofisticado e mais utilizado) Outros: MAC LISP, INTERLISP, XLISP

UNIVERSIDADE ESTADUAL DE SANTA CRUZ DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE ENGENHARIA ELÉTRICA

DESENHO TÉCNICO MECÂNICO I. Aula 06 Cotas, Símbolos. Desenho Técnico Mecânico I

{ } Questão 1. Considere as seguintes afirmações sobre o conjunto U = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Questão 2. Seja o conjunto = { : 0 e 2 2

Introdução ao AutoCAD Capitulo IV: Comandos de modificação

Para compensar, o DP permite o uso de parênteses. Na expressão anterior, para multiplicar 4 por 5 primeiro, fazemos:

Cotagem. Linha auxiliar; Linha de cota Limite da linha de cota; Cota (dimensão linear ou angular) Fonte: ABNT NBR 10126

Introdução ao SolidWorks (VI): Elementos de Rotação e de Sweep

SEM DESENHO TÉCNICO MECÂNICO I

Princípios de cotagem em Desenho Técnico Representaçã

Programação de Computadores III

Programação de Computadores III

DESENHO TÉCNICO MECÂNICO I. Aula 06 Cotas, Símbolos. Desenho Técnico Mecânico I

ALUNO Natália Blauth Vasques. TUTORIAL RHINOCEROS Embalagem Hidratante Alfazol, Granado

Exemplos de Programas em CNC. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

SEM DESENHO TÉCNICO MECÂNICO I

SEM DESENHO TÉCNICO MECÂNICO I

Exemplos de. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

Programação de Computadores:

As cotas horizontais são registradas da esquerda para a direita; as verticais de baixo para cima e as inclinadas, de modo a facilitar a leitura.

Entrelinha 1,5. Utiliza apenas caneta ou esferográfica de tinta indelével, azul ou preta.

Versão 2. Utiliza apenas caneta ou esferográfica de tinta indelével, azul ou preta.

Introdução à Computação Gráfica

DESENHO TÉCNICO MECÂNICO I (SEM 0502)

Escola Secundária com 3ºCEB de Lousada Ficha de Trabalho de Matemática do 9º ano 2011 Assunto: Preparação para o Exame Nacional

Curso de AutoCAD 2D. Instrutor : Mauro Pio Dos Santos Junior Monitor : Thainá Souza

ÍNDICE PROGRAMÁTICO DA ACÇÃO DE FORMAÇÃO DE DESENHO ASSISTIDO POR COMPUTADOR, AutoCad 2018

Testes e Exames do Desenho Assistido por Computador Teste

TÉCNICAS DE CAD PARA ENGENHARIA CIVIL AULA 3 2. SELEÇÃO DE PONTOS PRECISOS EM OBJETOS

Introdução ao Controlo Numérico Computorizado III Sintaxe de Escrita (G, M, )

COLÉGIO SHALOM Ensino Fundamental 8 Ano Prof.º: Wesley Disciplina Geometria Aluno (a):. No.

CFAC: Introdução ao AutoCAD - IV. Capitulo IV: Comandos de modificação

ESCOLA SECUNDÁRIA COM 2º E 3º CICLOS ANSELMO DE ANDRADE 9º ANO ANO LECTIVO

AutoCAD D Plano de Aula - 24 Aulas (Aulas de 1 Hora)

CFAC: Exemplos de Programas em FORTRAN

REVISÃO DE CONCEITOS BÁSICOS

2014/2015 1º semestre SRDD turma 2CD Professor Luís Mateus Plano semanal do semestre

Desenho Técnico e CAD CAD e Sistemas de Coordenadas. Limits. Units. Define o tamanho da área de trabalho do desenho. Define as unidades do sedenho.

Curso de AutoCAD Fundação Gorceix 30/05/2017. Curso de AutoCAD 2D. Instrutor : Mauro Pio Dos Santos Junior Monitor : Brenda Mara Marques

Exercícios de Programação e Computação para Arquitectura. António Menezes Leitão

Transcrição:

AutoLISP Programas Exemplo João Manuel R. S. Tavares Joaquim Oliveira Fonseca 1º Exemplo - Rectângulo Desenvolva um programa em AutoLISP que permita criar a figura junta. Utilize a função LIST para definir i as coordenadas d dos novos pontos. pt4 pt3 pt2 b (O utilizador define a largura, a altura e o ponto. AutoLISP - Programas Exemplo 2009@JST/JOF 2 JST/JOF 1

1º Exemplo - Rectângulo Programa para desenhar um rectângulo através de: canto inferior esquerdo, largura e altura (Defun c:rect( LEITURA vai ler os valores de definição (setq b (getreal "\nlargura : " (setq h (getreal "\naltura : " (setq (getpoint "\ncanto Inferior Esquerdo : " CÁLCULOS vai calcular os outros pontos necessários (setq pt2 (list (+ (car b (cadr (setq pt3 (list (car pt2 (+ (cadr h (setq pt4 (list (car (cadr pt3 DESENHO Vai desenhar através do comando LINE e opção final Close (command "line" pt2 pt3 pt4 "c" pt4 b pt2 pt3 AutoLISP - Programas Exemplo 2009@JST/JOF 3 2º Exemplo - Porta Desenvolva um programa em AutoLISP que permita criar a figura junta e traçar as linhas a traço misto. Considere que as linhas a traço misto ultrapassam a figura em 5mm. (O utilizador define a largura, a altura e o ponto pt0. 5 pt8 pt4 pt3 a pt6 pt0 pt5 pt2 pt7 b AutoLISP - Programas Exemplo 2009@JST/JOF 4 JST/JOF 2

2º Exemplo - Porta Programa para desenhar uma Porta de arco através de: Centro inferior, largura e altura direita. jof-92-11-25 pt8 (Defun c:porta( pt3 5 LEITURA vai ler os valores (setq a (getreal "\nlargura da porta : " (setq b (getreal "\naltura direita da porta : " pt4 (setq pt0 (getpoint "\nponto Central inferior : " a CÁLCULOS vai calcular outros pontos necessários ao desenho da figura (setq a2 (/ a 2 (setq pi2 (/ pi 2 (setq (polar pt0 0 a2 (setq pt2 (polar pi2 b (setq pt4 (polar pt0 pi a2 (setq pt3 (polar pt4 pi2 b pt6 pt0 pt5 pt7 pt2 b AutoLISP - Programas Exemplo 2009@JST/JOF 5 2º Exemplo - Porta (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 o layer e desenha (command "layer" "m" "TG" "" (command "line" pt3 pt4 pt2 "" "arc" "" pt3 Arco contínuo (command "layer" "m" "tm" "" (command "line"" pt5 pt6 "" "line" pt7 pt8 "" 5 pt8 pt3 pt4 a pt6 pt0 pt5 pt2 pt7 b AutoLISP - Programas Exemplo 2009@JST/JOF 6 JST/JOF 3

3º Exemplo Porta com Cotagem O mesmo programa do 2º exemplo, mas com a introdução de cotas. Programa para desenhar uma Porta de arco através de: Centro inferior, largura e altura direita. jof-92-11-25 (Defun c:porta( pt8 pt3 LEITURA 5 vai ler os valores (setq a (getreal "\nlargura da porta : " (setq b (getreal "\naltura direita da porta : " (setq pt0 (getpoint "\nponto Central inferior : " pt4 CÁLCULOS vai calcular outros pontos necessários ao desenho (setq a2 (/ a 2 a pt6 pt0 pt5 pt7 pt2 b AutoLISP - Programas Exemplo 2009@JST/JOF 7 3º Exemplo Porta com Cotagem (setq pi2 (/ pi 2 (setq (polar pt0 0 a2 (setq pt2 (polar 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 pt2 "" "arc" "" pt3 Arco contínuo pt8 pt3 5 pt4 a pt6 pt0 pt5 pt7 pt2 b AutoLISP - Programas Exemplo 2009@JST/JOF 8 JST/JOF 4

3º Exemplo Porta com Cotagem (command "layer" "m" "tm" "" (command "line" pt5 pt6 "" "line"" pt7 pt8 "" realização da cotagem 5 (command "layer" "m" "cotas" "" (command "dim" hor pt4 (polar (- pi2 10 (rtos (distance pt4 2 0 ver pt2 (polar 0 10 (rtos (distance pt2 2 0 exit pt8 pt3 pt4 (2 decimal, 0 casas decimais a pt6 pt0 pt5 pt7 pt2 b AutoLISP - Programas Exemplo 2009@JST/JOF 9 Desenvolva um programa em AutoLISP que permita criar a figura junta (cabeça hexagonal dum parafuso, através da opção da vista pretendida, ilog. Tenha em atenção que será necessário definir o ponto pt0, a dimensão nominal da rosca d, o comprimento L e o ângulo da direcção do corpo do parafuso alfa. Os valores de p, s, lmax e lmin são lidos dum ficheiro, em que existirá uma linha com toda a informação necessária a cada diâmetro nominal. pt3 pt2 pt4 pt5 pt6 s pt7 pt0 e pt8 30º 3 pt9 0 1 2 fl k AutoLISP - Programas Exemplo 2009@JST/JOF 10 JST/JOF 5

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.,30 4,0.7,7., 2.8,8.,25.,40.,40 5,0.8,8., 3.5,10.,25.,50.,50 6,1.,10., 4.,12.,30.,60.,60 8,1.25,13., 5.3,16.,35.,80.,80 10,1.5,17., 6.4,20.,40.,100.,100 12,1.75,19., 7.5,25.,45.,100.,120 14,2.,22., 8.88,30.,50.,100.,140 16,2.,24.,10.,35.,55.,100.,160 20,2.5,30.,22.5,40.,65.,100.,200 24,3.,36.,15.,40.,80.,100.,240 30,3.5,46.,18.7,40.,90.,100.,300 36,4.,55.,22.5,40.,110.,100.,360 AutoLISP - Programas Exemplo 2009@JST/JOF 11 Programa para desenho da cabeça do parafuso hexagonal alfa = 0 corresponde a desenhar corpo para a direita (defun c:paraf( (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 (initget 1 não admite resposta nula AutoLISP - Programas Exemplo 2009@JST/JOF 12 JST/JOF 6

(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 (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 -1 AutoLISP - Programas Exemplo 2009@JST/JOF 13 (while (= linha nil while para leitura da tabela (setq f (open "parafhex.dat" "r" dif 0. ierro 0 (if (= f nil (prompt "\nficheiro parafhex.dat não encontrado!" (setq lixo (getstring "\nintroduza ENTER : " ierro 1 ficheiro não existe linha "1 AutoLISP - Programas Exemplo 2009@JST/JOF 14 JST/JOF 7

vai processar (initget (+ 1 2 4 não permite que d seja vazio, nulo ou negativo (setq d (getreal "\nqual a dimensão do Parafuso - M...- :" (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 listd (append listd (list dif guarda diâmetro lido i (+ i 1 (setq dif d senão ierro 2 diâmetro não encontrado AutoLISP - Programas Exemplo 2009@JST/JOF 15 (close f (if (= ierro 2 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 -1 dif 0.0 fim do if do ierro 2 AutoLISP - Programas Exemplo 2009@JST/JOF 16 JST/JOF 8

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 então1 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 AutoLISP - Programas Exemplo 2009@JST/JOF 17 (if (/= ilog "3" controla o comprimento se não for a vista de cima então2 (if (< L lmax2 (if (> L lmin1 então3 (setq op 1 então4 (setq op 3 senão4 (setq op 2 senão3 (if (equal op 2 (prompt p "\ncomprimento demasiado longo." (if (equal op 3 (prompt "\ncomprimento demasiado curto." AutoLISP - Programas Exemplo 2009@JST/JOF 18 JST/JOF 9

(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 então2 (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" então3 definição de pontos AutoLISP - Programas Exemplo 2009@JST/JOF 19 (setq (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 pi (- k fl (setq 2 (polar pt0 (- pi2 (/ e 2 (setq 3 (polar pt0 (- pi2 (/ e 4 (setq pt8 (polar 3 pi (- k fl (setq pt9 (polar pt7 (- pi2 i2(/(* (* e 38 (setq 0 (polar pt7 (- pi2 (/ s 2 (setq 1 (polar 2 pi (- k fl vai agora desenhar parafuso AutoLISP - Programas Exemplo 2009@JST/JOF 20 JST/JOF 10

(command "arc" (rot pt3 (rot pt5 (rot pt6 "arc" (rot pt6 (rot pt7 (rot pt8 "arc" (rot pt8 (rot pt9 (rot 1 "line" pt3 pt2 pt4 pt5 pt6 s pt7 pt0 e pt8 30º 3 pt9 0 1 2 fl k AutoLISP - Programas Exemplo 2009@JST/JOF 21 (rot 2 (rot pt2 (rot pt3 (rot pt4 (rot 0 (rot 1 "c" "line" (rot (rot pt6 "" "line" (rot 3 (rot pt8 pt3 pt2 pt4 pt5 pt6 s pt7 pt0 e pt8 30º 3 pt9 0 1 2 fl k AutoLISP - Programas Exemplo 2009@JST/JOF 22 JST/JOF 11

"" falta corpo (if (= ilog "2" senão3 ilog 2 - parafuso com duas faces (prompt "\nainda não implementado!" então4 senão4 ilog 3 - desenho do parafuso em outra vista (setq (polar pt0 alfa (/ e 2 pt2 (polar pt0 (+ (/ pi 3 alfa (/ e 2 AutoLISP - Programas Exemplo 2009@JST/JOF 23 (command "zoom" "a" (command "line" pt2 "" "array" (entlast "" "p" pt0 6 360 "" "circle" AutoLISP - Programas Exemplo 2009@JST/JOF 24 JST/JOF 12

pt0 (/ s 2 fim do else do if de ilog = 2, ilog = 3 fim do if de ilog = 2 fim do if de ilog = 1 fim do if de op = 1 fim da abertura do if de ierro = 0 (prompt "\no diâmetro introduzido não existe no ficheiro!" senão1 fim do if de ierro = 0 (command "layer" "m" olay "" repor estado anterior (setvar "osmode" oosnap AutoLISP - Programas Exemplo 2009@JST/JOF 25 (setvar "blipmode" oblip (setvar "cmdecho" oecho 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 AutoLISP - Programas Exemplo 2009@JST/JOF 26 JST/JOF 13

5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular Exemplo de um programa em AutoLISP, para geração e planificação de uma superfície de ligação entre um tubo de secção quadrada e um tubo de secção circular, com os seus eixos na direcção de Z e concêntricos. A geração é obtida pela triangularização da respectiva superfície, como é tecnicamente proposto em termos de planificação. b X pt2 pc pt0 Y L h pt3 Exemplo com 3 divisões por quadrante AutoLISP - Programas Exemplo 2009@JST/JOF 27 5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular pc h ptp0 ptp0 ap ap ap1 pt0 L3 ap1 L2 b X pt2 Y L pt3 Exemplo com 3 divisões por quadrante L1 ptp1 AutoLISP - Programas Exemplo 2009@JST/JOF 28 JST/JOF 14

5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular (Defun C:Chamin( (setvar "blipmode" 0 (setvar "cmdecho" " 0 (setvar "osmode" 0 Leitura das grandezas significativas (initget (+ 1 2 (setq h (getreal "\naltura: " (initget (+ 1 2 4 (setq b (getreal "\nlargura da chaminé: " (initget (+ 124 (setq l (getreal "\ncomprimento da chaminé: " (initget (+ 1 2 4 (setq d (getreal "\ndiâmetro da saída: " (initget (+ 1 2 4 AutoLISP - Programas Exemplo 2009@JST/JOF 29 5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular (setq n (getint "\nnº de divisão por quadrante: " Localização das figuras (initget it t 1 (setq pt0 (getpoint "\nponto de fixação da representação 3D: " (initget 1 (setq ptp0 (getpoint "\nponto de fixação da Planificação 2D: " Cálculo de pontos particulares (centro da saída circular e cantos do rectângulo (setq pc (list (+ (car pt0 (/ l 2 (+ (cadr pt0 (/ b 2 (+ (caddr pt0 h (setq (polar pt0 0 l AutoLISP - Programas Exemplo 2009@JST/JOF 30 JST/JOF 15

5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular (setq pt2 (polar (/ pi 2 b (setq pt3 (polar pt0 (/ pi 2 b (setq i 1 contador de quadrantes (setq da (/ pi 2 n incremento angular (setq a 0.0 ângulo inicial (setq r (/ d 2 (setq ap (- (/ pi 2 planificação (ângulo inicial considerado de -90º (while (<= i4 ciclo while sobre os quatro quadrantes (if (= i 1 inicialização de cada quadrante (setq pt0c (setq ptc pt2 AutoLISP - Programas Exemplo 2009@JST/JOF 31 5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular (if (= i 2 (setq pt0c pt2 (setq ptc pt3 (if (= i 3 (setq pt0c pt3 (setq ptc pt0 AutoLISP - Programas Exemplo 2009@JST/JOF 32 JST/JOF 16

5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular (if (= i 4 (setq pt0c pt0 (setq ptc 1º do triângulo de bico para cima (setq ptcc0 (polar pc a r (command "3dface" pt0c ptc ptcc0 "" "" (setq l1 (distance pt0c ptc (setq l2 (distance ptc ptcc0 (setq l3 (distance pt0c ptcc0 (setq ap1 (alftri l1 l2 l3 alftri função definida no fim Define triângulo de bico para cima na planificação em XY AutoLISP - Programas Exemplo 2009@JST/JOF 33 5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular (command "3dface" ptp0 (polar ptp0 ap l3 (polar ptp0 (+ ap ap1 l2 "" "" (setq ap (+ ap ap1 (setq j 1 contador de divisões do quadrante (while (<= jn ciclo sobre cada quadrante para (setq a (+ a da (setq ptcc1 (polar pc a r triangularizar AutoLISP - Programas Exemplo 2009@JST/JOF 34 JST/JOF 17

5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular (command "3dface" ptcc0 ptc ptcc1 "" "" Define triângulo no espaço (setq l1 (distance ptcc0 ptcc1 (setq l2 (distance ptcc0 ptc (setq l3 (distance ptcc1 ptc (setq ap1 (alftri l1 l2 l3 (setq ptp1 (polar ptp0 ap l2 Desenha triângulo na planificação em XY (command "3dface" ptp0 ptp1 (polar ptp1 (- ap ap1 pi l3 "" "" AutoLISP - Programas Exemplo 2009@JST/JOF 35 5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular (setq ptp0 (polar ptp1 (- ap ap1 pi l3 (setq ap (- ap ap1 (setq ptcc0 ptcc1 (setq j (+ j 1 Fim do while em j (setq i (+ i 1 Fim do while em i (setvar "blipmode" 1 Fim do programa Executa a função ARCOS (arcocosseno (Defun Arcos (p / tg (if (= (abs p 1 (setq tg (/ (* pi (- 1 p 2 (setq tg (- (/ pi 2 (atan (/ p (sqrt (- 1 (* p p AutoLISP - Programas Exemplo 2009@JST/JOF 36 JST/JOF 18

5º Exemplo Planificação de Superfície ligação Tubo Redondo/Rectangular (setq tg tg Aplica a lei dos cossenos a um triângulo (Defun Alftri (l1 l2 l3 / p a (setq p (/ (- (+ (* l2 l2 (* l3 l3 (* l1 l1 l2 l3 2 (setq a (arcos p arcos função definida anteriormente AutoLISP - Programas Exemplo 2009@JST/JOF 37 6º Exemplo Engrossamento de linhas do LAYER TG Programa para engrossamento do traço das entidades d PLINE, LINE, ARC e CIRCLE, transformado-as em PLINE com uma determinada espessura. AutoLISP - Programas Exemplo 2009@JST/JOF 38 JST/JOF 19

6º Exemplo Engrossamento de linhas do LAYER TG Programa para transformação de entidades "LINE", "ARC" e "CIRCLE associadas ao layer TLAYER, em PLINE com espessura TESP e alterar a espessura de qualquer POLYLINE em TLAYER para TESP Joaquim O. Fonseca - DEMEGI/GDI - 1993/11/10 ************************************************************************ (defun c:espestg( guarda valores de variáveis de ambiente (setq olay (getvar "clayer" (setq odecho (getvar "cmdecho" AutoLISP - Programas Exemplo 2009@JST/JOF 39 6º Exemplo Engrossamento de linhas do LAYER TG (setvar "cmdecho" 0 (setvar "blipmode" 0 (command "osnap"" "none"" anula qualquer modo OSNAP permanente define o layer a alterar e qual a espessura (setq tlayer "TG" (setq tesp 0.4 Processa primeiro POLYLINE, senão repetiria o processamento das outras entidades, entretanto transformadas em POLYLINE cria lista com todas as entidades do desenho que satisfazem o "filtro definido 8=apontador do "layer" e 0=apontador do tipo AutoLISP - Programas Exemplo 2009@JST/JOF 40 JST/JOF 20

6º Exemplo Engrossamento de linhas do LAYER TG (setq ss1 (ssget "X" (list (cons 8 tlayer (cons 0 lwpolyline" (if (/= ss1 nil (setq ne (sslength ss1 (setq i 0 (while (< i ne (setq le (ssname ss1 i (command "pedit" le "w" tesp "" (setq i (+ i 1 AutoLISP - Programas Exemplo 2009@JST/JOF 41 6º Exemplo Engrossamento de linhas do LAYER TG Processa LINE (setq ss1 (ssget "X" (list (cons 8 tlayer (cons 0 "line" (if (/= ss1 nil (setq ne (sslength ss1 (setq i 0 (while (< i ne (setq le (ssname ss1 i (command "pedit" le "" "w" tesp "" (setq i (+ i 1 AutoLISP - Programas Exemplo 2009@JST/JOF 42 JST/JOF 21

6º Exemplo Engrossamento de linhas do LAYER TG Processa ARC (setq ss1 (ssget "X" (list (cons 8 tlayer (cons 0 "arc" (if (/= ss1 nil (setq ne (sslength ss1 (setq i 0 (while (< i ne (setq le (ssname ss1 i (command "pedit" le "" "w" tesp "" (setq i (+ i 1 AutoLISP - Programas Exemplo 2009@JST/JOF 43 6º Exemplo Engrossamento de linhas do LAYER TG Processa CIRCLE dividindo-o em dois arcos de POLYLINE (setq ss1 (ssget "X" (list (cons 8 tlayer (cons 0 "circle" (if (/= ss1 nil (setq ne (sslength ss1 (setq i 0 (command "layer" "s" tlayer "" (while (< i ne (setq le (ssname ss1 i (setq pt0 (cdr (assoc 10 (entget le centro (setq r (cdr (assoc 40 (entget le raio (command "erase le "" "pline (polar pt0 0 r "w tesp "a "ce pt0 (polar pt0 pi r "cl" AutoLISP - Programas Exemplo 2009@JST/JOF 44 JST/JOF 22

6º Exemplo Engrossamento de linhas do LAYER TG (setq i (+ i 1 (command "layer" "m" olay "" (setvar "blipmode" 1 (setvar "cmdecho" odecho AutoLISP - Programas Exemplo 2009@JST/JOF 45 7º Exemplo Polígono Regular e tracejado do seu interior Programa para construir um polígono regular com n número de lados e posteriormente o tracejado no seu interior. i (Defun C:poligono( (initget (+ 1 2 4 (setq n (getint "\nnº de lados: " (initget (+ 1 2 4 (setq r (getreal "Raio do círculo: " (setq pt0 (getpoint "Centro do polígono: " (setq ang (/ (* pi 2 n (command "LINE" (polar pt0 0 r (polar pt0 ang r "" AutoLISP - Programas Exemplo 2009@JST/JOF 46 JST/JOF 23

7º Exemplo Polígono Regular e tracejado do seu interior (setq e1 (entlast guarda a primeira entidade a processar no HATCH (command "ARRAY" "l" "" "p" " pt0 n 360 "y"" (command "HATCH" "u" 45 (/ r 5 "n" (while (/= e1 nil introduz no comando todas as entidades a partir (command e1 de e1 até à última desenhada (setq e1 (entnext e1 OBS.: e1 vai tomando o nome das sucessivas entidades (command "" fecha o comando HATCH AutoLISP - Programas Exemplo 2009@JST/JOF 47 JST/JOF 24