UNIVERSIDADE DO PORTO

Tamanho: px
Começar a partir da página:

Download "UNIVERSIDADE DO PORTO"

Transcrição

1 FACULDADE DE ENGENHARIA UNIVERSIDADE DO PORTO PROJECTO DA DISCIPLINA DE CONCEPÇÃO E FABRICO ASSISTIDOS POR COMPUTADOR Implementação do Desenho Automático de Cilindro com Carro Guiado e Mesas Deslizantes da SMC, Serie MY1M - Auto LISP - Sílvio Oliveira César Augusto Tiago Jorge Resende de Oliveira 2002/2003

2 ÌNDICE 1. Introdução ao Programa 3 2. Esquema do Programa 4 3. O Programa em Pormenor 6 4. Resultado Final Ficheiros do Programa Conclusão Bibliografia 66 Página 2 de 65

3 1. Introdução ao Programa A linguagem Lisp não tem uma história recente, ela foi criada no final dos anos 50 por John McCarthy, esta linguagem tem vindo a demonstrar inúmeras aplicações e desta cresceram outras linguagens de programação derivadas dês tal como Scheme, Java Prolog entre outras. A apenas nos interessa a sua aplicação em autocad mas pode se deduzir que esta linguagem tem grandes potencialidades. Esta linguagem está bem implementada no Autocad, com ela pode se realizar inúmeras tarefas que demorariam uma eternidade com uns simples clicks. A função em Autolisp realiza o desenho em perspectivas de frente e de topo e também a cotagem de um cilindro de ar comprimido. Propomo-nos a realizar uma função que irá correr em ambiente de Autocad que seja de fácil manuseamento e também que não apresente falhas que possam comprometer o bom funcionamento da função. Página 3 de 65

4 O 2. Esquema do Programa Programa Cilindro é constituído por uma estrutura principal e por funções auxiliares, funções essa que desempenham o principal papel na obtenção de escolhas feitas pelo utilizador, por dados inseridos através de ficheiros e também o cálculo de vários dados necessários à execução das funções de desenho do cilindro no ecrã. Vamos de seguida esquematizar o programa de uma forma muito simples para ajudar na compreensão do próximo capítulo da descrição detalhada de cada função. Início Localização do Programa Função CL:OBTERMODELO Função CL:OBTERVISTA Modelo Tamanho de Guia Ângulo de Rotação Vista Layer Traço Grosso Layer Traço Misto Layer Cotas Desenhar Cotas? Função CL:PONTOINICIAL Ponto Inicial Função CL:ESCOLHAS Fecha Ficheiros Vista Fim Página 4 de 65

5 Modelo Modelo Abre Ficheiro Abre Ficheiro Abre Ficheiro Abre Ficheiro Abre Ficheiro Abre Ficheiro MY1M25GF.txt MY1M32GF.txt MY1M40GF.txt MY1M25GT.txt MY1M32GT.txt MY1M40GT.txt Função CL:LERDADOS Função CL:LERDADOS Função CL:CALCULARF Função CL:CALCULART Função CL:DESENHARF Função CL:DESENHART Página 5 de 65

6 N 3. O Programa em Pormenor este capítulo irá ser analisado o programa Cilindro em pormenor. Todas as funções que compõem o programa irão ser analisadas e todos os comandos internos de maior dificuldade irão ser explicados. Isto será feito de uma forma contínua ao longo da análise. O programa está dividido em várias funções que estão espalhados por vários ficheiros dependendo da sua utilidade, por exemplo a função executável no AUTOCAD cilindro está no ficheiro cilmain.lsp pois é a principal, as funções CL:OBTERMODELO, CL:OBTERVISTA, CL:PONTOINSERCAO estão no ficheiro cil-io.lsp pois são funções de input e output como sugere o nome do ficheiro. Ainda existe o ficheiro cil-draw.lsp onde estão as funções de desenho e o ficheiro util.lsp onde estão localizadas todas as funções que são utilitárias ao programa. Agora vamos percorrer o programa de uma forma computorizada para perceber o desenrolar do programa: (alert "Para iniciar o programa escrever: Cilindro" (princ Quando carregamos o programa aparece um alerta para que de uma forma simples o utilizador se aperceba que é necessário escrever Cilindro na linha de comandos do AUTOCAD para iniciar a sua execução. O comando alert inicia uma pequena caixa de diálogo onde aparecerá Para iniciar o programa escrever: Cilindro. O comando princ serve para que não seja retornado nil na linha de comandos. (defun c:cilindro (/ opcao drive Início da função principal. O comando defun serve para declarar o início de uma função, depois o c:cilindro define o nome cilindro como um comando de AUTOCAD e por fim (/ opcao drive coloca as variáveis opcao e drive como variáveis locais. (initget 1 "S N"(prompt "\nestá a Correr o Programa do CD Original? (S/N" (setq opcao (getkword "\nas Opções Válidas São \"S\" ou \"N\"!! : " (if (= opcao "S" Página 6 de 65

7 (initget 1 "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"(PROMPT "Qual a Drive de CDROM? " (Setq drive (getkword "\nex: D -> " (setq loc (strcat drive":\\cilindro" ; Fim do IF (if (= opcao "N" (princ "Insira a Localização Completa do Programa. Ex: C:/Cilindro ->" (setq loc (getstring t ; Fim do if Neste bloco de instruções o programa irá perguntar ao utilizador se ele está a correr o programa do CD original, ao qual o utilizador só poderá digitar S ou N. Se o utilizador inserir N será pedido a localização completa do programa se for inserido S será pedido a drive do CDROM. Com o comando initget 1 "S N" restringe se a entrada de dados para S ou N e com o 1 impede se a utilização do ENTER para prosseguir o programa. Este mesmo comando é usado quando se pede o drive de CDROM em que são usadas todas as drives possíveis para CDROM. O comando strcat serve para juntar duas string s em uma só, muito útil para criar localizações de ficheiros. (vl-load-com Linha de comando que tem como objectivo carregar as extensões do Visual Lisp para o Autolisp. (if (setq cl_obtermodelo (cl:obtermodelo.. (princ "CANCELADO PELO UTILIZADOR" Vai associar à variável global cl_obtermodelo os valores que irão ser retornados pela função cl:obtermodelo. Se o utilizador carregar em CANCEL vai retornar a mensagem "CANCELADO PELO UTILIZADOR". Quando a função cl_obtermodelo é carregada passamos para dentro dessa função e percorremos essas linhas de código. (defun cl:obtermodelo (/ dcl_id temp cl_modelo tguia result UserClick dialogloaded dialogshow Página 7 de 65

8 Com esta linha começa-se a função cl:obtermodelo, e define-se como variáveis locais dcl_id temp cl_modelo tguia result UserClick dialogloaded dialogshow, ou seja servem como variáveis temporárias da função. (setq cl_modelo "MY1M25G" angulo 0.0 dialogloaded T dialogshow T Inicialização dos valores definidos por defeito para a caixa de diálogo. (setq temp "clmodelo.dcl" (if (= -1 (setq dcl_id (load_dialog temp (princ "\nclmodelo.dcl NÃO FOI CARREGADA COM ÊXITO " (setq dialogloaded nil É carregada a caixa de diálogo "clmodelo.dcl", se o ficheiro não for encontrado vai ser retornado uma mensagem de erro. O comando load_dialog carrega a caixa de diálogo, se a for bem sucedido retorna o valor 1 se pelo contrário encontrar erro retorna o valor -1, se o if for analisado com atenção compreende se o porquê, então, do -1. (if (and dialogloaded (not (new_dialog "cl_obtermodelo" dcl_id (princ "\nnão FOI POSSÍVEL CARREGAR A CAIXA DE DIALOGO CL_OBTERMODELO" (setq dialogshow nil Se a caixa de diálogo for carregada com sucesso, pode acontecer uma de duas coisas, ou a caixa é carregada sem erros, ou se a caixa de diálogo tiver erros no seu código vai retornar erro. Página 8 de 65

9 (if (and dialogloaded dialogshow (set_tile "cl_ang" (rtos angulo 2 2 (action_tile "cl_25" "(setq cl_modelo \"MY1M25G\"" (action_tile "cl_32" "(setq cl_modelo \"MY1M32G\"" (action_tile "cl_40" "(setq cl_modelo \"MY1M40G\"" (setq tguia '("100" "200" "300" "400" "500" "600" "700" "800" "900" "1000" "1100" "1200" "1300" "1400" "1500" "1600" "1700" "1800" "1900" "2000" "5000" ; Tamanhos Disponíveis Para a Guia (start_list "Tamanho da Guia" (mapcar ' add_list tguia (end_list (action_tile "cancel" "(done_dialog (setq UserClick nil" (action_tile "accept" (strcat " (setq tguia (atof (get_tile \"Tamanho da Guia\"" "(setq angulo (atof (get_tile \"cl_ang\"" "(done_dialog (setq UserClick T" Se a caixa de diálogo for carregada totalmente, vão decorrer uma série de operações que irão servir para retornar valores da caixa de diálogo. (set_tile "cl_ang" (rtos angulo 2 2 serve para atribuir à key "cl_ang", que corresponde a uma caixa de edição, um valor que será convertido de real para string no modo decimal (primeiro 2 com uma precisão de duas casas decimais (segundo 2. O action_tile refere se aos radio buttons da caixa de dialogo, vai atribuir a string, correspondente à selecção do utilizador à variável cl_modelo. Depois inicia uma lista com os valores possíveis do tamanho de guia disponíveis. É iniciada a lista da pop up referente à label "Tamanho da Guia" e de seguida atribui se a essa lista os valores correspondentes e por último fecha se a lista. Agora tem que se definir o que fazem os botões OK e Cancelar para que seja possível retirar as escolhas do utilizador da caixa de dialogo. Quando o utilizador carregar em Cancelar é executada a linha (action_tile "cancel" "(done_dialog (setq UserClick nil" que retira do ecrã a caixa de dialogo activa e atribui à variável UserClick o valor nil. Quando o utilizador carregar em OK é executada a linha (action_tile "accept" (strcat " (setq tguia (atof (get_tile \"Tamanho da Guia\"""(setq angulo (atof (get_tile \"cl_ang\"""(done_dialog (setq UserClick T" caixa de diálogo é retirada do ecrã e é atribuído à variável tguia um valor real que corresponde à posição da linha escolhida para tamanho de guia, e é retirado da Página 9 de 65

10 key "cl_ang" o valor que é uma string e que vai ser convertido num real e guardado na variável angulo. (start_dialog (Unload_dialog dcl_id Inicia a caixa de diálogo (Figura 1 em que irão ser utilizadas todas as declarações feitas anteriormente para definir os valores e acções de cada elemento da caixa de diálogo e após o término, ela é descarregada da memória. 1-Escolha de Modelo e Tamanho de Guia (if UserClick (setq tguia (cl:calculartguia tguia (setq angulo (Graus->Radianos angulo (setq Result (list (cons 86 angulo (cons 42 tguia (cons 4 cl_modelo Se o utilizador carregar no OK a variável tguia o valor que irá ser obtido pela função cl:calculartguia, que irá ser explicada mais à frente. O valor do ângulo irá ser convertido em radianos para futura utilização. Por fim irá ser construída uma lista de pares pontuados em que se vai associar um valor específico aos valores que foram obtidos por introdução do utilizador. Página 10 de 65

11 E voltamos novamente ao programa principal. (if (setq cl_obtervista (cl:obtervista.. (princ "ERRO OU CANCELADO PELO UTILIZADOR" Vai associar à variável global cl_obtervista os valores que irão ser retornados pela função cl:obtervista. Se o utilizador carregar em CANCEL vai retornar a mensagem "ERRO OU CANCELADO PELO UTILIZADOR". Quando a função cl:obtervista é carregada passamos para dentro dessa função e percorremos essas linhas de código. (defun cl:obtervista (/ dcl_id temp cl_vista dimen result Escolha angulo dialogloaded dialogshow tg tm dim novalayer tg1 tm1 dim1 Com esta linha começa-se a função cl:obtervista, e define-se como variáveis locais _id temp cl_vista dimen result Escolha angulo dialogloaded dialogshow tg tm dim novalayer tg1 tm1 dim1, ou seja servem como variáveis temporárias da função. (setq cl_vista "Vista de Frente" dialogloaded T dialogshow T Definição das variáveis iniciadas por defeito. (setq temp "clvista.dcl" (if (= -1 (setq dcl_id (load_dialog temp ;; Se Houver Problema - Mostra a Mensagem e coloca a variável ;; dialogloaded para nil = valor nulo (princ "\nclvista.dcl NÃO FOI CARREGADA COM ÊXITO " (setq dialogloaded nil ; fim do if Página 11 de 65

12 (if (and dialogloaded (not (new_dialog "cl_obtervista" dcl_id ;; Se Houver Problema... (princ "\nnão FOI POSSÍVEL CARREGAR A CAIXA DE DIALOGO CL_OBTERVISTA" (setq dialogshow nil ;fim do if Esta secção é idêntica à presente na função cl:obtermodelo visto isso, não é necessário nova explicação. (if (and dialogloaded dialogshow ;; Definir Acções à Caixa de Dialogo (action_tile "cl_fr" "(setq cl_vista \"Vista de Frente\"" (action_tile "cl_tp" "(setq cl_vista \"Vista de Topo\"" (setq tg (cl:layers (start_list "tg" ;;; Especifica o Nome da Lista (mapcar ' add_list tg ;;; Declara a Lista Que Contém a Lista tg Para a Caixa de Dialogo (end_list (setq tm (cl:layers (start_list "tm" ;;; Especifica o Nome da Lista (mapcar ' add_list tm ;;; Declara a Lista Que Contém a Lista tm Para a Caixa de Dialogo (end_list (setq dim (cl:layers (start_list "dim" ;;; Especifica o Nome da Lista (mapcar ' add_list dim ;;; Declara a Lista Que Contém a Lista dim Para a Caixa de Dialogo (end_list (action_tile "novalayer" "(done_dialog (setq Escolha 1";; Se for Carregado o Botão Definir Novas Layers Escolha=1 (action_tile "cancel" "(done_dialog (setq Escolha nil";; Se for Carregado o Botão Definir Cancelar Escolha=nil (action_tile "accept" (strcat " (setq tg (atof (get_tile \"tg\"";; Se for Carregado o Botão Definir OK Escolha=T (true Página 12 de 65

13 "(setq tm (atof (get_tile \"tm\"";; tg, tm e dim Tomam Um Valor Real Correspondente à Layer "(setq dim (atof (get_tile \"dim\"" "(setq dimen (atof (get_tile \"cl_dimensoes\"" "(done_dialog (setq Escolha T" (start_dialog (if (= Escolha 1 ;; Se o Botão Definir Novas Layers For Pressionado o Programa Segue Este Caminho (while (= Escolha 1 ;;; Enquanto se Carregar no Botão Definir Novas Layers, Redefine-se a Cx de Dialogo (Unload_dialog dcl_id ;;; Descarrega a Cx de Dialogo (initdia ;;; Inicializa a Utilização da Caixa de Dialogo Para o Comando Layer (command "layer" ;;; Inicializa a Caixa de Dialogo das Layers (setq temp (strcat loc"clvista.dcl" (setq dcl_id (load_dialog temp (new_dialog "cl_obtervista" dcl_id (action_tile "cl_fr" "(setq cl_vista \"Vista de Frente\"" (action_tile "cl_tp" "(setq cl_modelo \"Vista de Topo\"" (setq tg1 (cl:layers (start_list "tg" ;;; Especifica o Nome da Lista (mapcar ' add_list tg1 ;;; Declara a Lista Que Contém a Lista Para a Caixa de Dialogo (end_list (setq tm1 (cl:layers (start_list "tm" ;;; Especifica o Nome da Lista (mapcar ' add_list tm1 ;;; Declara a Lista Que Contém a Lista Para a Caixa de Dialogo (end_list (setq dim1 (cl:layers (start_list "dim" ;;; Especifica o Nome da Lista (mapcar ' add_list dim1 ;;; Declara a Lista Que Contém a Lista Para a Caixa de Dialogo (end_list (action_tile "novalayer" "(done_dialog (setq Escolha 1";; Se for Carregado o Botão Definir Novas Layers Escolha=1 (action_tile "cancel" "(done_dialog (setq Escolha nil";; Se for Carregado o Botão Definir Cancelar Escolha=nil (action_tile "accept" (strcat " (setq tg (atof (get_tile \"tg\"";; Se for Carregado o Botão Definir OK Escolha=T (true "(setq tm (atof (get_tile \"tm\"";; tg, tm e dim Tomam Um Valor Real Correspondente à Layer "(setq dim (atof (get_tile \"dim\"" "(setq dimen (atof (get_tile \"cl_dimensoes\"" "(done_dialog (setq Escolha T" (start_dialog Página 13 de 65

14 (Unload_dialog dcl_id (if Escolha ; Se o utilizador carregar em OK ;; Constroi se a seguinte lista (setq Result (list (cons 3 cl_vista ;;; Associa o Valor 3 à Vista a Ser Desenhada (cons 20 tg ;;; Associa o Valor 20 à Layer de Traço Grosso (cons 21 tm ;;; Associa o Valor 21 à Layer de Traço Misto (cons 22 dim ;;; Associa o Valor 22 à Layer das Cotas (cons 55 dimen ;;; Associa o Valor 55 à variável dimen Esta secção apesar de extensa é de simples compreensão, na função cl:obtermodelo foi explicado de uma forma simples e clara uma situação semelhante a esta, a diferença entre as duas é que nesta é necessário inicializar novamente a caixa de diálogo se o utilizador decidir criar novas layers o que faz com que sejam reiniciados todos os valores pois as listas de layers também mudam. Foram propositadamente deixados comentários para uma análise mais simples e rápida de um utilizador mais experiente assim é desnecessário voltar a trás para rever a explicação extensa da função cl:obtermodelo. Nesta função foi utilizada uma função cl:layers que será explicada mais tarde, esta função serve para obter todas as layers existentes no documento activo. A Figura 2 mostra a caixa de diálogo que é executada quando a função presente é executada. 2- Escolha da Vista a Desenhar Página 14 de 65

15 Termina se a função cl:obtervista e volta-se ao programa principal (if (setq cl_pontoinicial (cl:pontoinsercao.. (princ "ERRO: PONTO INCORRECTO OU NENHUM PONTO INSERIDO" Vai associar à variável global cl_pontoinicial os valores que irão ser retornados pela função cl:pontoinsercao. Se o utilizador carregar em CANCEL vai retornar a mensagem "ERRO: PONTO INCORRECTO OU NENHUM PONTO INSERIDO".. Quando a função cl: pontoinsercao é carregada passamos para dentro dessa função e percorremos essas linhas de código. (defun cl:pontoinsercao(/ pontoinicial (alert "Inserir o Ponto inicial através do Desktop do Autocad ou através da Command line" (if (setq pontoinicial (getpoint "\ninsira o Ponto Inicial para o Objecto: " (list (cons 10 pontoinicial ;;; Associa o Valor 10 ao Ponto Inicial Esta é uma função muito simples que serve apenas para o utilizador inserir um ponto para a inserção do desenho. A primeira linha declara o nome da função e a variável local utilizada. Depois é pedido para o utilizador inserir o ponto de inserção do desenho através do documento activo pela área de trabalho ou pela linha de comandos, se for escolhido a inserção por linha de comandos é de notar que entre as coordenadas devem ser separadas por vírgulas. Por fim cria-se um para pontuado associando o valor 10 ao ponto de inserção. Após termino desta função volta se à função principal. (cl:escolhas Página 15 de 65

16 A função cl:escolhas serve para direccionar as escolhas do utilizador, desenhar o que é para desenhar, como desenhar e onde desenhar. (defun cl:escolhas (/ temp temp1 ficheiro ;;;Define as Variáveis de Entrada de Dados (setq temp (cdr (assoc 3 cl_obtervista (if (= "Vista de Frente" temp ;;; Se For Escolhido Vista de Frente... (setq temp (cdr (assoc 4 cl_obtermodelo (if (= "MY1M25G" temp ;;; Se For Escolhido Modelo MY1M25G... (setq temp1 (strcat loc"\\my1m25gf.txt" (setq ficheiro (findfile temp1 (if (/= ficheiro nil (setq dados (open temp1 "r" (cl:lerdados ;;; Chama a Função Para Ler os Dados (cl:calcularf ;;; Chama a Função Para Calcular os Pontos do Desenho (cl:desenharf ;;; Chama a Função para Desenhar o Objecto (if (= ficheiro nil (alert "O Ficheiro MY1M25GF.txt NÃO foi encontrado verifique se ele se encontra na directoria correcta" (exit (if (= "MY1M32G" temp ;;; Se For Escolhido Modelo MY1M32G... (setq temp1 (strcat loc"\\my1m32gf.txt" (setq ficheiro (findfile temp1 (if (/= ficheiro nil (setq dados (open temp1 "r" (cl:lerdados ;;; Chama a Função Para Ler os Dados (cl:calcularf ;;; Chama a Função Para Calcular os Pontos do Desenho (cl:desenharf ;;; Chama a Função para Desenhar o Objecto (if (= ficheiro nil Página 16 de 65

17 (alert "O Ficheiro MY1M32GF.txt NÃO foi encontrado verifique se ele se encontra na directoria correcta" (exit (if (= "MY1M40G" temp ;;; Se For Escolhido Modelo MY1M40G... (setq temp1 (strcat loc"\\my1m40gf.txt" (setq ficheiro (findfile temp1 (if (/= ficheiro nil (setq dados (open temp1 "r" (cl:lerdados ;;; Chama a Função Para Ler os Dados (cl:calcularf ;;; Chama a Função Para Calcular os Pontos do Desenho (cl:desenharf ;;; Chama a Função para Desenhar o Objecto (if (= ficheiro nil (alert "O Ficheiro MY1M40GF.txt NÃO foi encontrado verifique se ele se encontra na directoria correcta" (exit ; Fim do if Vista de Frente (if (= "Vista de Topo" (cdr (assoc 3 cl_obtervista ;;; Se For Escolhido Vista de Frente... (setq temp (cdr (assoc 4 cl_obtermodelo (if (= "MY1M25G" temp ;;; Se For Escolhido Modelo MY1M25G... (setq temp1 (strcat loc"\\my1m25gt.txt" (setq ficheiro (findfile temp1 (if (/= ficheiro nil (setq dados (open temp1 "r" (cl:lerdados ;;; Chama a Função Para Ler os Dados (cl:calculart ;;; Chama a Função Para Calcular os Pontos do Desenho (cl:desenhart ;;; Chama a Função para Desenhar o Objecto Página 17 de 65

18 (if (= ficheiro nil (alert "O Ficheiro MY1M25GF.txt NÃO foi encontrado verifique se ele se encontra na directoria correcta" (exit (if (= "MY1M32G" temp ;;; Se For Escolhido Modelo MY1M32G... (setq temp1 (strcat loc"\\my1m32gt.txt" (setq ficheiro (findfile temp1 (if (/= ficheiro nil (setq dados (open temp1 "r" (cl:lerdados ;;; Chama a Função Para Ler os Dados (cl:calculart ;;; Chama a Função Para Calcular os Pontos do Desenho (cl:desenhart ;;; Chama a Função para Desenhar o Objecto (if (= ficheiro nil (alert "O Ficheiro MY1M32GF.txt NÃO foi encontrado verifique se ele se encontra na directoria correcta" (exit (if (= "MY1M40G" temp ;;; Se For Escolhido Modelo MY1M40G... (setq temp1 (strcat loc"\\my1m40gt.txt" (setq ficheiro (findfile temp1 (if (/= ficheiro nil (setq dados (open temp1 "r" (cl:lerdados ;;; Chama a Função Para Ler os Dados (cl:calculart ;;; Chama a Função Para Calcular os Pontos do Desenho (cl:desenhart ;;; Chama a Função para Desenhar o Objecto (if (= ficheiro nil Página 18 de 65

19 (alert "O Ficheiro MY1M40GF.txt NÃO foi encontrado verifique se ele se encontra na directoria correcta" (exit ; Fim do if Vista de Topo ; Fim da Função cl:escolhas A função cl:escolhas é outra função de grande extensão mas que é também de simples compreensão pois nesta função é onde as escolhas tomam sentido e interagem com o AUTOCAD. Esta Função começa por verificar qual a vista escolhida pelo utilizador se a "Vista de Frente" ou a "Vista de Topo". De seguida verifica o modelo escolhido se o de Ø 25, 32 ou o de 40. Estas opções tornam o programa extenso mas muito repetitivo. Dentro de cada opção existem três funções diferentes que têm como objectivo ler os dados do ficheiro respectivo ( cl:lerdados, calcular a localização do desenho ( cl:calculart, cl:calcularf e também desenhar o os objectos que constituem o cilindro ( cl:desenhart, cl:desenhart. Vamos analisar agora a função cl:lerdados, que é a primeira função chamada pela função cl:escolhas para começar a definição da peça propriamente dita. (defun cl:lerdados (/ temp (setq temp (cdr (assoc 3 cl_obtervista Nesta função começamos por declarar o nome que a função vai tomar e as variáveis locais que irão ser usadas, após essa linha, é definido como temp a vista que o utilizador escolheu e que se encontra na variável global cl_obtervista associada ao valor 3. (if (= "Vista de Frente" temp Página 19 de 65

20 Se a variável temp for igual a "Vista de Frente" então o programa executa: (setq pt1 (read-line dados (setq pt1 (cl:string->3dpt pt1 (setq pt2 (read-line dados (setq pt2 (cl:string->3dpt pt2 (setq pt3 (read-line dados (setq pt3 (cl:string->3dpt pt3 (setq pt4 (read-line dados (setq pt4 (cl:string->3dpt pt4 (setq pt5 (read-line dados (setq pt5 (cl:string->3dpt pt5 (setq pt6 (read-line dados (setq pt6 (cl:string->3dpt pt6 (setq pt7 (read-line dados (setq pt7 (cl:string->3dpt pt7 (setq pt8 (read-line dados (setq pt8 (cl:string->3dpt pt8 (setq pt9 (read-line dados (setq pt9 (cl:string->3dpt pt9 (setq pt10 (read-line dados (setq pt10 (cl:string->3dpt pt10 (setq pt11 (read-line dados (setq pt11 (cl:string->3dpt pt11 (setq pt12 (read-line dados (setq pt12 (cl:string->3dpt pt12 (setq pt13 (read-line dados (setq pt13 (cl:string->3dpt pt13 (setq pt14 (read-line dados (setq pt14 (cl:string->3dpt pt14 (setq pt15 (read-line dados Página 20 de 65

21 (setq pt15 (cl:string->3dpt pt15 (setq pt16 (read-line dados (setq pt16 (cl:string->3dpt pt16 (setq pt17 (read-line dados (setq pt17 (cl:string->3dpt pt17 (setq pt18 (read-line dados (setq pt18 (cl:string->3dpt pt18 (setq pt19 (read-line dados (setq pt19 (cl:string->3dpt pt19 (setq pt20 (read-line dados (setq pt20 (cl:string->3dpt pt20 (setq pt21 (read-line dados (setq pt21 (cl:string->3dpt pt21 (setq pt22 (read-line dados (setq pt22 (cl:string->3dpt pt22 (setq pt23 (read-line dados (setq pt23 (cl:string->3dpt pt23 (setq pt24 (read-line dados (setq pt24 (cl:string->3dpt pt24 (setq pt25 (read-line dados (setq pt25 (cl:string->3dpt pt25 (setq pt26 (read-line dados (setq pt26 (cl:string->3dpt pt26 (setq pt27 (read-line dados (setq pt27 (cl:string->3dpt pt27 (setq pt28 (read-line dados (setq pt28 (cl:string->3dpt pt28 (setq pt29 (read-line dados (setq pt29 (cl:string->3dpt pt29 (setq pt30 (read-line dados (setq pt30 (cl:string->3dpt pt30 (setq pt31 (read-line dados (setq pt31 (cl:string->3dpt pt31 (setq pt32 (read-line dados (setq pt32 (cl:string->3dpt pt32 Página 21 de 65

22 (setq pt33 (read-line dados (setq pt33 (cl:string->3dpt pt33 (setq pt34 (read-line dados (setq pt34 (cl:string->3dpt pt34 (setq pt35 (read-line dados (setq pt35 (cl:string->3dpt pt35 (setq pt36 (read-line dados (setq pt36 (cl:string->3dpt pt36 (setq D1 (read-line dados (setq D1 (atof D1 (setq D2 (read-line dados (setq D2 (atof D2 (setq D3 (read-line dados (setq D3 (atof D3 (setq D4 (read-line dados (setq D4 (atof D4 (setq sn (read-line dados (setq sn (atof sn Onde o programa vai ler linha por linha os valores que se encontram no ficheiro de dados e vai atribuir essa string a uma variável global que define o ponto ou o diâmetro de círculos ( Para perceber a posição de cada ponto no desenho ver o ficheiro desenho do cilindro manual em cad.dwg. Depois dessa atribuição vamos passar esses valores de uma string para uma lista de reais que vão definir as coordenadas nos eixos X,Y,Z. Para isso o programa vai utilizar uma função auxiliar criada para o efeito, essa função é a cl:string- >3dpt. A função auxiliar irá ser explicada em pormenor mais à frente. Esta sequência de comandos é repetida o número de vezes necessário para a definição de todos os pontos que constituem o desenho. (if (= "Vista de Topo" temp Se a variável temp não for igual a "Vista de Frente" então só poderá ser igual a "Vista de Topo", é para isso que serve a linhas de código acima. Visto isto o programa executa algo muito idêntico ao que executou na "Vista de Frente" mas com algumas diferenças que vamos ver de seguida: Página 22 de 65

23 (setq pt1 (read-line dados (setq pt1 (cl:string->3dpt pt1 (setq pt2 (read-line dados (setq pt2 (cl:string->3dpt pt2 (setq pt3 (read-line dados (setq pt3 (cl:string->3dpt pt3 (setq pt4 (read-line dados (setq pt4 (cl:string->3dpt pt4 (setq pt5 (read-line dados (setq pt5 (cl:string->3dpt pt5 (setq pt6 (read-line dados (setq pt6 (cl:string->3dpt pt6 (setq pt7 (read-line dados (setq pt7 (cl:string->3dpt pt7 (setq pt8 (read-line dados (setq pt8 (cl:string->3dpt pt8 (setq pt9 (read-line dados (setq pt9 (cl:string->3dpt pt9 (setq pt10 (read-line dados (setq pt10 (cl:string->3dpt pt10 (setq pt11 (read-line dados (setq pt11 (cl:string->3dpt pt11 (setq pt11m (list (car pt11 (* -1 (cadr pt (setq pt12 (read-line dados (setq pt12 (cl:string->3dpt pt12 (setq pt13 (read-line dados (setq pt13 (cl:string->3dpt pt13 (setq pt13m (list (car pt13 (* -1 (cadr pt (setq pt14 (read-line dados (setq pt14 (cl:string->3dpt pt14 (setq pt15 (read-line dados (setq pt15 (cl:string->3dpt pt15 (setq pt16 (read-line dados Página 23 de 65

24 (setq pt16 (cl:string->3dpt pt16 (setq pt17 (read-line dados (setq pt17 (cl:string->3dpt pt17 (setq pt18 (read-line dados (setq pt18 (cl:string->3dpt pt18 (setq pt19 (read-line dados (setq pt19 (cl:string->3dpt pt19 (setq pt20 (read-line dados (setq pt20 (cl:string->3dpt pt20 (setq pt21 (read-line dados (setq pt21 (cl:string->3dpt pt21 (setq pt22 (read-line dados (setq pt22 (cl:string->3dpt pt22 (setq pt23 (read-line dados (setq pt23 (cl:string->3dpt pt23 (setq pt24 (read-line dados (setq pt24 (cl:string->3dpt pt24 (setq pt25 (read-line dados (setq pt25 (cl:string->3dpt pt25 (setq pt26 (read-line dados (setq pt26 (cl:string->3dpt pt26 (setq pt27 (read-line dados (setq pt27 (cl:string->3dpt pt27 (setq pt28 (read-line dados (setq pt28 (cl:string->3dpt pt28 (setq pt29 (read-line dados (setq pt29 (cl:string->3dpt pt29 (setq pt30 (read-line dados (setq pt30 (cl:string->3dpt pt30 (setq pt31 (read-line dados (setq pt31 (cl:string->3dpt pt31 (setq pt32 (read-line dados (setq pt32 (cl:string->3dpt pt32 Página 24 de 65

25 (setq pt33 (read-line dados (setq pt33 (cl:string->3dpt pt33 (setq pt34 (read-line dados (setq pt34 (cl:string->3dpt pt34 (setq pt35 (read-line dados (setq pt35 (cl:string->3dpt pt35 (setq pt36 (read-line dados (setq pt36 (cl:string->3dpt pt36 (setq pt37 (read-line dados (setq pt37 (cl:string->3dpt pt37 (setq pt38 (read-line dados (setq pt38 (cl:string->3dpt pt38 (setq pt39 (read-line dados (setq pt39 (cl:string->3dpt pt39 (setq pt40 (read-line dados (setq pt40 (cl:string->3dpt pt40 (setq pt41 (read-line dados (setq pt41 (cl:string->3dpt pt41 (setq pt42 (read-line dados (setq pt42 (cl:string->3dpt pt42 (setq pt43 (read-line dados (setq pt43 (cl:string->3dpt pt43 (setq pt44 (read-line dados (setq pt44 (cl:string->3dpt pt44 (setq pt45 (read-line dados (setq pt45 (cl:string->3dpt pt45 (setq pt46 (read-line dados (setq pt46 (cl:string->3dpt pt46 (setq pt47 (read-line dados (setq pt47 (cl:string->3dpt pt47 (setq pt48 (read-line dados (setq pt48 (cl:string->3dpt pt48 (setq pt49 (read-line dados Página 25 de 65

26 (setq pt49 (cl:string->3dpt pt49 (setq pt50 (read-line dados (setq pt50 (cl:string->3dpt pt50 (setq pt51 (read-line dados (setq pt51 (cl:string->3dpt pt51 (setq pt52 (read-line dados (setq pt52 (cl:string->3dpt pt52 (setq pt53 (read-line dados (setq pt53 (cl:string->3dpt pt53 (setq pt54 (read-line dados (setq pt54 (cl:string->3dpt pt54 (setq pt55 (read-line dados (setq pt55 (cl:string->3dpt pt55 (setq pt56 (read-line dados (setq pt56 (cl:string->3dpt pt56 (setq pt57 (read-line dados (setq pt57 (cl:string->3dpt pt57 (setq pt58 (read-line dados (setq pt58 (cl:string->3dpt pt58 (setq pt59 (read-line dados (setq pt59 (cl:string->3dpt pt59 (setq pt60 (read-line dados (setq pt60 (cl:string->3dpt pt60 (setq pt75 (read-line dados (setq pt75 (cl:string->3dpt pt75 (setq pt80 (read-line dados (setq pt80 (cl:string->3dpt pt80 (setq pt80m (list (car pt80 (* -1 (cadr pt (setq pt97 (read-line dados (setq pt97 (cl:string->3dpt pt97 (setq pt97m (list (car pt97 (* -1 (cadr pt (setq pt98 (read-line dados (setq pt98 (cl:string->3dpt pt98 (setq D1 (read-line dados (setq D1 (atof D1 Página 26 de 65

27 (setq D2 (read-line dados (setq D2 (atof D2 (setq D3 (read-line dados (setq D3 (atof D3 (setq D4 (read-line dados (setq D4 (atof D4 A diferença entre os dois blocos de código apenas difere no número de pontos e no número de raios que são obtidos através dos ficheiros. Outra diferença é que aqui devido à utilização de só metade dos pontos necessários, faz se um mirror manual a alguns pontos devido à posição das linhas de cota. ( Para perceber a posição de cada ponto no desenho ver o ficheiro desenho do cilindro manual em cad2metade.dwg. Após a leitura dos ficheiros voltamos à função cl:escolhas e prosseguimos para o passo seguinte que é calcular a posição das linhas de cota, a localização do desenho no documento activo e também o acréscimo do tamanho de guia nos pontos em que isso é necessário. Para tal utilizam-se duas funções, cl:calculart, cl:calcularf, dependendo se o que irá ser desenhado for a "Vista de Frente" ou a "Vista de Topo". Vamos então analisar as duas funções, começando pela função cl:calcularf. (defun cl:calcularf (/ temp RanhuraFenda1 RanhuraFenda2 RanhuraFenda3 RanhuraFenda4 xptemp yptemp xptemp1 yptemp1 (setq temp (cdr (assoc 10 cl_pontoinicial A função começa a ser declarada pelo seu nome e também são declaradas as variáveis locais que são utilizadas no decorrer do programa. De seguida a variável temp toma o valor do ponto que está na variável global cl_pontoinicial e que está associada ao valor 10. (setq pt1 (somapontos pt1 temp (setq pt2 (somapontos2 pt2 temp (setq pt3 (somapontos2 pt3 temp (setq pt4 (somapontos2 pt4 temp (setq pt5 (somapontos2 pt5 temp (setq pt6 (somapontos pt6 temp Página 27 de 65

28 (setq pt7 (somapontos pt7 temp (setq pt8 (somapontos pt8 temp (setq pt9 (somapontos pt9 temp (setq pt10 (somapontos pt10 temp (setq pt11 (somapontos pt11 temp (setq pt12 (somapontos pt12 temp (setq pt13 (somapontos pt13 temp (setq pt14 (somapontos pt14 temp (setq pt15 (somapontos pt15 temp (setq pt16 (somapontos2 pt16 temp (setq pt17 (somapontos2 pt17 temp (setq pt18 (somapontos pt18 temp (setq pt19 (somapontos pt19 temp (setq pt20 (somapontos2 pt20 temp (setq pt21 (somapontos2 pt21 temp (setq pt22 (somapontos pt22 temp (setq pt23 (somapontos pt23 temp (setq pt24 (somapontos2 pt24 temp (setq pt25 (somapontos2 pt25 temp (setq pt26 (somapontos pt26 temp (setq pt27 (somapontos pt27 temp (setq pt28 (somapontos pt28 temp (setq pt29 (somapontos pt29 temp (setq pt30 (somapontos pt30 temp (setq pt31 (somapontos pt31 temp (setq pt32 (somapontos pt32 temp (setq pt33 (somapontos2 pt33 temp (setq pt34 (somapontos2 pt34 temp (setq pt35 (somapontos2 pt35 temp (setq pt36 (somapontos2 pt36 temp Neste bloco de código os pontos irão ser deslocados para o ponto de inserção dado pelo utilizador, para tal são usadas as funções auxiliares somapontos e somapontos2. A diferença nas funções, como iremos ver mais à frente na explicação das funções auxiliares, está na correcção do tamanho de guia por parte da função somapontos2, por isso ela só é aplicada a alguns pontos. (setq a120 (* (/ pi (setq a150 (* (/ pi (setq a300 (* (/ pi (setq a330 (* (/ pi (setq cos120 (cos a120 (setq sin120 (sin a120 (setq cos150 (cos a150 (setq sin150 (sin a150 (setq cos300 (cos a300 (setq sin300 (sin a300 Página 28 de 65

29 (setq cos330 (cos a330 (setq sin330 (sin a330 (setq RanhuraFenda1 (list (* D1 cos1 20 (* D1 sin (setq RanhuraFenda2 (list (* D1 cos150 (* D1 sin (setq RanhuraFenda3 (list (* D1 cos300 (* D1 sin (setq RanhuraFenda4 (list (* D1 cos330 (* D1 sin (setq pt37 (somapontos pt29 RanhuraFenda1 (setq pt38 (somapontos pt29 RanhuraFenda4 (setq pt39 (somapontos pt29 RanhuraFenda3 (setq pt40 (somapontos pt29 RanhuraFenda2 (setq pt41 (somapontos pt35 RanhuraFenda1 (setq pt42 (somapontos pt35 RanhuraFenda4 (setq pt43 (somapontos pt35 RanhuraFenda3 (setq pt44 (somapontos pt35 RanhuraFenda2 A "Vista de Frente" contém um parafuso vis to de topo, isso de inicio tornou se um problema pois a fenda tem uma inclinação e a fenda estar contida numa circunferência tornou se incomodo. Para contornar esse problema decidimos utilizar regras trigonométricas elementares para calcular a posição exacta dos pontos que irão definir as rectas da fenda. Portanto para fazermos isso calculamos os senos e co-senos de 4 ângulos, multiplicamos pelo raio e criamos pontos em forma de lista com 3 valores correspondentes aos eixos e por fim deslocamos os pontos para as posições correctas. (setq xptemp (car pt2 (setq xptemp (+ 2.0 xptemp (setq yptemp (cadr pt24 (setq yptemp1 (cadr pt25 (setq yptemp (+ yptemp1 yptemp (setq yptemp (/ yptemp 2.0 (setq pt45 (list xptemp yptemp 0.0 (setq xptemp (car pt1 (setq xptemp (- xptemp 2.0 (setq yptemp (cadr pt45. (setq pt46 (list xptemp yptemp 0.0 (setq xptemp (car pt27 (setq yptemp (cadr pt27 (setq yptemp (+ D2 yptemp (setq yptemp (+ yptemp 1. 0 (setq pt47 (list xptemp yptemp 0.0 (setq xptemp (car pt27 Página 29 de 65

30 (setq yptemp (cadr pt27 (setq yptemp (- yptemp D2 (setq yptemp (- yptemp 1.0 (setq pt48 (list xptemp yptemp 0.0 (setq xptemp (car pt27 (setq xptemp (- xptemp D2 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt27 (setq pt49 (list xptemp yptemp 0.0 (setq xptemp (car pt27 (setq xptemp (+ xptemp D2 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt27 (setq pt50 (list xptemp yptemp 0.0 (setq xptemp (car pt29 (setq yptemp (cadr pt29 (setq yptemp (+ D1 yptemp (setq yptemp (+ yptemp 1.0 (setq pt51 (list xptemp yptemp 0.0 (setq xptemp (car pt29 (setq yptemp (cadr pt29 (setq yptemp (- yptemp D1 (setq yptemp (- yptemp 1.0 (setq pt52 (list xptemp yptemp 0.0 (setq xptemp (car pt29 (setq xptemp (- xptemp D1 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt29 (setq pt53 (list xptemp yptemp 0.0 (setq xptemp (car pt29 (setq xptemp (+ xptemp D1 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt29 (setq pt54 (list xptemp yptemp 0.0 (setq xptemp (car pt28 (setq yptemp (cadr pt28 (setq yptemp (+ D2 yptemp (setq yptemp (+ yptemp 1.0 (setq pt55 (list xptemp yptemp 0.0 (setq xptemp (car pt28 (setq yptemp (cadr pt28 (setq yptemp (- yptemp D2 (setq yptemp (- yptemp 1.0 Página 30 de 65

31 (setq pt56 (list xptemp yptemp 0.0 (setq xptemp (car pt28 (setq xptemp (- xptemp D2 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt28 (setq pt57 (list xptemp yptemp 0.0 (setq xptemp (car pt28 (setq xptemp (+ xptemp D2 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt28 (setq pt58 (list xptemp yptemp 0.0 (setq xptemp (car pt30 (setq yptemp (cadr pt30 (setq yptemp (+ D4 yptemp (setq yptemp (+ yptemp 1.0 (setq pt59 (list xptemp ypt emp 0.0 (setq xptemp (car pt30 (setq yptemp (cadr pt30 (setq yptemp (- yptemp D4 (setq yptemp (- yptemp 1.0 (setq pt60 (list xptemp yptemp 0.0 (setq xptemp (car pt30 (setq xptemp (- xptemp D4 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt30 (setq pt61 (list xptemp yptemp 0.0 (setq xptemp (car pt30 (setq xptemp (+ xptemp D4 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt30 (setq pt62 (list xptemp yptemp 0.0 (setq xptemp (car pt31 (setq yptemp (cadr pt31 (setq yptemp (+ D4 yptemp (setq yptemp (+ yptemp 1.0 (setq pt63 (list xptemp ypt emp 0.0 (setq xptemp (car pt31 (setq yptemp (cadr pt31 (setq yptemp (- yptemp D4 (setq yptemp (- yptemp 1.0 (setq pt64 (list xptemp yptemp 0.0 (setq xptemp (car pt31 Página 31 de 65

32 (setq xptemp (- xptemp D4 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt31 (setq pt65 (list xptemp yptemp 0.0 (setq xptemp (car pt31 (setq xptemp (+ xptemp D4 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt31 (setq pt66 (list xptemp yptemp 0.0 (setq xptemp (car pt32 (setq yptemp (cadr pt32 (setq yptemp (+ D4 yptemp (setq yptemp (+ yptemp 1.0 (setq pt67 (list xptemp yptemp 0.0 (setq xptemp (car pt32 (setq yptemp (cadr pt32 (setq yptemp (- yptemp D4 (setq yptemp (- yptemp 1.0 (setq pt68 (list xptemp yptemp 0.0 (setq xptemp (car pt32 (setq xptemp (- xptemp D4 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt32 (setq pt69 (list xptemp yptemp 0.0 (setq xptemp (car pt32 (setq xptemp (+ xptemp D4 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt32 (setq pt70 (list xptemp yptemp 0.0 (setq xptemp (car pt33 (setq yptemp (cadr pt33 (setq yptemp (+ D2 yptemp (setq yptemp (+ yptemp 1.0 (setq pt71 (list xptemp yptemp 0.0 (setq xptemp (car pt33 (setq yptemp (cadr pt33 (setq yptemp (- yptemp D2 (setq yptemp (- yptemp 1.0 (setq pt72 (list xptemp yptemp 0.0 (setq xptemp (car pt33 (setq xptemp (- xptemp D2 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt33 Página 32 de 65

33 (setq pt73 (list xptemp yptemp 0.0 (setq xptemp (car pt33 (setq xptemp (+ xptemp D2 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt33 (setq pt74 (list xptemp yptemp 0.0 (setq xptemp (car pt34 (setq yptemp (cadr pt34 (setq yptemp (+ D3 yptemp (setq yptemp (+ yptemp 1.0 (setq pt75 (list xptemp yptemp 0.0 (setq xptemp (car pt34 (setq yptemp (cadr pt34 (setq yptemp (- yptemp D3 (setq yptemp (- yptemp 1.0 (setq pt76 (list xptemp yptemp 0.0 (setq xptemp (car pt34 (setq xptemp (- xptemp D3 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt34 (setq pt77 (list xptemp yptemp 0.0 (setq xptemp (car pt34 (setq xptemp (+ xptemp D3 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt34 (setq pt78 (list xptemp yptemp 0.0 (setq xptemp (car pt35 (setq yptemp (cadr pt35 (setq yptemp (+ D1 yptemp (setq yptemp (+ yptemp 1.0 (setq pt79 (list xptemp yptemp 0.0 (setq xptemp (car pt35 (setq yptemp (cadr pt35 (setq yptemp (- yptemp D1 (setq yptemp (- yptemp 1.0 (setq pt80 (list xptemp yptemp 0.0 (setq xptemp (car pt35 (setq xptemp (- xptemp D1 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt35 (setq pt81 (list xptemp yptemp 0.0 (setq xptemp (car pt35 Página 33 de 65

34 (setq xptemp (+ xptemp D1 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt35 (setq pt82 (list xptemp yptemp 0.0 (setq xptemp (car pt36 (setq yptemp (cadr pt36 (setq yptemp (+ D2 yptemp (setq yptemp (+ yptemp 1.0 (setq pt83 (list xptemp yptemp 0.0 (setq xptemp (car pt36 (setq yptemp (cadr pt36 (setq yptemp (- yptemp D2 (setq yptemp (- yptemp 1.0 (setq pt84 (list xptemp yptemp 0.0 (setq xptemp (car pt36 (setq xptemp (- xptemp D2 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt36 (setq pt85 (list xptemp yptemp 0.0 (setq xptemp (car pt36 (setq xptemp (+ xptemp D2 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt36 (setq pt86 (list xptemp yptemp 0.0 (setq e (/ (* sn Por fim apenas foi necessário calcular a posição dos traços mistos, para não sobrecarregarmos os ficheiros de dados com pontos desnecessários optamos por calcular automaticamente a posição dos pontos referentes ao traço misto. E é isto exactamente que este bloco de código faz, calcula a posição dos pontos dos traços mistos com base nos pontos dados pelo ficheiro de dados, ajustando se assim a cada caso automaticamente. E assim está definida a função cl:calcularf. A função seguinte não será explicada pois é idêntica à função cl:calcularf, as diferenças são mínimas e devem se à diferença na localização dos pontos que servem de base para a construção do desenho. (defun cl:calculart (/ temp xptemp yptemp (setq temp (cdr (assoc 10 cl_pontoinicial Página 34 de 65

35 (setq pt1 (somapontos pt1 temp (setq pt2 (somapontos pt2 temp (setq pt3 (somapontos pt3 temp (setq pt4 (somapontos pt4 temp (setq pt5 (somapontos pt5 temp (setq pt6 (somapontos pt6 temp (setq pt7 (somapontos pt7 temp (setq pt8 (somapontos pt8 temp (setq pt9 (somapontos pt9 temp (setq pt10 (somapontos pt10 temp (setq pt11 (somapontos2 pt11 temp (setq pt11m (somapontos2 pt11m temp (setq pt12 (somapontos2 pt12 temp (setq pt13 (somapontos2 pt13 temp (setq pt13m (somapontos2 pt13m temp (setq pt14 (somapontos2 pt14 temp (setq pt15 (somapontos2 pt15 temp (setq pt16 (somapontos2 pt16 temp (setq pt17 (somapontos pt17 temp (setq pt18 (somapontos pt18 temp (setq pt19 (somapontos pt19 temp (setq pt20 (somapontos pt20 temp (setq pt21 (somapontos pt21 temp (setq pt22 (somapontos pt22 temp (setq pt23 (somapontos pt23 temp (setq pt24 (somapontos pt24 temp (setq pt25 (somapontos pt25 temp (setq pt26 (somapontos pt26 temp (setq pt27 (somapontos pt27 temp (setq pt28 (somapontos pt28 temp (setq pt29 (somapontos pt29 temp (setq pt30 (somapontos pt30 temp (setq pt31 (somapontos pt31 temp (setq pt32 (somapontos pt32 temp (setq pt33 (somapontos pt33 temp (setq pt34 (somapontos pt34 temp (setq pt35 (somapontos pt35 temp (setq pt36 (somapontos pt36 temp (setq pt37 (somapontos pt37 temp (setq pt38 (somapontos pt38 temp (setq pt39 (somapontos pt39 temp (setq pt40 (somapontos pt40 temp (setq pt41 (somapontos pt41 temp (setq pt42 (somapontos pt42 temp (setq pt43 (somapontos pt43 temp (setq pt44 (somapontos pt44 temp (setq pt45 (somapontos2 pt45 temp (setq pt46 (somapontos2 pt46 temp (setq pt47 (somapontos2 pt47 temp (setq pt48 (somapontos2 pt48 temp (setq pt49 (somapontos2 pt49 temp Página 35 de 65

36 (setq pt50 (somapontos2 pt50 temp (setq pt51 (somapontos2 pt51 temp (setq pt52 (somapontos2 pt52 temp (setq pt53 (somapontos2 pt53 temp (setq pt54 (somapontos2 pt54 temp (setq pt55 (somapontos2 pt55 temp (setq pt56 (somapontos2 pt56 temp (setq pt57 (somapontos pt57 temp (setq pt58 (somapontos pt58 temp (setq pt59 (somapontos pt59 temp (setq pt60 (somapontos pt60 temp (setq pt75 (somapontos pt75 temp (setq pt80 (somapontos pt80 temp (setq pt80m (somapontos pt80m temp (setq pt97 (somapontos2 pt97 temp (setq pt97m (somapontos2 pt97m temp (setq pt98 (somapontos2 pt98 temp (setq xptemp (car pt1 (setq xptemp (- xptemp 2.0 (setq yptemp (cadr pt1 (setq pt61 (list xptemp yptemp 0.0 (setq xptemp (car pt16 (setq xptemp (+ xptemp 2.0 (setq yptemp (cadr pt16 (setq pt62 (list xptemp yptemp (setq xptemp (car pt59 (setq yptemp (cadr pt59 (setq yptemp (+ D3 yptemp (setq yptemp (+ yptemp 1.0 (setq pt63 (list xptemp yptemp 0.0 (setq xptemp (car pt59 (setq yptemp (cadr pt59 (setq yptemp (- yptemp D3 (setq yptemp (- yptemp 1.0 (setq pt64 (list xptemp yptemp 0.0 (setq xptemp (car pt60 (setq yptemp (cadr pt60 (setq yptemp (+ D3 yptemp (setq yptemp (+ yptemp 1.0 (setq pt65 (list xptemp yptemp 0.0 (setq xptemp (car pt60 (setq yptemp (cadr pt60 (setq yptemp (- yptemp D3 (setq yptemp (- yptemp 1.0 Página 36 de 65

37 (setq pt66 (list xptemp yptemp 0.0 (setq xptemp (car pt58 (setq yptemp (cadr pt58 (setq yptemp (+ D3 yptemp (setq yptemp (+ yptemp 1.0 (setq pt67 (list xptemp yptemp 0.0 (setq xptemp (car pt58 (setq yptemp (cadr pt58 (setq yptemp (- yptemp D3 (setq yptemp (- yptemp 1.0 (setq pt68 (list xptemp yptemp 0.0 (setq xptemp (car pt58 (setq xptemp (- xptemp D3 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt58 (setq pt69 (list xptemp yptemp 0.0 (setq xptemp (car pt58 (setq xptemp (+ xptemp D3 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt58 (setq pt70 (list xptemp yptemp 0.0 (setq xptemp (car pt57 (setq yptemp (cadr pt57 (setq yptemp (+ D1 yptemp (setq yptemp (+ yptemp 1.0 (setq pt71 (list xptemp yptemp 0.0 (setq xptemp (car pt57 (setq yptemp (cadr pt57 (setq yptemp (- yptemp D1 (setq yptemp (- yptemp 1.0 (setq pt72 (list xptemp yptemp 0.0 (setq xptemp (car pt57 (setq xptemp (- xptemp D1 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt57 (setq pt73 (list xptemp yptemp 0.0 (setq xptemp (car pt57 (setq xptemp (+ xptemp D1 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt57 (setq pt74 (list xptemp yptemp 0.0 (setq xptemp (car pt75 Página 37 de 65

38 (setq yptemp (cadr pt75 (setq yptemp (+ D4 yptemp (setq yptemp (+ yptemp 1.0 (setq pt76 (list xptemp yptemp 0.0 (setq xptemp (car pt75 (setq yptemp (cadr pt75 (setq yptemp (- yptemp D4 (setq yptemp (- yptemp 1.0 (setq pt77 (list xptemp yptemp 0.0 (setq xptemp (car pt75 (setq xptemp (- xptemp D4 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt75 (setq pt78 (list xptemp yptemp 0.0 (setq xptemp (car pt75 (setq xptemp (+ xptemp D4 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt75 (setq pt79 (list xptemp yptemp 0.0 (setq xptemp (car pt80 (setq yptemp (cadr pt80 (setq yptemp (+ D4 yptemp (setq yptemp (+ yptemp 1.0 (setq pt81 (list xptemp yptemp 0.0 (setq xptemp (car pt80 (setq yptemp (cadr pt80 (setq yptemp (- yptemp D4 (setq yptemp (- yptemp 1.0 (setq pt82 (list xptemp ypt emp 0.0 (setq xptemp (car pt80 (setq xptemp (- xptemp D4 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt80 (setq pt83 (list xptemp yptemp 0.0 (setq xptemp (car pt80 (setq xptemp (+ xptemp D4 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt80 (setq pt84 (list xptemp yptemp 0.0 (setq xptemp (car pt98 (setq yptemp (cadr pt98 (setq yptemp (+ D3 yptemp (setq yptemp (+ yptemp 1.0 Página 38 de 65

39 (setq pt85 (list xptemp yptemp 0.0 (setq xptemp (car pt98 (setq yptemp (cadr pt98 (setq yptemp (- yptemp D3 (setq yptemp (- yptemp 1.0 (setq pt86 (list xptemp yptemp 0.0 (setq xptemp (car pt98 (setq xptemp (- xptemp D3 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt98 (setq pt87 (list xptemp yptemp 0.0 (setq xptemp (car pt98 (setq xptemp (+ xptemp D3 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt98 (setq pt88 (list xptemp yptemp 0.0 (setq xptemp (car pt55 (setq yptemp (cadr pt55 (setq yptemp (+ D3 yptemp (setq yptemp (+ yptemp 1.0 (setq pt89 (list xptemp yptemp 0.0 (setq xptemp (car pt55 (setq yptemp (cadr pt55 (setq yptemp (- yptemp D3 (setq yptemp (- yptemp 1.0 (setq pt90 (list xptemp yptemp 0.0 (setq xptemp (car pt56 (setq yptemp (cadr pt56 (setq yptemp (+ D3 yptemp (setq yptemp (+ yptemp 1.0 (setq pt91 (list xptemp yptemp 0.0 (setq xptemp (car pt56 (setq yptemp (cadr pt56 (setq yptemp (- yptemp D3 (setq yptemp (- yptemp 1.0 (setq pt92 (list xptemp yptemp 0.0 (setq xptemp (car pt97 (setq yptemp (cadr pt97 (setq yptemp (+ D1 yptemp (setq yptemp (+ yptemp 1.0 (setq pt93 (list xptemp yptemp 0.0 (setq xptemp (car pt97 Página 39 de 65

40 (setq yptemp (cadr pt97 (setq yptemp (- yptemp D1 (setq yptemp (- yptemp 1.0 (setq pt94 (list xptemp yptemp 0.0 (setq xptemp (car pt97 (setq xptemp (- xptemp D1 (setq xptemp (- xptemp 1.0 (setq yptemp (cadr pt97 (setq pt95 (list xptemp yptemp 0.0 (setq xptemp (car pt97 (setq xptemp (+ xptemp D1 (setq xptemp (+ xptemp 1.0 (setq yptemp (cadr pt97 (setq pt96 (list xptemp yptemp 0.0 Estas duas últimas funções não são utilizadas em simultâneo, porque não é necessário definir os pontos da "Vista de Frente" quando se vai desenhar a "Vista de Topo" e vice versa. Quando estas funções terminam o programa volta à função cl:escolhas e passa para as funções de desenhar, ou seja passa para as funções ( cl:desenharf, cl:desenhart, dependendo se vai desenhar a "Vista de Frente" ou a "Vista de Topo". Vamos agora analisar a função cl:desenharf, depois desta verificamos a cl:desenhart (defun cl:desenharf (/ temp temp1 tg tm dim dimen layer pt99 dim13m dim14m snapvar orthovar osvar ang cmdvar actlayer hexagono hexagono1 (cotaf (setq ang (cdr (assoc 86 cl_obtermodelo (setq cmdvar (getvar "cmdecho (setvar "cmdecho" 0 (setq osvar (getvar "osmode" (setvar "osmode" 0 (setq orthovar (getvar "orthomode" (setvar "orthomode" 0 (setq snapvar (getvar "snapmode" (setvar "snapmode" 0 Começamos por definir a função e as suas variáveis. Para desenhar temos de voltar a trás para buscar variáveis necessárias para o efeito. Então Página 40 de 65

41 começamos por definir a variável ang como o ângulo de rotação do objecto, que foi associada ao valor 86 num par pontuado na variável cl_obtermodelo. A seguir definem-se os valores de sistema, que irão ser alteradas, que servirão para no fim voltar a p ô-las novamente como estavam inicialmente. acad-object (setq activedoc (active-document (setq temp (model-space Neste bloco de comandos são chamadas as funções para iniciar os comandos do ActiveX, as funções serão explicadas mais à frente. (setq actlayer (vla-get-activelayer activedoc ;;;Guarda a Layer Inicial (setq tg (cdr (assoc 20 cl_obtervista ;;; Indica a Layer Escolhida Para Traço Grosso (setq tg (fix tg ;;; Obtem um Valor Inteiro (setq layer (vla-get-layers activedoc ;;; Obtem a Layers (setq tg (vla-item layer tg ;;; Obtem a Layer Para Traço Grosso (vla-put-activelayer activedoc tg ;;; Define a Layer Para Traço Grosso Activa Temos de definir a layer com que irá ser desenhado as partes de traço grosso do objecto e guardar a layer inicial para no fim repô-la e é isso que se faz neste bloco, Para melhor compreensão basta ver os comentários do programa. (setq linha1 (vla-addline temp (vlax-3d-point pt1 (vlax-3d-point pt2 (setq linha2 (vla-addline temp (vlax-3d-point pt2 (vlax-3d-point pt3 (setq linha3 (vla-addline temp (vlax-3d-point pt3 (vlax-3d-point pt4 (setq linha4 (vla-addline temp (vlax-3d-point pt4 (vlax-3d-point pt5 (setq linha5 (vla-addline temp (vlax-3d-point pt5 (vlax-3d-point pt6 Comandos Repetidos Definem-Se as (setq linha6 (vla-addline temp (vlax-3d-point pt6 (vlax-3d-point pt7 Desenhar e Onde Desenhar (setq linha7 (vla-addline temp (vlax-3d-point pt7 (vlax-3d-point pt8 Utilizado o Comando VLA-ADDLINE (setq linha8 (vla-addline temp (vlax-3d-point pt8 (vlax-3d-point pt9 Acrescentada Uma Linha no ModelSpace ;;; Nestes ;;; o Que ;;; Qdo é ;;; É Página 41 de 65

42 (setq linha9 (vla-addline temp (vlax-3d-point pt9 (vlax-3d-point pt10 ;;; Com Um Certo Ponto Inicial e Um Ponto Final (setq linha10 (vla-addline temp (vlax-3d-point pt10 (vlax-3d-point pt11 ;;; Com o Comando VLA-ADDCIRCLE acontece o (setq linha11 (vla-addline temp (vlax-3d-point pt11 (vlax-3d-point pt12 ;;; Mesmo que no ModelSpace é Criado um Circulo (setq linha12 (vla-addline temp (vlax-3d-point pt11 (vlax-3d-point pt15 ;;; Com Onde é Dado o Centro e Diâmetro (setq linha13 (vla-addline temp (vlax-3d-point pt4 (vlax-3d-point pt16 (setq linha14 (vla-addline temp (vlax-3d-point pt6 (vlax-3d-point pt14 (setq linha15 (vla-addline temp (vlax-3d-point pt14 (vlax-3d-point pt13 (setq linha16 (vla-addline temp (vlax-3d-point pt13 (vlax-3d-point pt9 (setq linha17 (vla-addline temp (vlax-3d-point pt17 (vlax-3d-point pt18 (setq linha18 (vla-addline temp (vlax-3d-point pt19 (vlax-3d-point pt20 (setq linha19 (vla-addline temp (vlax-3d-point pt21 (vlax-3d-point pt22 (setq linha20 (vla-addline temp (vlax-3d-point pt12 (vlax-3d-point pt1 (setq linha21 (vla-addline temp (vlax-3d-point pt23 (vlax-3d-point pt24 (setq linha22 (vla-addline temp (vlax-3d-point pt25 (vlax-3d-point pt26 (setq ParafusoES (vla-addcircle temp (vlax-3d-point pt27 D2 (setq ParafusoEI (vla-addcircle temp (vlax-3d-point pt28 D2 (setq ParafusoEM (vla-addcircle temp (vlax-3d-point pt29 D1 (command "polygon" "6" pt27 "i" e (setq hexagono (entlast (setq vlahexagono (vlax-ename->vla-object hexagono ;;; Conversão de Entidade de Autolisp Para ActiveX (command "polygon" "6" pt28 "i" e (setq hexagono1 (entlast (setq vlahexagono1 (vlax-ename->vla-object hexagono1 (setq CirculoSD (vla-addcircle temp (vlax-3d-point pt33 D2 (setq CirculoSD2 (vla-addcircle temp (vlax-3d-point pt34 D3 (setq CirculoID (vla-addcircle temp (vlax-3d-point pt36 D2 (setq CirculoMD (vla-addcircle temp (vlax-3d-point pt35 D1 (setq LinhaF1D (vla-addline temp (vlax-3d-point pt37 (vlax-3d-point pt38 (setq LinhaF1E (vla-addline temp (vlax-3d-point pt39 (vlax-3d-point pt40 (setq LinhaF2D (vla-addline temp (vlax-3d-point pt41 (vlax-3d- point pt42 (setq LinhaF2E (vla-addline temp (vlax-3d-point pt43 (vlax-3d-point pt44 (setq CirculoME (vla-addcircle temp (vlax-3d-point pt30 D4 (setq CirculoMC (vla-addcircle temp (vlax-3d-point pt31 D4 (setq CirculoMD1 (vla-addcircle temp (vlax-3d-point pt32 D4 Após as preparações iniciais começamos a dar forma ao objecto, começando por desenhar tudo o que há para desenhar a traço grosso. Foram usados essencialmente dois comandos o vla-addline e o vla-addcircle. Também foi usado o comando de autocad "polygon" para desenhar os hexágonos. (setq tm (cdr (assoc 21 cl_obtervista ;;; Indica a Layer Escolhida Para Traço Misto (setq tm (fix tm ;;; Obtem um Valor Inteiro Página 42 de 65

43 (setq layer (vla-get-layers activedoc ;;; Obtem as Layers (setq tm (vla-item layer tm ;;; Obtem a Layer Desejada (vla-put-activelayer activedoc tm ;;; Define a Layer Para Traço Misto Activa Mais um bloco de linhas de código para mudar de layer, desta vez é mudado para a layer de traço misto definida pelo utilizador anteriormente. Os comentários são suficientemente esclarecedores, para compreender o andamento do programa. (setq linha23 (vla-addline temp (vlax-3d-point pt45 (vlax-3d-point pt46 (setq linha24 (vla-addline temp (vlax-3d-point pt47 (vlax-3d-point pt48 (setq linha25 (vla-addline temp (vlax-3d-point pt49 (vlax-3d-point pt50 (setq linha26 (vla-addline temp (vlax-3d-point pt51 (vlax-3d-point pt52 (setq linha27 (vla-addline temp (vlax-3d-point pt53 (vlax-3d-point pt54 (setq linha28 (vla-addline temp (vla x-3d-point pt55 (vlax-3d-point pt56 (setq linha29 (vla-addline temp (vlax-3d-point pt57 (vlax-3d-point pt58 (setq linha30 (vla-addline temp (vlax-3d-point pt59 (vlax-3d-point pt60 (setq linha31 (vla-addline temp (vlax-3d-point pt61 (vlax-3d-point pt62 (setq linha32 (vla-addline temp (vlax-3d-point pt63 (vlax-3d-point pt64 (setq linha33 (vla-addline temp (vlax-3d-point pt65 (vlax-3d-point pt66 (setq linha34 (vla-addline temp (vlax-3d-point pt67 (vlax-3d-point pt68 (setq linha35 (vla-addline temp (vlax-3d-point pt69 (vlax-3d-point pt70 (setq linha36 (vla-addline temp (vlax-3d-point pt71 (vlax-3d-point pt72 (setq linha37 (vla-addline temp (vlax-3d-point pt73 (vlax-3d-point pt74 (setq linha38 (vla-addline temp (vlax-3d-point pt75 (vlax-3d-point pt76 (setq linha39 (vla-addline temp (vlax-3d-point pt77 (vlax-3d-point pt78 (setq linha40 (vla-addline temp (vlax-3d-point pt79 (vlax-3d-point pt80 (setq linha41 (vla-addline temp (vlax-3d-point pt81 (vlax-3d-point pt82 (setq linha42 (vla-addline temp (vlax-3d-point pt83 (vlax-3d-point pt84 (setq linha43 (vla-addline temp (vlax-3d-point pt85 (vlax-3d-point pt86 Outro bloco da função que serve simplesmente para desenhar, neste caso são desenhadas as linhas de traço misto. (setq linha1 (vla-rotate linha1 (vlax-3d-point pt1 ang (setq linha2 (vla-rotate linha2 (vlax-3d-point pt1 ang (setq linha3 (vla-rotate linha3 (vlax-3d-point pt1 ang (setq linha4 (vla-rotate linha4 (vlax-3d-point pt1 ang (setq linha5 (vla-rotate linha5 (vlax-3d-point pt1 ang (setq linha6 (vla-rotate linha6 (vlax-3d-point pt1 ang (setq linha7 (vla-rotate linha7 (vlax-3d-point pt1 ang (setq linha8 (vla-rotate linha8 (vlax-3d-point pt1 ang (setq linha9 (vla-rotate linha9 (vlax-3d-point pt1 ang (setq linha10 (vla-rotate linha10 (vlax-3d-point pt1 ang (setq linha11 (vla-rotate linha11 (vlax-3d-point pt1 ang Página 43 de 65

44 (setq linha12 (vla-rotate linha12 (vlax-3d-point pt1 ang (setq linha13 (vla-rotate linha13 (vlax-3d-point pt1 ang (setq linha14 (vla-rotate linha14 (vlax-3d-point pt1 ang (setq linha15 (vla-rotate linha15 (vlax-3d-point pt1 ang (setq linha16 (vla-rotate linha16 (vlax-3d-point pt1 ang (setq linha17 (vla-rotate linha17 (vlax-3d-point pt1 ang (setq linha18 (vla-rotate linha18 (vlax-3d-point pt1 ang (setq linha19 (vla-rotate linha19 (vlax-3d-point pt1 ang (setq linha20 (vla-rotate linha20 (vlax-3d-point pt1 ang (setq linha21 (vla-rotate linha21 (vlax-3d-point pt1 ang (setq linha22 (vla-rotate linha22 (vlax-3d-point pt1 ang (setq linha23 (vla-rotate linha23 (vlax-3d-point pt1 ang (setq linha24 (vla-rotate linha24 (vlax-3d-point pt1 ang (setq linha25 (vla-rotate linha25 (vlax-3d-point pt1 ang (setq linha26 (vla-rotate linha26 (vlax-3d-point pt1 ang (setq linha27 (vla-rotate linha27 (vlax-3d-point pt1 ang (setq linha28 (vla-rotate linha28 (vlax-3d-point pt1 ang (setq linha29 (vla-rotate linha29 (vlax-3d-point pt1 ang (setq linha30 (vla-rotate linha30 (vlax-3d-point pt1 ang (setq linha31 (vla-rotate linha31 (vlax-3d-point pt1 ang (setq linha32 (vla-rotate linha32 (vlax-3d-point pt1 ang (setq linha33 (vla-rotate linha33 (vlax-3d-point pt1 ang (setq linha34 (vla-rotate linha34 (vlax-3d-point pt1 ang (setq linha35 (vla-rotate linha35 (vlax-3d-point pt1 ang (setq linha36 (vla-rotate linha36 (vlax-3d-point pt1 ang (setq linha37 (vla-rotate linha37 (vlax-3d-point pt1 ang (setq linha38 (vla-rotate linha38 (vlax-3d-point pt1 ang (setq linha39 (vla-rotate linha39 (vlax-3d-point pt1 ang (setq linha40 (vla-rotate linha40 (vlax-3d-point pt1 ang (setq linha41 (vla-rotate linha41 (vlax-3d-point pt1 ang (setq linha42 (vla-rotate linha42 (vlax-3d-point pt1 ang (setq linha43 (vla-rotate linha43 (vlax-3d-point pt1 ang (setq linhaf1d (vla-rotate linhaf1d (vlax-3d-point pt1 ang (setq linhaf1e (vla-rotate linhaf1e(vlax-3d-point pt1 ang (setq linhaf2d (vla-rotate linhaf2d (vlax-3d-point pt1 ang (setq linhaf2e (vla-rotate linhaf2e (vlax-3d-point pt1 ang (setq circulosd (vla-rotate circulosd (vlax-3d-point pt1 ang (setq circulosd2 (vla-rotate circulosd2 (vlax-3d-point pt1 ang (setq circuloid (vla-rotate circuloid (vlax-3d-point pt1 ang (setq circulomd (vla-rotate circulomd (vlax-3d-point pt1 ang (setq circulome (vla-rotate circulome (vlax-3d-point pt1 ang (setq circulomc (vla-rotate circulomc (vlax-3d-point pt1 ang (setq circulomd1 (vla-rotate circulomd1 (vlax-3d-point pt1 ang (setq ParafusoES (vla-rotate ParafusoES (vlax-3d-point pt1 ang (setq ParafusoEI (vla-rotate ParafusoEI (vlax-3d-point pt1 ang (setq ParafusoEM (vla-rotate ParafusoEM (vlax-3d-point pt1 ang (setq vlahexagono (vla-rotate vlahexagono (vlax-3d-point pt1 ang (setq vlahexagono1 (vla-rotate vlahexagono1 (vlax-3d-point pt1 ang Página 44 de 65

45 Após desenhar o objecto a função roda o com a função vla-rotate, sendo o centro de rotação o ponto 1. (setq dim (cdr (assoc 22 cl_obtervista ;;; Indica a Layer Escolhida Para Cotagem (setq dim (fix dim ;;; Obtem um Valor Inteiro (setq layer (vla-get-layers activedoc ;;; Obtem as Layers (setq dim (vla-item layer dim ;;; Obtem a Layer Desejada (vla-put-activelayer activedoc dim ;;; Define a Layer Para a Cotagem Mudança de layer. Coloca activa a layer para as cotas. (setq dimen (cdr (assoc 55 cl_obtervista ;;; Inicio das Declarações de Cotagem e Rotação das Mesmas (if (= dimen 1.0 (setq dim1 (vla-adddimrotated temp (vlax-3d-point pt1 (vlax-3d-point pt2 (vlax-3dpoint z pi (setq dim2 (vla-adddimrotated temp (vlax-3d-point pt1 (vlax-3d-point pt31 (vlax-3dpoint an pi (setq dim3 (vla-adddimrotated temp (vlax-3d-point pt1 (vlax-3d-point pt28 (vlax-3dpoint g pi (setq dim4 (vla-adddimrotated temp (vlax-3d-point pt2 (vlax-3d-point pt16 (vlax-3dpoint an pi (setq dim5 (vla-adddimrotated temp (vlax-3d-point pt2 (vlax-3d-point pt35 (vlax-3dpoint gb pi (setq dim6 (vla-adddimrotated temp (vlax-3d-point pt2 (vlax-3d-point pt36 (vlax-3dpoint g pi (setq dim7 (vla-adddimrotated temp (vlax-3d-point pt2 (vlax-3d-point pt35 (vlax-3dpoint nc (* pi (/ (setq dim8 (vla-adddimrotated temp (vlax-3d-point pt2 (vlax-3d-point pt36 (vlax-3dpoint ppqq (* pi (/ (setq dim9 (vla-adddimrotated temp (vlax-3d-point pt36 (vlax-3d-point pt33 (vlax- 3d-point ppqq (* pi (/ (setq dim10 (vla-adddimrotated temp (vlax-3d-point pt2 (vlax-3d-point pt3 (vlax-3dpoint ne (* pi (/ (setq dim11 (vla-adddimrotated temp (vlax-3d-point pt1 (vlax-3d-point pt28 (vlax- 3d-point ppqq2 (/ pi 2 (setq dim12 (vla-adddimrotated temp (vlax-3d-point pt28 (vlax-3d-point pt27 (vlax- 3d-point ppqq2 (/ pi 2 (setq temp1 (list (* D2 cos120 (* D2 sin (setq pt99 (somapontos pt27 temp1 (setq dim13 (vla-adddimradial temp (vlax-3d-point pt27 (vlax-3d-point pt (vla-put-textoutsidealign dim13 "true" Página 45 de 65

46 (setq pt99 (rtos D2 (setq pt99 (strcat "2-"pt99 (vla-put-textoverride dim13 pt99 (setq pt99 (somapontos pt33 temp1 (setq dim14 (vla-adddimradial temp (vlax-3d-point pt33 (vlax-3d-point pt (vla-put-textoutsidealign dim14 "true" (setq pt99 (rtos D2 (setq pt99 (strcat "2-"pt99 (vla-put-textoverride dim14 pt99 (setq dim1 (vla-rotate dim1 (vlax-3d-point pt1 ang (setq dim2 (vla-rotate dim2 (vlax-3d-point pt1 ang (setq dim3 (vla-rotate dim3 (vlax-3d-point pt1 ang (setq dim4 (vla-rotate dim4 (vlax-3d-point pt1 ang (setq dim5 (vla-rotate dim5 (vlax-3d-point pt1 ang (setq dim6 (vla-rotate dim6 (vlax-3d-point pt1 ang (setq dim7 (vla-rotate dim7 (vlax-3d-point pt1 ang (setq dim8 (vla-rotate dim8 (vlax-3d-point pt1 ang (setq dim9 (vla-rotate dim9 (vlax-3d-point pt1 ang (setq dim10 (vla-rotate dim10 (vlax-3d-point pt1 ang (setq dim11 (vla-rotate dim11 (vlax-3d-point pt1 ang (setq dim12 (vla-rotate dim12 (vlax-3d-point pt1 ang (setq dim13 (vla-rotate dim13 (vlax-3d-point pt1 ang (setq dim14 (vla-rotate dim14 (vlax-3d-point pt1 ang Se o utilizador escolheu desenhar as cotas no desenho, com estas linhas de código são desenhadas as cotas e de seguida são rodadas para estarem de acordo com o objecto cotado. (command "zoom" "e" ;;; Faz Um Zoom ao Desenho Em Geral (command regen ;;; Regenera a o Desktop Activo do Autocad Para Retirar "Lixo" Que Possa Existir (setvar "cmdecho" cmdvar (setvar "osmode" osvar (setvar "orthomode" orthovar (setvar "snapmode" snapvar (vla-put-activelayer activedoc actlayer ;;; Repoem a layer inicial No fim da função volta-se a desenhar toda a área de trabalho do autocad após um zoom à área de trabalho. Para finalizar volta-se a colocar a layer in icial, e todas as outras variáveis que foram modificadas. De seguida irá ser apresentada a função cl:desenhart mas não irá ser explicada por ser idêntica à função anterior. Página 46 de 65

47 (defun cl:desenhart (/ temp temp1 ytempm ytempm1 dimen dcirc tg tm ang layer snapvar orthovar osvar cmdvar actlayer pt99 ;;; Função Pra Desenha o Objecto (cotat (setq ang (cdr (assoc 86 cl_obtermodelo ;;; Indica o Angulo de Rotação Para Objecto (setq cmdvar (getvar "cmdecho" ;;; Variável inicial do echo da command line do Autocad (setvar "cmdecho" 0 ;;; Definir o echo como "off" (setq osvar (getvar "osmode" ;;; Variável inicial do modo osnap (setvar "osmode" 0 ;;; Definir como off o modo osnap (setq orthovar (getvar "orthomode" ;;; Variável que define o modo ortogonal como on/off (setvar "orthomode" 0 ;;; Definir modo ortogonal como off (setq snapvar (getvar "snapmode" ;;; Variável inicial do modo snap (setvar "snapmode" 0 ;;; Desliga o modo snap acad-object ;;; Chamada das Funções de Hierarquia dos Objectos do Autocad (setq activedoc (active-document (setq temp (model-space ;;; Define Uma Variável Que Define O Model-Space Activo (setq actlayer (vla-get-activelayer activedoc;;;guarda a Layer Inicial (setq tg (cdr (assoc 20 cl_obtervista ;;; Indica a Layer Escolhida Para Traço Grosso (setq tg (fix tg ;;; Obtem um Valor Inteiro (setq layer (vla-get-layers activedoc ;;; Obtem a Layers (setq tg (vla-item layer tg ;;; Obtem a Layer Para Traço Grosso (vla-put-activelayer activedoc tg ;;; Define a Layer Para Traço Grosso Activa (setq linha1 (vla-addline temp (vlax-3d-point pt1 (vlax-3d-point pt2 (setq linha2 (vla-addline temp (vlax-3d-point pt2 (vlax-3d-point pt3 (setq linha3 (vla-addline temp (vlax-3d-point pt3 (vlax-3d-point pt4 (setq linha4 (vla-addline temp (vlax-3d-point pt4 (vlax-3d-point pt5 (setq linha5 (vla-addline temp (vlax-3d-point pt5 (vlax-3d-point pt6 (setq linha6 (vla-addline temp (vlax-3d-point pt6 (vlax-3d-point pt7 (setq linha7 (vla-addline temp (vlax-3d-point pt7 (vlax-3d-point pt8 (setq linha8 (vla-addline temp (vlax-3d-point pt8 (vlax-3d-point pt9 (setq linha9 (vla-addline temp (vlax-3d-point pt9 (vlax-3d-point pt10 (setq linha10 (vla-addline temp (vlax-3d-point pt10 (vlax-3d-point pt11 (setq linha11 (vla-addline temp (vlax-3d-point pt11 (vlax-3d-point pt12 (setq linha12 (vla-addline temp (vlax-3d-point pt12 (vlax-3d-point pt13 (setq linha13 (vla-addline temp (vlax-3d-point pt13 (vlax-3d-point pt14 (setq linha14 (vla-addline temp (vlax-3d-point pt14 (vlax-3d-point pt15 (setq linha15 (vla-addline temp (vlax-3d-point pt15 (vlax-3d-point pt16 (setq linha16 (vla-addline temp (vlax-3d-point pt17 (vlax-3d-point pt3 (setq linha17 (vla-addline temp (vlax-3d-point pt14 (vlax-3d-point pt52 (setq linha18 (vla-addline temp (vlax-3d-point pt5 (vlax-3d-point pt35 (setq linha19 (vla-addline temp (vlax-3d-point pt7 (vlax-3d-point pt34 (setq linha20 (vla-addline temp (vlax-3d-point pt7 (vlax-3d-point pt30 (setq linha21 (vla-addline temp (vlax-3d-point pt33 (vlax-3d-point pt30 (setq linha22 (vla-addline temp (vlax-3d-point pt36 (vlax-3d-point pt40 (setq linha23 (vla-addline temp (vlax-3d-point pt10 (vlax-3d-point pt40 (setq linha24 (vla-addline temp (vlax-3d-point pt10 (vlax-3d-point pt37 (setq linha25 (vla-addline temp (vlax-3d-point pt12 (vlax-3d-point pt45 Página 47 de 65

48 (setq linha26 (vla-addline temp (vlax-3d-point pt18 (vlax-3d-point pt19 (setq linha27 (vla-addline temp (vlax-3d-point pt21 (vlax-3d-point pt20 (setq linha28 (vla-addline temp (vlax-3d-point pt22 (vlax-3d-point pt23 (setq linha29 (vla-addline temp (vlax-3d-point pt24 (vlax-3d-point pt25 (setq linha30 (vla-addline temp (vlax-3d-point pt26 (vlax-3d-point pt27 (setq linha31 (vla-addline temp (vlax-3d-point pt28 (vlax-3d-point pt29 (setq linha32 (vla-addline temp (vlax-3d-point pt32 (vlax-3d-point pt38 (setq linha33 (vla-addline temp (vlax-3d-point pt31 (vlax-3d-point pt39 (setq linha34 (vla-addline temp (vlax-3d-point pt41 (vlax-3d-point pt46 (setq linha35 (vla-addline temp (vlax-3d-point pt42 (vlax-3d-point pt47 (setq linha36 (vla-addline temp (vlax-3d-point pt43 (vlax-3d-point pt50 (setq linha37 (vla-addline temp (vlax-3d-point pt44 (vlax-3d-point pt51 (setq linha38 (vla-addline temp (vlax-3d-point pt48 (vlax-3d-point pt53 (setq linha39 (vla-addline temp (vlax-3d-point pt49 (vlax-3d-point pt54 (setq Circulo1 (vla-addcircle temp (vlax-3d-point pt58 D3 (setq Circulo2 (vla-addcircle temp (vlax-3d-point pt57 D1 (setq Circulo3 (vla-addcircle temp (vlax-3d-point pt57 D2 (setq dcirc (- D4 0.5 (setq Circulo4 (vla-addcircle temp (vlax-3d-point pt75 dcirc (setq Circulo5 (vla-addcircle temp (vlax-3d-point pt80 dcirc (setq Circulo6 (vla-addcircle temp (vlax-3d-point pt98 D3 (setq Circulo7 (vla-addcircle temp (vlax-3d-point pt97 D1 (setq Circulo8 (vla-addcircle temp (vlax-3d-point pt97 D2 (setq Circulo9 (vla-addcircle temp (vlax-3d-point pt55 D3 (setq Circulo10 (vla-addcircle temp (vlax-3d-point pt56 D3 (setq Circulo11 (vla-addcircle temp (vlax-3d-point pt59 D3 (setq Circulo12 (vla-addcircle temp (vlax-3d-point pt60 D3 (setq arco1 (vla-addarc temp (vlax-3d-point pt75 D4 0.0 (* pi (/ (setq arco2 (vla-addarc temp (vlax-3d-point pt80 D4 0.0 (* pi (/ (setq tg (cdr (assoc 21 cl_obtervista ;;; Indica a Layer Escolhida Para Traço Misto (setq tg (fix tg ;;; Obtem um Valor Inteiro (setq layer (vla-get-layers activedoc ;;; Obtem as Layers (setq tg (vla-item layer tg ;;; Obtem a Layer Desejada (vla-put-activelayer activedoc tg ;;; Define a Layer Para Traço Misto Activa (setq linha40 (vla-addline temp (vlax-3d-point pt67 (vlax-3d-point pt68 (setq linha41 (vla-addline temp (vlax-3d-point pt69 (vlax-3d-point pt70 (setq linha42 (vla-addline temp (vlax-3d-point pt71 (vlax-3d-point pt72 (setq linha43 (vla-addline temp (vlax-3d-point pt73 (vlax-3d-point pt74 (setq linha44 (vla-addline temp (vlax-3d-point pt76 (vlax-3d-point pt77 (setq linha45 (vla-addline temp (vlax-3d-point pt78 (vlax-3d-point pt79 (setq linha46 (vla-addline temp (vlax-3d-point pt81 (vlax-3d-point pt82 (setq linha47 (vla-addline temp (vlax-3d-point pt83 (vlax-3d-point pt84 (setq linha48 (vla-addline temp (vlax-3d-point pt85 (vlax-3d-point pt86 (setq linha49 (vla-addline temp (vlax-3d-point pt87 (vlax-3d-point pt88 (setq linha50 (vla-addline temp (vlax-3d-point pt93 (vlax-3d-point pt94 (setq linha51 (vla-addline temp (vlax-3d-point pt95 (vlax-3d-point pt96 (setq linha52 (vla-addline temp (vlax-3d-point pt61 (vlax-3d-point pt62 (setq linha53 (vla-addline temp (vlax-3d-point pt63 (vlax-3d-point pt64 (setq linha54 (vla-addline temp (vlax-3d-point pt65 (vlax-3d-point pt66 (setq linha55 (vla-addline temp (vlax-3d-point pt89 (vlax-3d-point pt90 (setq linha56 (vla-addline temp (vlax-3d-point pt91 (vlax-3d-point pt92 Página 48 de 65

49 ;;; Inicio do Mirror dos Objectos Previamente Criados (setq linha1m (vla-mirror linha1 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha2m (vla-mirror linha2 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha3m (vla-mirror linha3 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha4m (vla-mirror linha4 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha5m (vla-mirror linha5 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha6m (vla-mirror linha6 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha7m (vla-mirror linha7 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha8m (vla-mirror linha8 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha9m (vla-mirror linha9 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha10m (vla-mirror linha10 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha11m (vla-mirror linha11 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha12m (vla-mirror linha12 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha13m (vla-mirror linha13 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha14m (vla-mirror linha14 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha15m (vla-mirror linha15 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha16m (vla-mirror linha16 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha17m (vla-mirror linha17 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha18m (vla-mirror linha18 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha19m (vla-mirror linha19 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha20m (vla-mirror linha20 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha21m (vla-mirror linha21 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha22m (vla-mirror linha22 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha23m (vla-mirror linha23 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha24m (vla-mirror linha24 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha25m (vla-mirror linha25 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha26m (vla-mirror linha26 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha27m (vla-mirror linha27 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha28m (vla-mirror linha28 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha29m (vla-mirror linha29 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha30m (vla-mirror linha30 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha31m (vla-mirror linha31 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha32m (vla-mirror linha32 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha33m (vla-mirror linha33 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha34m (vla-mirror linha34 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha35m (vla-mirror linha35 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha36m (vla-mirror linha36 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha37m (vla-mirror linha36 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha38m (vla-mirror linha38 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha39m (vla-mirror linha39 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha40m (vla-mirror linha40 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha41m (vla-mirror linha41 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha42m (vla-mirror linha42 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha43m (vla-mirror linha43 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha44m (vla-mirror linha44 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha45m (vla-mirror linha45 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha46m (vla-mirror linha46 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha47m (vla-mirror linha47 (vlax-3d-point pt17 (vlax-3d-point pt16 Página 49 de 65

50 (setq linha48m (vla-mirror linha48 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha49m (vla-mirror linha49 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha50m (vla-mirror linha50 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq linha51m (vla-mirror linha51 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq circulo1m (vla-mirror circulo1 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq circulo2m (vla-mirror circulo2 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq circulo3m (vla-mirror circulo3 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq circulo4m (vla-mirror circulo4 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq circulo5m (vla-mirror circulo5 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq circulo6m (vla-mirror circulo6 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq circulo7m (vla-mirror circulo7 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq circulo8m (vla-mirror circulo8 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq arco1m (vla-mirror arco1 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq arco2m (vla-mirror arco2 (vlax-3d-point pt17 (vlax-3d-point pt16 ;;; Inicio das Declarações pra Rodagem de Objectos (setq linha1 (vla-rotate linha1 (vlax-3d-point pt1 ang (setq linha2 (vla-rotate linha2 (vlax-3d-point pt1 ang (setq linha3 (vla-rotate linha3 (vlax-3d-point pt1 ang (setq linha4 (vla-rotate linha4 (vlax-3d-point pt1 ang (setq linha5 (vla-rotate linha5 (vlax-3d-point pt1 ang (setq linha6 (vla-rotate linha6 (vlax-3d-point pt1 ang (setq linha7 (vla-rotate linha7 (vlax-3d-point pt1 ang (setq linha8 (vla-rotate linha8 (vlax-3d-point pt1 ang (setq linha9 (vla-rotate linha9 (vlax-3d-point pt1 ang (setq linha10 (vla-rotate linha10 (vlax-3d-point pt1 ang (setq linha11 (vla-rotate linha11 (vlax-3d-point pt1 ang (setq linha12 (vla-rotate linha12 (vlax-3d-point pt1 ang (setq linha13 (vla-rotate linha13 (vlax-3d-point pt1 ang (setq linha14 (vla-rotate linha14 (vlax-3d-point pt1 ang (setq linha15 (vla-rotate linha15 (vlax-3d-point pt1 ang (setq linha16 (vla-rotate linha16 (vlax-3d-point pt1 ang (setq linha17 (vla-rotate linha17 (vlax-3d-point pt1 ang (setq linha18 (vla-rotate linha18 (vlax-3d-point pt1 ang (setq linha19 (vla-rotate linha19 (vlax-3d-point pt1 ang (setq linha20 (vla-rotate linha20 (vlax-3d-point pt1 ang (setq linha21 (vla-rotate linha21 (vlax-3d-point pt1 ang (setq linha22 (vla-rotate linha22 (vlax-3d-point pt1 ang (setq linha23 (vla-rotate linha23 (vlax-3d-point pt1 ang (setq linha24 (vla-rotate linha24 (vlax-3d-point pt1 ang (setq linha25 (vla-rotate linha25 (vlax-3d-point pt1 ang (setq linha26 (vla-rotate linha26 (vlax-3d-point pt1 ang (setq linha27 (vla-rotate linha27 (vlax-3d-point pt1 ang (setq linha28 (vla-rotate linha28 (vlax-3d-point pt1 ang (setq linha29 (vla-rotate linha29 (vlax-3d-point pt1 ang (setq linha30 (vla-rotate linha30 (vlax-3d-point pt1 ang (setq linha31 (vla-rotate linha31 (vlax-3d-point pt1 ang (setq linha32 (vla-rotate linha32 (vlax-3d-point pt1 ang Página 50 de 65

51 (setq linha33 (vla-rotate linha33 (vlax-3d-point pt1 ang (setq linha34 (vla-rotate linha34 (vlax-3d-point pt1 ang (setq linha35 (vla-rotate linha35 (vlax-3d-point pt1 ang (setq linha36 (vla-rotate linha36 (vlax-3d-point pt1 ang (setq linha37 (vla-rotate linha37 (vlax-3d-point pt1 ang (setq linha38 (vla-rotate linha38 (vlax-3d-point pt1 ang (setq linha39 (vla-rotate linha39 (vlax-3d-point pt1 ang (setq linha40 (vla-rotate linha40 (vlax-3d-point pt1 ang (setq linha41 (vla-rotate linha41 (vlax-3d-point pt1 ang (setq linha42 (vla-rotate linha42 (vlax-3d-point pt1 ang (setq linha43 (vla-rotate linha43 (vlax-3d-point pt1 ang (setq linha44 (vla-rotate linha44 (vlax-3d-point pt1 ang (setq linha45 (vla-rotate linha45 (vlax-3d-point pt1 ang (setq linha46 (vla-rotate linha46 (vlax-3d-point pt1 ang (setq linha47 (vla-rotate linha47 (vlax-3d-point pt1 ang (setq linha48 (vla-rotate linha48 (vlax-3d-point pt1 ang (setq linha49 (vla-rotate linha49 (vlax-3d-point pt1 ang (setq linha50 (vla-rotate linha50 (vlax-3d-point pt1 ang (setq linha51 (vla-rotate linha51 (vlax-3d-point pt1 ang (setq linha52 (vla-rotate linha52 (vlax-3d-point pt1 ang (setq linha53 (vla-rotate linha53 (vlax-3d-point pt1 ang (setq linha54 (vla-rotate linha54 (vlax-3d-point pt1 ang (setq linha55 (vla-rotate linha55 (vlax-3d-point pt1 ang (setq linha56 (vla-rotate linha56 (vlax-3d-point pt1 ang (setq linha1m (vla-rotate linha1m (vlax-3d-point pt1 ang (setq linha2m (vla-rotate linha2m (vlax-3d-point pt1 ang (setq linha3m (vla-rotate linha3m (vlax-3d-point pt1 ang (setq linha4m (vla-rotate linha4m (vlax-3d-point pt1 ang (setq linha5m (vla-rotate linha5m (vlax-3d-point pt1 ang (setq linha6m (vla-rotate linha6m (vlax-3d-point pt1 ang (setq linha7m (vla-rotate linha7m (vlax-3d-point pt1 ang (setq linha8m (vla-rotate linha8m (vlax-3d-point pt1 ang (setq linha9m (vla-rotate linha9m (vlax-3d-point pt1 ang (setq linha10m (vla-rotate linha10m (vlax-3d-point pt1 ang (setq linha11m (vla-rotate linha11m (vlax-3d-point pt1 ang (setq linha12m (vla-rotate linha12m (vlax-3d-point pt1 ang (setq linha13m (vla-rotate linha13m (vlax-3d-point pt1 ang (setq linha14m (vla-rotate linha14m (vlax-3d-point pt1 ang (setq linha15m (vla-rotate linha15m (vlax-3d-point pt1 ang (setq linha16m (vla-rotate linha16m (vlax-3d-point pt1 ang (setq linha17m (vla-rotate linha17m (vlax-3d-point pt1 ang (setq linha18m (vla-rotate linha18m (vlax-3d-point pt1 ang (setq linha19m (vla-rotate linha19m (vlax-3d-point pt1 ang (setq linha20m (vla-rotate linha20m (vlax-3d-point pt1 ang (setq linha21m (vla-rotate linha21m (vlax-3d-point pt1 ang (setq linha22m (vla-rotate linha22m (vlax-3d-point pt1 ang (setq linha23m (vla-rotate linha23m (vlax-3d-point pt1 ang (setq linha24m (vla-rotate linha24m (vlax-3d-point pt1 ang (setq linha25m (vla-rotate linha25m (vlax-3d-point pt1 ang (setq linha26m (vla-rotate linha26m (vlax-3d-point pt1 ang (setq linha27m (vla-rotate linha27m (vlax-3d-point pt1 ang Página 51 de 65

52 (setq linha28m (vla-rotate linha28m (vlax-3d-point pt1 ang (setq linha29m (vla-rotate linha29m (vlax-3d-point pt1 ang (setq linha30m (vla-rotate linha30m (vlax-3d-point pt1 ang (setq linha31m (vla-rotate linha31m (vlax-3d-point pt1 ang (setq linha32m (vla-rotate linha32m (vlax-3d-point pt1 ang (setq linha33m (vla-rotate linha33m (vlax-3d-point pt1 ang (setq linha34m (vla-rotate linha34m (vlax-3d-point pt1 ang (setq linha35m (vla-rotate linha35m (vlax-3d-point pt1 ang (setq linha36m (vla-rotate linha36m (vlax-3d-point pt1 ang (setq linha37m (vla-rotate linha37m (vlax-3d-point pt1 ang (setq linha38m (vla-rotate linha38m (vlax-3d-point pt1 ang (setq linha39m (vla-rotate linha39m (vlax-3d-point pt1 ang (setq linha40m (vla-rotate linha40m (vlax-3d-point pt1 ang (setq linha41m (vla-rotate linha41m (vlax-3d-point pt1 ang (setq linha42m (vla-rotate linha42m (vlax-3d-point pt1 ang (setq linha43m (vla-rotate linha43m (vlax-3d-point pt1 ang (setq linha44m (vla-rotate linha44m (vlax-3d-point pt1 ang (setq linha45m (vla-rotate linha45m (vlax-3d-point pt1 ang (setq linha46m (vla-rotate linha46m (vlax-3d-point pt1 ang (setq linha47m (vla-rotate linha47m (vlax-3d-point pt1 ang (setq linha48m (vla-rotate linha48m (vlax-3d-point pt1 ang (setq linha49m (vla-rotate linha49m (vlax-3d-point pt1 ang (setq linha50m (vla-rotate linha50m (vlax-3d-point pt1 ang (setq linha51m (vla-rotate linha51m (vlax-3d-point pt1 ang (setq circulo1 (vla-rotate circulo1 (vlax-3d-point pt1 ang (setq circulo2 (vla-rotate circulo2 (vlax-3d-point pt1 ang (setq circulo3 (vla-rotate circulo3 (vlax-3d-point pt1 ang (setq circulo4 (vla-rotate circulo4 (vlax-3d-point pt1 ang (setq circulo5 (vla-rotate circulo5 (vlax-3d-point pt1 ang (setq circulo6 (vla-rotate circulo6 (vlax-3d-point pt1 ang (setq circulo7 (vla-rotate circulo7 (vlax-3d-point pt1 ang (setq circulo8 (vla-rotate circulo8 (vlax-3d-point pt1 ang (setq circulo9 (vla-rotate circulo9 (vlax-3d-point pt1 ang (setq circulo10 (vla-rotate circulo10 (vlax-3d-point pt1 ang (setq circulo11 (vla-rotate circulo11 (vlax-3d-point pt1 ang (setq circulo12 (vla-rotate circulo12 (vlax-3d-point pt1 ang (setq circulo1m (vla-rotate circulo1m (vlax-3d-point pt1 ang (setq circulo2m (vla-rotate circulo2m (vlax-3d-point pt1 ang (setq circulo3m (vla-rotate circulo3m (vlax-3d-point pt1 ang (setq circulo4m (vla-rotate circulo4m (vlax-3d-point pt1 ang (setq circulo5m (vla-rotate circulo5m (vlax-3d-point pt1 ang (setq circulo6m (vla-rotate circulo6m (vlax-3d-point pt1 ang (setq circulo7m (vla-rotate circulo7m (vlax-3d-point pt1 ang (setq circulo8m (vla-rotate circulo8m (vlax-3d-point pt1 ang (setq arco1 (vla-rotate arco1 (vlax-3d-point pt1 ang (setq arco2 (vla-rotate arco2 (vlax-3d-point pt1 ang (setq arco1m (vla-rotate arco1m (vlax-3d-point pt1 ang (setq arco2m (vla-rotate arco2m (vlax-3d-point pt1 ang (setq dim (cdr (assoc 22 cl_obtervista ;;; Indica a Layer Escolhida Para Cotagem (setq dim (fix dim ;;; Obtem um Valor Inteiro Página 52 de 65

53 (setq layer (vla-get-layers activedoc ;;; Obtem as Layers (setq dim (vla-item layer dim ;;; Obtem a Layer Desejada (vla-put-activelayer activedoc dim ;;; Define a Layer Para a Cotagem (setq dimen (cdr (assoc 55 cl_obtervista ;;; Inicio das Declarações de Cotagem e Rotação das Mesmas (if (= dimen 1.0 (setq dim1 (vla-adddimrotated temp (vlax-3d-point pt13 (vlax-3d-point pt13m (vlax- 3d-point nw (/ pi 2 (setq dim2 (vla-adddimrotated temp (vlax-3d-point pt11 (vlax-3d-point pt11m (vlax- 3d-point lw (/ pi 2 (setq dim3 (vla-adddimrotated temp (vlax-3d-point pt97 (vlax-3d-point pt97m (vlax- 3d-point qw (/ pi 2 (setq dim4 (vla-adddimrotated temp (vlax-3d-point pt80 (vlax-3d-point pt80m (vlax- 3d-point pb (/ pi 2 (setq dim5 (vla-adddimrotated temp (vlax-3d-point pt4 (vlax-3d-point pt7 (vlax-3dpoint ll pi (setq dim6 (vla-adddimrotated temp (vlax-3d-point pt8 (vlax-3d-point pt9 (vlax-3dpoint l pi (setq dim7 (vla-adddimrotated temp (vlax-3d-point pt75 (vlax-3d-point pt80 (vlax- 3d-point pa pi (setq dim8 (vla-adddimrotated temp (vlax-3d-point pt57 (vlax-3d-point pt97 (vlax- 3d-point q pi (setq dim5m (vla-mirror dim5 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq dim6m (vla-mirror dim6 (vlax-3d-point pt17 (vlax-3d-point pt16 (setq dim7m (vla-mirror dim7 (vlax-3d-point pt17 (vlax-3d-point pt16 (vla-delete dim5 (vla-delete dim6 (vla-delete dim7 (setq dim1 (vla-rotate dim1 (vlax-3d-point pt1 ang (setq dim2 (vla-rotate dim2 (vlax-3d-point pt1 ang (setq dim3 (vla-rotate dim3 (vlax-3d-point pt1 ang (setq dim4 (vla-rotate dim4 (vlax-3d-point pt1 ang (setq dim5m (vla-rotate dim5m (vlax-3d-point pt1 ang (setq dim6m (vla-rotate dim6m (vlax-3d-point pt1 ang (setq dim7m (vla-rotate dim7m (vlax-3d-point pt1 ang (setq dim8 (vla-rotate dim8 (vlax-3d-point pt1 ang (setq temp1 (list (* D4 cos150 (* D4 sin (setq pt99 (somapontos pt80m temp1 (setq dim9 (vla-adddimradial temp (vlax-3d-point pt80m (vlax-3d-point pt (vla-put-textoutsidealign dim9 "true" (setq pt99 (* 2 D4 (setq pt99 (rtos pt99 (setq temp1 (strcat "4-M"pt99" prof." (vla-put-textoverride dim9 temp1 (setq dim9 (vla-rotate dim9 (vlax-3d-point pt1 ang (setq temp1 (list (* D1 cos120 (* D1 sin (setq pt99 (somapontos pt97m temp1 (setq dim10 (vla-adddimradial temp (vlax-3d-point pt97m (vlax-3d-point pt Página 53 de 65

54 (vla-put-textoutsidealign dim10 "true" (setq pt99 (rtos D1 (setq temp1 (rtos D2 (setq temp1 (strcat "4-%%c"pt99" / %%c"temp1 (vla-put-textoverride dim10 temp1 (setq dim10 (vla-rotate dim10 (vlax-3d-point pt1 ang ;;; FIm do if (command "zoom" "e" ;;; Faz Um Zoom ao Desenho Em Geral (command regen ;;; Regenera a o Desktop Activo do Autocad Para Retirar "Lixo" Que Possa Existir (setvar "cmdecho" cmdvar (setvar "osmode" osvar (setvar "orthomode" orthovar (setvar "snapmode" snapvar (vla-put-activelayer activedoc actlayer ;;; Repoem a layer inicial ;;; Fim da Função cl:desenhart Chegando ao fim das funções de desenhar o programa volta ao programa principal para finalizar a função, fecha-se os ficheiros abertos e termina a função principal. Ao longo do desenrolar das funções, que principais que serviram de entrada e saída de dados, de função mãe e funções de desenho, foram utilizadas funções auxiliares que serviram para que estas úlimas não fossem mais longas e para que não se repita o processo imensas vezes foram criadas funções auxiliares. Agora irão ser explicadas essas mesmas funções de uma forma pormenorizada. A primeira função que é a mais simples é a Graus->Radianos, esta simples função tem como objetivo transformar ângulos dados em graus para ângulos em radianos. (defun Graus->Radianos (ang (* pi (/ ang As funções seguintes são funções utilizadas para chamar os graus de hierarquia dos objectos em Active-X. (setq *acad-object* nil (defun acad-object ( (cond (*acad-object* ; Inicializa a variável global ; Verifica se a variável não é nula Página 54 de 65

55 (t (setq *acad-object* (vlax-get-acad-object (setq *active-document* nil ; Inicializa a variável global (defun active-document ( (cond (*active-document* ; Verifica se a variável não é nula (t (setq *active-document* (vla-get-activedocument (acad-object (setq *model-space* nil ; Inicializa a variável global (defun model-space ( (cond (*model-space* ; Verifica se a variável não é nula (t (setq *model-space* (vla-get-modelspace (active-document As funções são simples e resumem-se à chamada de comandos específicos para definir a estrutura hierárquica do Autocad, depois dessa chamada a resultante é guardado em variáveis para o seu uso posterior em outras funções de definição da hierarquia até que por fim seja usado no desenho, ou seja para que sejam criados então os objectos/entidades no desktop activo. A função seguinte é a cl:string->3dpt, esta função é utilizada para tornar as strings lidas do ficheiro em coordenadas de pontos 3D. (defun cl:string->3dpt (pt / strng temp nval i espacos aux xx yy zz (setq temp pt (setq strng (vl-string->list pt (setq nval (vl-list-length strng (setq i 1 (setq espacos (list nil Então a função começa por ser definida, como é obrigatório e são declaradas todas as variáveis associadas e locais necessárias à execução desta função. De seguida o a string a ser transformada é copiada para a variável temp. Na 3ª linha de código a string é passada para uma lista em Página 55 de 65

56 que cada caractere tem o código ASCII correspondente e o resultado é atribuído à variável strng. Depois com o comando vl-list-length é obtido o número de caracteres existente na string para futura avaliação. Por finalizar este bloco de linhas de código são inicializadas duas variáveis uma que vais servir de contador e outra que vai servir para guardar a posição absoluta dos espaços na string que contém as coordenadas dos pontos. (repeat nval (setq strng (vl-string->list temp (setq aux (car strng (if (= aux 32 (setq espacos (cons i espacos (setq i (+ i 1 (setq temp (substr temp 2 (if (or (= aux 45 (= aux 46 (= aux 48 (= aux 49 (= aux 50 (= aux 51 (= aux 52 (= aux 53 (= aux 54 (= aux 55 (= aux 56 (= aux 57 (setq i (+ i 1 (setq temp (substr temp 2 Depois de inicializadas as variáveis a função entra num ciclo repeat que irá ser executado o número de vezes correspondente ao número de caracteres da string. O ciclo começa por atribuir à variável temp a lista de códigos ASCII dos caracteres restantes da string. Depois é atribuído à variável aux o primeiro valor da lista de caracteres. Se o valor for igual a 32, ou seja, igual a um espaço, é adicionada à lista da variável espacos a posição correspondente ao espaç o na string. Ao contador é acrescentado mais uma unidade, e à string alojada na variável temp é eliminado o primeiro caractere. Se o valor não for 32 mas sim 45,46,48,49,50,51,52,53,54,55,56 ou seja correspondentes aos caracteres apenas é acrescentada uma unidade ao contador e é eliminado o primeiro caractere da string temp. (setq xx (substr pt 1 (cadr espacos (setq yy (substr pt (cadr espacos (- (car espacos (cadr espacos (setq zz (substr pt (car espacos nval Página 56 de 65

57 (setq aux (list (atof xx (atof yy (atof zz Os espaços que foram calculados anteriormente vão servir para separar as variáveis X Y e Z para formar um ponto 3D. Passamos já de seguida para putra função auxiliar a função cl:calculartguia, esta função tem como objectivo associar a posição dos valores de tamanho de guia presentes num caixa de dialogo á sua posição relativa da pop up. (defun cl:calculartguia (tguia / temp (if (= tguia 0.0 (setq temp 100 (if (= tguia 1.0 (setq temp 200 (if (= tguia 2.0 (setq temp 300 (if (= tguia 3.0 (setq temp 400 (if (= tguia 4.0 (setq temp 500 (if (= tguia 5.0 (setq temp 600 (if (= tguia 6.0 (setq temp 700 (if (= tguia 7.0 (setq temp 800 (if (= tguia 8.0 (setq temp 900 (if (= tguia 9.0 (setq temp 1000 (if (= tguia 10.0 (setq temp 1100 (if (= tguia 11.0 (setq temp 1200 (if (= tguia 12.0 (setq temp 1300 (if (= tguia 13.0 (setq temp 1400 (if (= tguia 14.0 (setq temp 1500 (if (= tguia 15.0 (setq temp 1600 (if (= tguia 16.0 Página 57 de 65

58 (setq temp 1700 (if (= tguia 17.0 (setq temp 1800 (if (= tguia 18.0 (setq temp 1900 (if (= tguia 19.0 (setq temp 2000 (if (= tguia 20.0 (setq temp 5000 te mp A função cl:calculartguia é simples pois o único objectivo é associar o valor que é dado pela pop up á lista dos tamanhos de guia disponíveis. Ou seja, por exemplo se o utilizador selecionar o tamanho de guia 600 quando se obtém o valor da pop up verifica-se que não é 600 mas sim 5.0, como o valor 5.0 não nos serve de nada teremos de traduzir o valor para algo que possamos usar, ou seja o tamanho de guia correspondente. As funções que se seguem são a somapontos e somapontos2, esta funções servem para desenhar a peça no local em que o utilizador deseja, e adicionar o tamanho de guia aos pontos em que é necessário. (defun somapontos ( pt ptinicial / temp temp1 temp2 (setq temp (+ (car pt (car ptinicial (setq temp1 (+ (cadr pt (cadr ptinicial (setq temp2 (+ (caddr pt (caddr ptinicial (setq pt (list temp temp1 temp2 (defun somapontos2 ( pt ptinicial / temp temp1 temp2 (setq tguia (cdr (assoc 42 cl_obtermodelo (setq temp (+ (car pt (car ptinicial (setq temp (+ temp tguia (setq temp1 (+ (cadr pt (cadr ptinicial (setq temp2 (+ (caddr pt (caddr ptinicial (setq pt (list temp temp1 temp2 Irá ser considerada a função somapontos2, visto que a função somapontos é mto aproximada, a diferença encontra-se no aumento devido ao tamanho de guia que não é necessário na função somapontos. Então a função começa por se definir o nome da função e as variáveis associadas e Página 58 de 65

59 variáveis locais necessárias à função. De seguida é extraído o valor do tamanho de guia da variável cl_obtermodelo através dos pares pontuados. Seguindo para a próxima linha, o primeiro valor da lista da variável pt é somado ao primeiro valor da lista ptinicial, ou seja foram somados os valores xx de dois vectores. De seguida soma-se ao novo x o tamanho de guia. Também são somados os valores yy e zz. Por fim é criada uma lista (vector com os pontos que foram somados. A função que se seguirá é a função cl:layers, esta função serve para obter todas as layers existentes no documento activo. (Defun cl:layers (/ acadobj activedoc la yers listlayer nlayers i temp (Setq acadobj (acad-object (Setq activedoc (active-document (Setq layers (vla-get-layers activedoc (Setq nlayers (vla-get-count layers (setq i 0 (Setq Layer (vla-item layers i (Setq listlayer (list (vla-get-name layer (setq nlayers (- nlayers 1 (repeat nlayers (setq i (+ i 1 (setq Layer (vla-item layers i (Setq temp (vla-get-name layer (setq listlayer (cons temp listlayer (reverse listlayer Esta função começa como todas as outras em que é definido o nome e de seguida são declaradas as variáveis locais da função. Com as linhas (Setq acadobj (acad-object e Setq activedoc (active- atribuem se às varáveis a hierarquia do autocad. Com estas duas document últimas variáveis definidas pode se obter as layers existentes no documento activo com a linha (Setq layers (vla-get-layers activedoc. A variável layers já contém as layers existentes no documento activo no entanto os dados não estão dispostos de uma forma utilizável, visto que se pretende o nome da layer e a sua posição. Para tal obtem se o número de layers existentes no desenho ( (Setq nlayers (vla-get-count layers, para que de seguida se obtenha todas as layers disponíveis. Começa se por saber o nome da layer Zero, e depois passa-se para um ciclo em que se vai obter o resto das layers, pois este ciclo vai ser repetido i-1 vezes, sendo i o número de layers existentes. É criada uma lista com todas as layers existentes, e de seguida essa lista é invertida para uma melhor apresentação qunado esta lista for usada na caixa de diálogo de selecção de layers. Página 59 de 65

60 Acabada a função cl:layers passamos para as duas últimas funções a cotaf e a cotat. Estas duas funçõ es têm com objectivo definir a distância entre as linhas a serem cotadas e o texto da cota, as duas funções são idênticas o que dife re são apena s os pontos que têm coordenadas diferentes, estas funções não necessita m de qualquer explicação pois apenas são mudadas coordenadas de pont os, alg o já muitas vezes explicado até este ponto. (defun cotaf (/ xtemp ytemp (setq ytemp (cadr pt1 (setq ytemp (- ytemp 30.0 (setq z (list (car pt1 ytemp 0.0 (setq ytemp (+ ytemp 5.0 (setq an (list (car z ytemp 0.0 (setq ytemp (+ ytemp 5.0 (setq gb (list (car z ytemp 0.0 (setq ytemp (+ ytemp 5.0 (setq g (list (car z ytemp 0.0 (setq ytemp (cadr pt2 (setq xtemp (car pt2 (setq xtemp (+ xtemp 25.0 (setq ne (list xtemp ytemp 0.0 (setq xtemp (- xtemp 5.0 (setq ppqq (list xtemp ytemp 0.0 (setq xtemp (- xtemp 5.0 (setq nc (list xtemp ytemp 0.0 (setq xtemp (car pt1 (setq xtemp (- xtemp 15.0 (setq ppqq2 (list xtemp ytemp 0.0 (defun cotat (/ xtemp ytemp (setq ytemp (cadr pt8 (setq ytemp (- ytemp 15.0 (setq xtemp (car pt8 (setq q (list xtemp ytemp 0.0 (setq ytemp (cadr pt8 (setq ytemp (- ytemp 10.0 (setq ll (list xtemp ytemp 0.0 (setq l (list xtemp ytemp 0.0 Página 60 de 65

61 (setq ytemp (+ ytemp 5.0 (setq pa (list xtemp ytemp 0.0 (setq ytemp (cadr pt80 (setq xtemp (car pt80 (setq xtemp (- xtemp 10.0 (setq pb (list xtemp ytemp 0.0 (setq ytemp (cadr pt16 (setq xtemp (car pt16 (setq xtemp (+ xtemp 25.0 (setq lw (list xtemp ytemp 0.0 (setq xtemp (- xtemp 5.0 (setq nw (list xtemp ytemp 0.0 (setq xtemp (- xtemp 5.0 (setq qw (list xtemp ytemp (setq a120 (* (/ pi (setq a150 (* (/ pi (setq cos120 (cos a120 (setq sin120 (sin a120 (setq cos150 (cos a150 (setq sin150 (sin a150 Página 61 de 65

62 4. O Resultado Final 1.Vista de Frente com Cotagem 2. Vista de Topo com Cotagem Página 62 de 65

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

Faculdade de Engenharia da Universidade do Porto Concepção e Fabrico Assistido por Computador. Relatório Faculdade de Engenharia da Universidade do Porto Concepção e Fabrico Assistido por Computador Relatório Programação em AutoLisp para desenho automático Licenciatura de Engenharia Mecânica 3ºAno-1ºSemestre

Leia mais

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

Faculdade de Engenharia Universidade do Porto RELATÓRIO CFAC Trabalho em Autolisp Faculdade de Engenharia Universidade do Porto RELATÓRIO CFAC Trabalho em Autolisp Cilindro para ar comprido Trabalho de: Paula Mariana Almeida Vitor Miguel Costa 1 Objectivos: O trabalho consiste na realização

Leia mais

Concepção e Fabrico Assistido por Computador

Concepção e Fabrico Assistido por Computador Concepção e Fabrico Assistido por Computador Implementação do desenho automático de variadas placas molde da marca HASCO e o seu desenho de conjunto em empilhamento Luís Alberto Marques Anjos João de Deus

Leia mais

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

IMPLEMENTAÇÃO D0 DESENHO AUTOMÁTICO DE CILINDROS DE DUPLO EFEITO AUTOLISP CONCEPÇÃO E FABRICO ASSISTIDOS POR COMPUTADOR ANO LECTIVO CONCEPÇÃO E FABRICO ASSISTIDOS POR COMPUTADOR ANO LECTIVO 001-00 IMPLEMENTAÇÃO D0 DESENHO AUTOMÁTICO DE CILINDROS DE DUPLO EFEITO AUTOLISP MARIA JOÃO TAVARES DE CASTRO SANTOS COSTA MARIA TERESA VITERBO

Leia mais

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

EM GESTÃO E ENGENHARIA INDUSTRIAL Disciplina de Concepção e Fabrico Assistidos por Computador LICENCIATURA EM GESTÃO E ENGENHARIA INDUSTRIAL Disciplina de Concepção e Fabrico Assistidos por Computador DESENHO AUTOMÁTICO DE UM SEPARADOR DE ÁGUA DA SÉRIE EAMG AUTORIA: Gonçalo Nuno Correia Reis Vilarinho

Leia mais

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

AutoLISP - III Funções de repetição e condicionais, Obter e converter informação. João Manuel R. S. Tavares Joaquim Oliveira Fonseca 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 2 Figura A: If A

Leia mais

Elbow flange coupling

Elbow flange coupling Elbow flange coupling Docentes: Eng. João Manuel Ribeiro Silva Tavares Eng. Joaquim de Oliveira Fonseca Realizado por: Rui José Esteves Miranda Licenciatura em Gestão e Engenharia Industrial ÍNDICE SUMÁRIO...2

Leia mais

AutoLISP Programas Exemplo

AutoLISP Programas Exemplo 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

Leia mais

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

AutoLISP Programas Exemplo. João Manuel R. S. Tavares Joaquim Oliveira Fonseca AutoLISP Programas Exemplo João Manuel R. S. Tavares Joaquim Oliveira Fonseca 1º Exemplo - Rectângulo (O utilizador define a largura, a altura e o ponto pt1. AutoLISP - Programas Exemplo 2009@JST/JOF 2

Leia mais

1º Exemplo - Rectângulo

1º Exemplo - Rectângulo 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

Leia mais

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

Instituto Superior Técnico Licenciatura em Arquitectura Desenho Assistido por Computador II Ano lectivo 2005/06, 2 ano Instituto Superior Técnico Licenciatura em Arquitectura Desenho Assistido por Computador II Ano lectivo 2005/06, 2 ano Responsável: Assistente: Prof. José Pinto Duarte Arq. Deborah Benrós Notas de apoio

Leia mais

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

Função condicional - if. AutoLISP - III Funções de repetição e condicionais, Obter e converter informação AutoLIP - III Funções de repetição e condicionais, Obter e converter informação João Manuel R.. Tavares Joaquim Oliveira Fonseca Função condicional - if 2 Figura A: If A

Leia mais

AutoLISP -VII 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 e de AutoLISP -VII Funções Geométricas, de Strings, de Listas e de João Manuel R. S. Tavares / JOF Funções geométricas As funções geométricas do AutoLISP são: distance, angle, polar, inters, cal, osnap

Leia mais

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

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 João Manuel R. S. Tavares Joaquim Oliveira Fonseca Funções geométricas As funções geométricas do AutoLISP são: distance, angle, polar, inters,

Leia mais

DCL Dialog Control Language: Introdução

DCL Dialog Control Language: Introdução DCL Dialog Control Language: Introdução João Manuel R. S. Tavares Bibliografia Material disponível no AfraLisp.net em http://www.afralisp.net Programação em AutoCAD, Curso Completo Fernando Luís Ferreira,

Leia mais

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

CFAC: AutoLISP (II) - Cálculos, Variáveis e Listas AutoLISP -II Cálculos, Variáveis e Listas João Manuel R. S. Tavares / JOF Cálculos Expressões matemáticas são escritas na notação infixa; isto é, o operador antecede os operandos: 1+2 (+ 1 2 32.12-22.5

Leia mais

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

AutoLISP - II Cálculos, Variáveis e Listas. João Manuel R. S. Tavares Joaquim Oliveira Fonseca AutoLISP - II Cálculos, Variáveis e Listas João Manuel R. S. Tavares Joaquim Oliveira Fonseca Cálculos Expressões matemáticas são escritas na notação infixa; isto é, o operador antecede os operandos: 1

Leia mais

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

AutoLISP -II Cálculos, Variáveis e Listas AutoLISP -II Cálculos, Variáveis e Listas João Manuel R. S. Tavares Joaquim Oliveira Fonseca Cálculos Expressões matemáticas são escritas na notação infixa; isto é, o operador antecede os operandos: 1

Leia mais

CFAC: AutoLISP (I) - Introdução

CFAC: AutoLISP (I) - Introdução AutoLISP -I Introdução João Manuel R. S. Tavares / JOF Bibliografia Programação em AutoCAD, Curso Completo Fernando Luís Ferreira, João Santos FCA Programando em AutoLISP Kramer, W. e Kramer MAKRON Books

Leia mais

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

Exercícios de Programação e Computação para Arquitectura. António Menezes Leitão Exercícios de Programação e Computação para Arquitectura António Menezes Leitão 7 de Novembro de 2008 Figura 1: Treliça composta por elementos triangulares iguais. b a 0 b 0 a 1 1 a 2 c 0 c 1 c 2 Figura

Leia mais

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

Exemplo: ; ver exemplo de aplicação abaixo com mapcar. ; retorna uma lista formada pelos elementos indicados. ; retorna o número de elementos na lista Instituto Superior Técnico Licenciatura em Arquitectura Desenho Assistido por Computador II Ano lectivo 2005/06, 2 ano Responsável: Assistente: Prof. José Pinto Duarte Arq. Deborah Benrós Notas de apoio

Leia mais

AutoLISP -I Introdução

AutoLISP -I Introdução AutoLISP -I Introdução João Manuel R. S. Tavares Joaquim Oliveira Fonseca Bibliografia Programação em AutoCAD, Curso Completo Fernando Luís Ferreira, João Santos FCA Programando em AutoLISP Kramer, W.

Leia mais

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

AutoLISP - I Introdução. João Manuel R. S. Tavares Joaquim Oliveira Fonseca AutoLISP - I Introdução João Manuel R. S. Tavares Joaquim Oliveira Fonseca Bibliografia Programação em AutoCAD, Curso Completo Fernando Luís Ferreira, João Santos FCA Programando em AutoLISP Kramer, W.

Leia mais

Concepção e Fabrico Assistido por Computador

Concepção e Fabrico Assistido por Computador Concepção e Fabrico Assistido por Computador João Pedro Amorim Lobato: gei00017@fe.up.pt Turma: LGEI Trabalho sobre Regressões em Visual Basic Licenciatura em Gestão e Engenharia Industrial

Leia mais

Caixa de Velocidades. Índice

Caixa de Velocidades. Índice Índice Índice... 1 Introdução:... 2 Discriminação dos layers utilizados e sua aplicação:... 2 Sumário da execução do trabalho:... 4 Normas utilizados para a realização do desenho:... 5 Comandos mais relevantes

Leia mais

Conjuntos de selecção

Conjuntos de selecção AutoLISP -VI Conjuntos de selecção João Manuel R. S. Tavares / JOF Conjuntos de selecção Cada vez que um item (ou grupo de itens é manuseado no AutoCAD, um conjunto de selecção está activo. Conjuntos de

Leia mais

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

Programação e Computação para Arquitectura 2010/2011 Instituto Superior Técnico Programação e Computação para Arquitectura 2010/2011 Segundo Teste/Primeiro Eame 10/01/2011 Nome: Número: Escreva o seu número em todas as folhas da prova. O tamanho das respostas

Leia mais

1 - Ambiente de desenvolvimento

1 - Ambiente de desenvolvimento Neste documento começa-se por apresentar o ambiente de desenvolvimento integrado do Visual Basic (menu bar, toolbars, toolbox, project explorer window, properties window, form designer e code editor window).

Leia mais

AutoLISP -V Manipulação de entidades

AutoLISP -V Manipulação de entidades AutoLISP -V Manipulação de entidades João Manuel R. S. Tavares Joaquim Oliveira Fonseca Dados das entidades No Autolisp, o processo de acesso aos dados das entidades estende-se a vários níveis da estrutura

Leia mais

Concepção e Fabrico Assistidos por Computador

Concepção e Fabrico Assistidos por Computador Departamento de Eng. Mecânica e Gestão Industrial Concepção e Fabrico Assistidos por Computador Mestrado Integrado em Engenharia Mecânica Teste Escrito 14/01/2008 2007/2008 Duração total: 90 min SEM CONSULTA

Leia mais

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

C.F.A.C. Concepção e Fabrico Assistido por Computador Faculdade de Engenharia da Universidade do Porto DEMEGI-SDI C.F.A.C. Concepção e Fabrico Assistido por Computador Trabalho elaborado por: - Alcides Correia Martins de Sá - Rui Manuel Soares do Rêgo Ano:

Leia mais

AutoLISP - VI Conjuntos de seleção

AutoLISP - VI Conjuntos de seleção AutoLISP - VI Conjuntos de seleção João Manuel R. S. Tavares Joaquim Oliveira Fonseca Conjuntos de seleção Cada vez que um item (ou grupo de itens) é manuseado no AutoCAD, um conjunto de seleção está ativo.

Leia mais

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

ÍNDICE PROGRAMÁTICO DA ACÇÃO DE FORMAÇÃO DE DESENHO ASSISTIDO POR COMPUTADOR, AutoCad 2018 ÍNDICE PROGRAMÁTICO DA ACÇÃO DE FORMAÇÃO DE DESENHO ASSISTIDO POR COMPUTADOR, AutoCad 2018 ACÇÃO DE FORMAÇÃO A 2 DIMENSÕES EM AutoCad 2018 REGIÃO AÇORES DA ORDEM DOS ENGENHEIROS DE 9 DE OUTUBRO 2017 A

Leia mais

Métodos de Programação I Ana Maria de Almeida

Métodos de Programação I Ana Maria de Almeida Métodos de Programação I 2. 13 type naipe = ( ouros, copas, paus, espadas ); var trunfo : naipe; Claro que são apenas identificadores e não existirá a mesma escolha de operadores e funções sobre eles que

Leia mais

@2007 João Manuel R. S. Tavares FEUP/DEMEGI/SDI. CFAC Concepção e Fabrico Assistidos por Computador

@2007 João Manuel R. S. Tavares FEUP/DEMEGI/SDI. CFAC Concepção e Fabrico Assistidos por Computador João Manuel R. S. Tavares CFAC Concepção e Fabrico Assistidos por Computador Bibliografia Material disponível no AfraLisp.net em http://www.afralisp.net Programação em AutoCAD, Curso Completo Fernando

Leia mais

APROG. Civil. Programas Básicos. ISEP DEI, Angelo Martins 2006 ISEP DEI, António Silva Programas Básicos

APROG. Civil. Programas Básicos. ISEP DEI, Angelo Martins 2006 ISEP DEI, António Silva Programas Básicos Conteúdo Exemplo de um programa Apresentação sumária da construção de um programa em VB. Objectos e o mecanismo de eventos Apresentação dos conceitos básicos de programação em ambiente MS Windows. Tipos

Leia mais

A linguagem C (visão histórica)

A linguagem C (visão histórica) A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,

Leia mais

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007 ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA INTRODUÇÃO À PROGRAMAÇÃO (ENG. INFORMÁTICA) COMPUTADORES E PROGRAMAÇÃO I (ENG. ELECTROTÉCNICA) 2006/2007 TRABALHO PRÁTICO Nº

Leia mais

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

4 - APLICAÇÕES DE PROGRAMAÇÃO CNC/ISO COM MICROCOMPUTADOR 4 - APLICAÇÕES DE PROGRAMAÇÃO CNC/ISO COM MICROCOMPUTADOR Do que já foi exposto, tem-se a impressão de que seria benéfico para todos a possibilidade de se trabalhar com programas que, dentro do possível,

Leia mais

2. LAYERS UTILIZADAS E APLICAÇÕES

2. LAYERS UTILIZADAS E APLICAÇÕES 1. OBJECTIVO O presente trabalho tem como objectivo a execução em AutoCAD do desenho de conjunto de um Molde de Injecção para Recipiente de Gargalo Roscado em polipropileno e a respectiva elaboração em

Leia mais

PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO 11ºANO

PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO 11ºANO PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO 11ºANO Módulo 8 - Int. ao Visual Basic 1. O Visual Basic É uma linguagem de programação que utiliza objectos programáveis como interface com o utilizador. Foi criada

Leia mais

ZS Rest. Manual Profissional. BackOffice Mapa de Mesas. v2011

ZS Rest. Manual Profissional. BackOffice Mapa de Mesas. v2011 Manual Profissional BackOffice Mapa de Mesas v2011 1. Índice 2. INTRODUÇÃO... 2 3. INICIAR O ZSRest Backoffice... 3 1 4. Confirmar desenho de mesas...... 4 b) Activar mapa de mesas... 4 c) Zonas... 4 5.

Leia mais

ZS Rest. Manual Avançado. Início v.1. v2011

ZS Rest. Manual Avançado. Início v.1. v2011 Manual Avançado Funcionamento Início v.1 com cartões v2011 1. Índice 2. INTRODUÇÃO... 2 3. INICIAR O ZSRest FrontOffice... 3 1 4. Séries... 4 b) Adicionar Série... 4 i. Tipo de série... 5 c) Modificar

Leia mais

Ferramentas Web, Web 2.0 e Software Livre em EVT

Ferramentas Web, Web 2.0 e Software Livre em EVT E s t u d o s o b r e a i n t e g r a ç ã o d e f e r r a m e n t a s d i g i t a i s n o c u r r í c u l o d a d i s c i p l i n a d e E d u c a ç ã o V i s u a l e T e c n o l ó g i c a Bitmap Font Writer

Leia mais

Engenharia de Software

Engenharia de Software Sumário Engenharia de Software Modelos de desenvolvimento de software Fases de desenvolvimento Programação modular Abordagem top-down e bottom-up Linguagens de programação: Compilação / Interpretação Aplicação

Leia mais

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia 1 Estruturada Quando precisamos de escrever código para resolver um determinado problema, dizemos normalmente que precisamos de um "programa" para esse fim. Programa, aqui, é entendido como um conjunto

Leia mais

Informática II Cap. 4-4

Informática II Cap. 4-4 Cap. 4-4 1 Estruturada Quando precisamos de escrever código para resolver um determinado problema, dizemos normalmente que precisamos de um "programa" para esse fim. Programa, aqui, é entendido como um

Leia mais

Melhor caminho entre duas estações de metro

Melhor caminho entre duas estações de metro Melhor caminho entre duas estações de metro Concepção e Análise de Algoritmos Turma Nuno Machado Matos Tiago Daniel Sá Cunha Data: 11 de Junho de 2010 Introdução No âmbito da realização do projecto da

Leia mais

Introdução ao Controlo Numérico Computorizado III Sintaxe de Escrita (G, M, ) João Manuel R. S. Tavares Joaquim Oliveira Fonseca

Introdução ao Controlo Numérico Computorizado III Sintaxe de Escrita (G, M, ) João Manuel R. S. Tavares Joaquim Oliveira Fonseca Introdução ao Controlo Numérico Computorizado III Sintaxe de Escrita (G, M, ) João Manuel R. S. Tavares Joaquim Oliveira Fonseca Edição de programas de CN O sistema de controlo de uma máquina-ferramenta

Leia mais

Introdução à Computação. Programas Básicos. ISEP DEI, Angelo Martins 2006 Programas Básicos - 1

Introdução à Computação. Programas Básicos. ISEP DEI, Angelo Martins 2006 Programas Básicos - 1 Introdução à Computação Programas Básicos ISEP DEI, Angelo Martins 2006 Programas Básicos - 1 Conteúdo Exemplo de um programa Apresentação sumária da construção de um programa em VB. Objectos e o mecanismo

Leia mais

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

Modelação Geométrica e Visualização de Edifícios 2007/2008 Instituto Superior Técnico Modelação Geométrica e Visualização de Edifícios 2007/2008 Segundo Teste/Primeiro Exame 3/07/2008 Nome: Número: Escreva o seu número em todas as folhas da prova. O tamanho das

Leia mais

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

Introdução ao Controlo Numérico Computorizado III Sintaxe de Escrita (G, M, ) Introdução ao Controlo Numérico Computorizado III Sintaxe de Escrita (G, M, ) João Manuel R. S. Tavares Joaquim Oliveira Fonseca Edição de programas de CN O sistema de controlo de uma máquina-ferramenta

Leia mais

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

LISP - Introdução. Existem vários dialectos de LISP: COMMON LISP (o mais sofisticado e mais utilizado) Outros: MAC LISP, INTERLISP, XLISP LISP - Introdução Linguagem de alto nível, criada por John McCarty em 1959, tendo em vista facilitar a programação de sistemas de raciocínio baseados em lógica Foi adoptada como linguagem principal em

Leia mais

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

Prof Evandro Manara Miletto. parte 1

Prof Evandro Manara Miletto. parte 1 Prof Evandro Manara Miletto parte 1 Sumário Introdução Variáveis e tipos de dados Operadores O que é JavaScript? JavaScript é uma linguagem de programação criada pela Netscape para adicionar interatividade

Leia mais

RELATÓRIO CFAC Ano lectivo

RELATÓRIO CFAC Ano lectivo RELATÓRIO CFAC Ano lectivo 2002-2003 Trabalho em Lanterna ø160 para motor eléctrico forma 71 Trabalho realizado por: Mafalda Sofia Ferreira de Oliveira Jorge André Neves Oliveira Turma: 3M2 Índice Objectivo.3

Leia mais

Introdução à Lógica de Programação

Introdução à Lógica de Programação Introdução à Lógica de Programação Não estamos aqui para sobreviver e sim para explorar a oportunidade de vencer adquirindo o saber! (Autor Desconhecido) A lógica é a arte de pensar correctamente e, visto

Leia mais

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa AULA 2: INTRODUÇÃO A PYTHON Luís Feliphe Silva Costa Sumário Variáveis simples Entrada e Saída de dados Operadores Estruturas Condicionais Estruturas de repetição Funções Tratamento de erros Variáveis

Leia mais

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

CFAC: Introdução ao AutoCAD - I. Capitulo I: Iniciação ao AutoCAD Introdução ao AutoCAD João Manuel R. S. Tavares Bibliografia AutoCAD 2002 Depressa & Bem Pedro Leão Neto, José Manuel Garcia FCA AutoCAD 2004 Guia de Consulta Rápida João Santos FCA Mechanical Desktop

Leia mais

Exemplo 1. t = [0:2:20] ; g = 9.81; m = 68.1; cd = 0.25; v = sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t); plot(t, v) 2013/02/14

Exemplo 1. t = [0:2:20] ; g = 9.81; m = 68.1; cd = 0.25; v = sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t); plot(t, v) 2013/02/14 Gráficos Aqui é que há uma diferença entre as capacidades gráficas dos dois ambientes, MATLAB e Octave. O MATLAB permite mais variantes. No curso bastam-nos as possibilidades do Octave que trabalha sobre

Leia mais

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO MATERIAL DIDÁTICO IMPRESSO CURSO: Física DISCIPLINA: Informática para o Ensino de Física CONTEUDISTA: Carlos Eduardo Aguiar

Leia mais

Teste do Programa Writer do OpenOffice

Teste do Programa Writer do OpenOffice Teste do Programa Writer do OpenOffice Patrícia Barrosa Filipe mei04013 Disciplina: Teste e Qualidade de Software Mestrado em Engenharia Informática - FEUP 1 Índice Introdução... 3 Oppenoffice Writer...

Leia mais

Oficina: Programação para Android com o App Inventor. Profª. Alana Gama Licencianda em Ciências da Computação IF Baiano Campus Senhor do Bonfim

Oficina: Programação para Android com o App Inventor. Profª. Alana Gama Licencianda em Ciências da Computação IF Baiano Campus Senhor do Bonfim Oficina: Programação para Android com o App Inventor Profª. Alana Gama Licencianda em Ciências da Computação IF Baiano Campus Senhor do Bonfim Desenvolver o quinto Item da lista (Programação) Testa uma

Leia mais

Associações de Ficheiros. Mike McBride Tradução: José Pires

Associações de Ficheiros. Mike McBride Tradução: José Pires Mike McBride Tradução: José Pires 2 Conteúdo 1 Associações de Ficheiros 4 1.1 Introdução.......................................... 4 1.2 Como usar este módulo.................................. 4 1.2.1

Leia mais

Organização de programas em Pascal

Organização de programas em Pascal Organização de programas em Pascal Leonardo Gresta Paulino Murta leomurta@ic.uff.br Vamos programar em Pascal! Mas... Como um programa é organizado? Quais são os Apos de dados disponíveis? Como variáveis

Leia mais

Ferramentas Web, Web 2.0 e Software Livre em EVT

Ferramentas Web, Web 2.0 e Software Livre em EVT E s t u d o s o b r e a i n t e g r a ç ã o d e f e r r a m e n t a s d i g i t a i s n o c u r r í c u l o d a d i s c i p l i n a d e E d u c a ç ã o V i s u a l e T e c n o l ó g i c a Twiddla M a n

Leia mais

Capítulo 10. MATRIZES

Capítulo 10. MATRIZES Capítulo 10. MATRIZES OBJETIVOS DO CAPÍTULO Conceitos de: conjunto multidimensional (matriz), ciclo implícito, ciclo duplo Comandos do FORTRAN: DIMENSION(:,:), MATMUL 10.1 programa10a.f90 Para inicializar

Leia mais

Ferramentas Web, Web 2.0 e Software Livre em EVT

Ferramentas Web, Web 2.0 e Software Livre em EVT Estudo sobre a integração de ferramentas digitais no currículo da disciplina de Educação Visual e Tecnológica fontstruct Manual e Guia de exploração do fontstruct para utilização em contexto de Educação

Leia mais

Manual do Utilizador. Declaração Anual Suporte Informático. Anexo J /Modelo 10

Manual do Utilizador. Declaração Anual Suporte Informático. Anexo J /Modelo 10 Manual do Utilizador Declaração Anual Suporte Informático Anexo J /Modelo 10 TSR Sistemas de Informação, Lda. FEVEREIRO 2010 Pág. 2 Índice Objectivo... 3 Instalação... 3 Utilizadores... 3 Utilitários de

Leia mais

Fundamentos Programação

Fundamentos Programação Fundamentos Programação A programação de computadores não é difícil. Realmente só requer algo como: Aprender alguns conceitos gerais Ser cuidadoso, organizado e lógico Praticar até aprender a dominar a

Leia mais

Actualizar o Firmware da Câmara Digital SLR

Actualizar o Firmware da Câmara Digital SLR Actualizar o Firmware da Câmara Digital SLR Obrigado por ter escolhido um produto Nikon. Este guia descreve como actualizar este firmware. Se não tiver a certeza de que pode executar correctamente a actualização,

Leia mais

Escola Superior de Tecnologia e de Gestão Instituto Politécnico de Bragança. Guia Informativo para utilizadores do LPAC. Âmbito: Ferramenta CAE Ansys

Escola Superior de Tecnologia e de Gestão Instituto Politécnico de Bragança. Guia Informativo para utilizadores do LPAC. Âmbito: Ferramenta CAE Ansys Instituto Politécnico de Bragança Guia Informativo para utilizadores do LPAC Âmbito: Ferramenta CAE Ansys Análise modal de estruturas Elaborado por : Data: Junho de 1997 Análise modal de um sistema mecânico

Leia mais

O Manual do KBruch. Sebastian Stein Anne-Marie Mahfouf Tradução: José Pires

O Manual do KBruch. Sebastian Stein Anne-Marie Mahfouf Tradução: José Pires Sebastian Stein Anne-Marie Mahfouf Tradução: José Pires 2 Conteúdo 1 Introdução 5 2 Usar o KBruch 6 2.1 Escolhe o modo: aprendizagem ou exercícios...................... 6 2.2 Ecrã Principal de Exercício.................................

Leia mais

Atualizar o Firmware para o Transmissor Sem Fios WT 7

Atualizar o Firmware para o Transmissor Sem Fios WT 7 Atualizar o Firmware para o Transmissor Sem Fios WT 7 Obrigado por ter escolhido um produto Nikon. Este guia descreve como atualizar o firmware para o transmissor sem fios WT 7. Se não estiver confiante

Leia mais

Importação de dados de geometria a partir de um ficheiro DXF

Importação de dados de geometria a partir de um ficheiro DXF Manual de engenharia No. 30 Atualização: 04/2019 Importação de dados de geometria a partir de um ficheiro DXF Programa: GEO5 FEM Arquivo GEO5: Demo_manual_30.gmk Ficheiros DXF: - model201.dxf ficheiro

Leia mais

Melhor caminho entre duas estações de metro

Melhor caminho entre duas estações de metro Faculdade de Engenharia da Universidade do Porto Mestrado Integrado em Engenharia Informática e Computação Melhor caminho entre duas estações de metro Relatório do Trabalho Prático de CPAL 2008/2009 João

Leia mais

Ferramentas Web, Web 2.0 e Software Livre em EVT

Ferramentas Web, Web 2.0 e Software Livre em EVT E s t u d o s o b r e a i n t e g r a ç ã o d e f e r r a m e n t a s d i g i t a i s n o c u r r í c u l o d a d i s c i p l i n a d e E d u c a ç ã o V i s u a l e T e c n o l ó g i c a Board800 M a

Leia mais

Manual do Gestor da Turma

Manual do Gestor da Turma Faculdade de Engenharia da Universidade do Porto Licenciatura Informática e Computação Laboratório de Informática Avançada Automatização de Horários Manual do Gestor da Turma João Braga http://www.fe.up.pt/~ei97027/lia.html

Leia mais

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Linguagem C Introdução Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Porquê C em AC? A linguagem C fornece um modelo de programação próximo da máquina física

Leia mais

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

2.2.5 EXPRESSÕES - Regras para o cálculo de valores Métodos de Programação I Departamento de Matemática, FCTUC 30 2.2.5 EXPRESSÕES - Regras para o cálculo de valores As expressões fornecidas ao computador, quer tenham variáveis, constantes ou apenas literais,

Leia mais

Tecnologias da Informação e Comunicação: Sistema Operativo em Ambiente Gráfico

Tecnologias da Informação e Comunicação: Sistema Operativo em Ambiente Gráfico Tecnologias da Informação e Comunicação UNIDADE 1 Tecnologias da Informação e Comunicação: Sistema Operativo em Ambiente Gráfico 1º Período SUMÁRIO Sistema Operativo: definição e tipos. Elementos básicos

Leia mais

Sumário. Ficheiros. Ficheiros

Sumário. Ficheiros. Ficheiros Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções

Leia mais

Actualizar o Firmware da Câmara Digital SLR. Windows

Actualizar o Firmware da Câmara Digital SLR. Windows Actualizar o Firmware da Câmara Digital SLR Windows Obrigado por ter escolhido um produto Nikon. Este guia descreve como actualizar este firmware. Se não tiver a certeza de que pode executar correctamente

Leia mais

Fundamentos de Programação

Fundamentos de Programação Licenciatura em Engenharia Informática e de Computadores Fundamentos de Programação Trabalho para casa 22 de Setembro de 2008 Este trabalho corresponde à instalação, no seu computador, do interpretador

Leia mais

Ferramentas Web, Web 2.0 e Software Livre em EVT

Ferramentas Web, Web 2.0 e Software Livre em EVT Estudo sobre a integração de ferramentas digitais no currículo da disciplina de Educação Visual e Tecnológica BitFontMaker Manual e Guia de exploração do BitFontMaker para utilização em contexto de Educação

Leia mais

SSC 0301 IC para Engenharia Ambiental

SSC 0301 IC para Engenharia Ambiental SSC 0301 IC para Engenharia Ambiental Definição e uso de funções Prof. Márcio Delamaro e Prof. Jorge Luiz e Silva delamaro@icmc.usp.br; jsilva@icmc.usp.br SSC 0301 IC para Engenharia Ambiental ICMC/USP

Leia mais

2. Configurações Básicas

2. Configurações Básicas 2. Configurações Básicas 2.1 Inserção das barras de ferramentas Para ativar ou desativar as barras de ferramentas, devemos acessar: no menu superior, TOOL >> Toolbars >>> AutoCAD ou simplesmente clicar

Leia mais

1.2 Organização de directórios e ficheiros A linha de comandos

1.2 Organização de directórios e ficheiros A linha de comandos 1.2 Organização de directórios e ficheiros 1.2.1 A linha de comandos A linha de comandos Quando fazemos login no sistema, utilizando um username e uma password, o computador fica à espera das nossas ordens

Leia mais

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

UNIVERSIDADE ESTADUAL DE SANTA CRUZ DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE ENGENHARIA ELÉTRICA UNIVERSIDADE ESTADUAL DE SANTA CRUZ DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE ENGENHARIA ELÉTRICA CET925 INSTALAÇÕES ELÉTRICAS PREDIAIS TUTORIAL AUTOCAD 1 UNIVERSIDADE ESTADUAL DE SANTA

Leia mais

Aplicação da Programação CNC a um Eléctrodo com Forma de uma Cruzeta

Aplicação da Programação CNC a um Eléctrodo com Forma de uma Cruzeta FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO DEPARTAMENTO DE ENGENHARIA MECÂNICA E GESTÃO INDUTRIAL Aplicação da Programação CNC a um Eléctrodo com Forma de uma Cruzeta Concepção e Fabrico Assistido

Leia mais

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

CFAC: Introdução ao AutoCAD - V. Capitulo V: Construções geométricas Introdução ao AutoCAD João Manuel R. S. Tavares Objectivos Criar objectos utilizando comandos básicos de desenho: Arc e suas opções; Boundary; Circle, Donut, Ellipse, Point; Multiline, Polyline, Spline,

Leia mais

Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1

Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1 2006/2007 Trabalho prático nº 1 Trabalho realizado por: Pedro Oliveira (501062444) Rui Costa (501062452) Turma: TP1 1 - Introdução O objectivo deste trabalho era implementar um simulador de Autómatos Finitos

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas Nome: Número: Computação e Programação 2017-2018 Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas DECivil Exame Época Normal 10 de janeiro de 2018 Exame sem

Leia mais

Exercícios de Programação e Computação para Arquitectura

Exercícios de Programação e Computação para Arquitectura Exercícios de Programação e Computação para Arquitectura António Menezes Leitão Aula 7 1 Introdução Uma treliça é uma estrutura composta por barras rígidas que se unem em nós, formando unidades triangulares,

Leia mais

Operadores Lógicos e Relacionais Comandos condicionais (if-else) Casting AULA 04

Operadores Lógicos e Relacionais Comandos condicionais (if-else) Casting AULA 04 Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Operadores Lógicos e Relacionais Comandos condicionais (if-else) Casting AULA 04 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares

Leia mais

OpenOffice.org. tutorial apresentação

OpenOffice.org. tutorial apresentação tutorial apresentação Criar uma nova apresentação Assistente Apresentação Inserir diapositivos Seleccionar diapositivos Formatar uma página Formatar diapositivos Vistas do espaço de trabalho Iniciar apresentação

Leia mais

Manual do Gestor das Salas

Manual do Gestor das Salas Faculdade de Engenharia da Universidade do Porto Licenciatura Informática e Computação Laboratório de Informática Avançada Automatização de Horários Manual do Gestor das Salas João Braga http://www.fe.up.pt/~ei97027/lia.html

Leia mais