Implementação de Desenhos Automáticos Elemento Hidráulico Normalizado. Concepção e Fabrico Assistidos por Computador Programação VBA

Documentos relacionados
Tutorial de Extensibilidade

Concepção e Fabrico Assistido por Computador

Concepção e Fabrico Assistido por Computador

Módulo 1a: Introdução ao Visual Basic for Applications (VBA)

Integração por Web Services

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Objectivos. Introdução à programação Macros em Microsoft Excel Introdução ao Visual Basic para Aplicações (VBA)

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

Variáveis Tipos de Dados

Grupo: Noé Pierre Gros Nuno Daniel Tavares de Fontes

Variáveis Tipos de Dados. APROG (Civil) Aula 2

Estruturas de Decisão. APROG (Civil) Aula 6

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.

Programação de Computadores usando VBA

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

Docentes. JOF/João Manuel R. S. Tavares 1. Eng. Joaquim Fonseca. Prof. José Marafona. MIEM Mestrado Integrado em Engenharia Mecânica

Software para Engenharia e Construção. Manual do Utilizador. Construtivos. Biblioteca de Pormenores. Construtivos. Manual do Utilizador

Fundamentos Programação

Nero AG Nero DiscCopy

Manual do Nero DriveSpeed

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

Manual Nero InfoTool. Nero AG

FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO DEPARTAMENTO DE ENGENHARIA MECÂNICA E GESTÃO INDUSTRIAL C.F.A.C. 2002/03

APROG Civil. Estruturas de Decisão. Angelo Martins Dep. Eng. Informática - ISEP. Aula 2. ISEP DEI, Angelo Martins 2006 ISEP-DEI, António Silva, 2007

RELATÓRIO CFAC Ano lectivo

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

1 - Ambiente de desenvolvimento

Modelagem em Engenharia C & A Aula 1- Introdução e informações

Este Exame é individual, sem consulta e com a duração de 90 minutos. Responda às questões no próprio teste, no espaço próprio.

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

MIEM Mestrado Integrado em Engenharia Mecânica

Páginas seleccionadas

ConvertProfissões 2011

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

FORCE. João Manuel R. S. Tavares

VBA USANDO TABELA DO WORD COMO BANDO DE DADOS

Instalação de mapas com Ferramenta de instalação de mapas TomTom WORK

MANUAL DE UTILIZADOR

Macros e Programação VBA

Trabalho final Formulário com VBA

1.2 Sistema Operativo em Ambiente Gráfico

Código do formulário frmprincipal

Licenciatura em Engenharia Mecânica. Concepção e Fabrico Assistidos por Computador ( C. F. A. C. ) 2001 / Secção de Desenho Industrial

1) Mostrando uma mensagem. 10 exemplos de macros essenciais no Excel. Este conteúdo faz parte da série: Excel VBA Ver 6 posts dessa série

Para instalar o Visual Basic 2010 Express.

Excel 2016 com VBA. Aula 5. Prof. Guilherme Nonino Rosa

Sincronização Plano de IVA 7.00

Visual Basic. III Procedimentos. CFAC Concepção e Fabrico Assistidos por Computador. João Manuel R. S. Tavares

DESENVOLVIMENTO DE SOFTWARE

Licenciatura em Gestão e Engenharia Industrial CFAC

Executar uma macro clicando em um botão da Barra de Ferramentas de Acesso Rápido

TÉCNICO DE INFORMÁTICA - SISTEMAS

Modulo 2 Gestão de Base

CFAC: Visual Basic: III - Procedimentos

Introdução... 1 I FUNCIONALIDADES BÁSICAS... 3

Para iniciarmos o trabalho se faz necessária a implantação da GUIA DESENVOLVEDOR. Botão Direito do Mouse; Personalizar Faixa de Opções

Computer Setup Manual do utilizador

Actualizar o Firmware da Câmara Digital SLR. Windows

Microsoft Excel Macro V. Índice 16-) Formulários ) Gerando código para o Formulário... 49

Exercícios Práticos de Modelação 3D em SolidWORKS

ÁBACO MÓDULOS DE CÁLCULO

Reconhecer alguns dos objectos VBA Automatizar bases de dados recorrendo à programação VBA e scripts SQL

Actualizações de software Manual do utilizador

Actualizar o Firmware da Câmara Digital SLR. Windows

CONCEÇÃO E FABRICO ASSISTIDO POR COMPUTADOR

Laboratórios de Comunicações III MiECom (2 o ano)

Programação 2017/2018 2º Semestre

2. LAYERS UTILIZADAS E APLICAÇÕES

Actualizações de software Manual do utilizador

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Manual do InCD Reader

Principais correcções efectuadas

Objectos Gráficos 1. APROG (Civil) Aula 4

Manual do KDiskFree. Jonathan Singer Michael Kropfberger Tradução: José Pires

Projecto de Investigação 2001/2002. Equipment Cost v1.0. Manual de Apoio

Estruturas de Decisão Embutidas. APROG (Civil) Aula 7

Engenharia de Software

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

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

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

Informática II Cap. 4-4

Utilitário de Configuração

CONCEPÇÃO E FABRICO ASSISTIDO POR COMPUTADOR

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular COMPUTAÇÃO GRÁFICA E SISTEMAS DE CAD Ano Lectivo 2013/2014

Visual Basic. VII Ficheiros Sequenciais. CFAC Concepção e Fabrico Assistidos por Computador João Manuel R. S. Tavares

Tutoriais de Extensibilidade

Visual Basic for Applications

CFAC: Visual Basic: VII - Ficheiros Sequenciais. VII Ficheiros Sequenciais

DOSSIER DA DISCIPLINA

CFAC - MiEIG: Apresentação 2008/

Ficha de Unidade Curricular 2009/2010

Actualizar o Firmware da Câmara Digital SLR. Macintosh

Actualizar o Firmware da Câmara Digital SLR

elaboração da aplicação, estamos dependentes do software usado pelo Helpdesk. Por exemplo, como usam activamente o sistema operativo Linux,

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

Transcrição:

Implementação de Desenhos Automáticos Concepção e Fabrico Assistidos por Computador Programação VBA Faculdade de Engenharia da Universidade do Porto Licenciatura em Gestão e Engenharia Industrial 4º Ano - 1º Semestre 2004/2005

Implementação de Desenhos Automáticos - Implementação de Desenhos Automáticos Cilindro Hidráulico Z 160 André Filipe Mouta Sousa: andre.filipe@fe.up.pt 4º LGEI Concepção e Fabrico Assistidos por Computador Programação Prof. João Tavares / Eng. Joaquim Fonseca Licenciatura em Gestão e Engenharia Industrial 4º Ano - 1º Semestre 2004/2005 i

Implementação de Desenhos Automáticos - ESTE RELATÓRIO INSERE-SE NO ÂMBITO DA AVALIAÇÃO DA DISCIPLINA DE CONCEPÇÃO E FABRICO ASSISTIDOS POR COMPUTADOR DA LICENCIATURA EM GESTÃO E ENGENHARIA INDUSTRIAL. PRETENDE-SE COM ESTE TIPO DE TRABALHOS, DOTAR O PROGRAMA DA DISCIPLINA DE UMA FACETA MAIS PRÁTICA, TRANSPONDO PARA O ENSINO UNIVERSITÁRIO CENÁRIOS DA REALIDADE INDUSTRIAL E DESTE MODO PROPORCIONAR AOS ALUNOS A OPORTUNIDADE DE ADQUIRIR UMA MAIOR SENSIBILIDADE PARA ESTE TIPO DE PROBLEMAS. ii

Implementação de Desenhos Automáticos - Agradecimentos Reconhecendo a importância de todo o tempo e atenção dispendido ao longo do desenvolvimento do corrente trabalho, gostaria, de através do presente, agradecer aos professores: Eng. Joaquim Oliveira Fonseca Prof. João Manuel R. da Silva Tavares iii

ÍNDICE SUMÁRIO...2 OBJECTIVOS...2 PROJECTO DE IMPLEMENTAÇÃO DE DESENHOS AUTOMÁTICOS...2 ESPECIFICAÇÃO DOS REQUISITOS FUNCIONAIS DO UTILIZADOR...2 ESPECIFICAÇÃO DE SUPORTES LÓGICOS E INTERFACES GRÁFICAS...3 MAQUETAS DE INTERFACES GRÁFICAS COM O UTILIZADOR...3 LISTAGEM DE FICHEIROS FONTE...4 ESPECIFICAÇÃO DAS SUB-ROTINAS UTILIZADAS/DESENVOLVIDAS...4 PROCEDIMENTO PARA ACEDER AOS VALORES ARMAZENADOS NA BASE DE DADOS...4 PROCEDIMENTO PARA TORNAR VISÍVEL AS DIMENSÕES CARACTERÍSTICAS DAS OPÇÕES CONSTRUTIVAS M1/B1.6 PROCEDIMENTO PARA SAIR/FECHAR O PROJECTO...6 PROCEDIMENTO PARA EXECUTAR O MÓDULO mod2d, E ATRIBUIÇÃO DOS VALORES DA BD ÀS VARIÁVEIS..6 DECLARAÇÃO DAS VARIÁVEIS NO MÓDULO modglobal TORNANDO-AS PÚBLICAS NO PROJECTO...7 CONSTANTES...8 FUNÇÃO QUE EXECUTA A JANELA DE DIÁLOGO GUARDAR COMO......8 PROCEDIMENTO PARA EXECUÇÃO GRÁFICA 2D DO ELEMENTO NORMALIZADO...8 FUNÇÕES AUXILIARES...9 APONTAMENTO DO AUTOR...10 PROCEDIMENTO DE INSTALAÇÃO...10 TRABALHOS FUTUROS...10 CONLUSÕES...10 REFERÊNCIAS...11 BIBLIOGRAFIA...11 ANEXO A...12 Listagem do Código Fonte Desenvolvido...12 PROCEDIMENTO PARA EXECUÇÃO GRÁFICA 2D DO ELEMENTO NORMALIZADO...12 1

SUMÁRIO O presente relatório tem como objectivo documentar a aplicação desenvolvida no âmbito da disciplina Concepção e Desenho Assistidos por Computador, que visa a implementação de um desenho automático de um elemento normalizado com o recurso a uma linguagem de programação suportada pelo Autocad. Para o desenvolvimento deste trabalho foram utilizadas as seguintes aplicações de software, MS Access 2003, MS Visual Basic 6.0 e Autocad 2004. Para atingir o objectivo proposto, optou-se pelo recurso à linguagem de programação Visual Basic for Applications. OBJECTIVOS Implementação de um desenho automático de um elemento normalizado; ELEMENTO NORMALIZADO: Cilindro Hidráuico Z160 Manipulação de uma linguagem de programação suportada pelo Autocad; Elaboração da documentação necessária para assistir/acompanhar a aplicação desenvolvida; Comentar de forma standard o código desenvolvido sempre que necessário/relevante; PROJECTO DE IMPLEMENTAÇÃO DE DESENHOS AUTOMÁTICOS ESPECIFICAÇÃO DOS REQUISITOS FUNCIONAIS DO UTILIZADOR util.projectoz160 1 A aplicação permite obter um desenho 2D de um cilindro hidráulico de referência Z160 do fabricante HEB util.projectoz160 2 As dimensões standard do elemento fornecidas pelo fabricante são carregadas a partir de uma base de dados criada para o efeito. Estas dimensões podem ser seleccionadas pelo utilizador de acordo com as suas necessidades. util.projectoz160 3 É possível optar por uma das duas opções construtivas adoptadas pelo fabricante, por cada execução da aplicação. util.projectoz160 4 O desenho 2D será sempre executado num template anteriormente existente e que deve acompanhar sempre o projecto. util.projectoz160 5 Na interface com o utilizador, deve seleccionar-se o diâmetro do pistão, a opção de construção e a série (a partir de L1) do cilindro pretendido. util.projectoz160 6 Na interface estarão visíveis as dimensões de construção fornecidas pelo fabricante de acordo com as escolhas feitas pelo utilizador anteriomente. util.projectoz160 7 Existe, na interface, um botão de execução da aplicação e outro para sair da mesma. util.projectoz160 8 Sempre que as dimensões de referência fornecidas pelo fabricante forem alteradas pelo mesmo, é possível actualizar a base de dados sem que o projecto se torne obsoleto, já que em antevisão a estas situações foram criadas funções em linguagem de programação que asseguram o bom funcionamento do projecto sem grandes alterações da base de dados. 2

ESPECIFICAÇÃO DE SUPORTES LÓGICOS E INTERFACES GRÁFICAS MAQUETAS DE INTERFACES GRÁFICAS COM O UTILIZADOR Figura 1: Interface com o utilizador da aplicação projectoz160 Figura 2: Interface com o utilizador da aplicação projectoz160 Janela de diálogo Guardar Como... 3

LISTAGEM DE FICHEIROS FONTE Para a concretização do projecto em questão foram criados os seguintes ficheiros fonte onde se encontra todo o código desenvolvido: Z160.vbp modglobal.bas mod2d.bas Z160.frm projectoz160.exe O desenvolvimento deste projecto implicou ainda o desenvolvimento de uma base de dados a que se deu o nome de dbwcfac.mdb e de um template Autocad denominado acadz160.dwt. Estes dois ficheiros devem acompanhar sempre os restantes ficheiros do projecto. ESPECIFICAÇÃO DAS SUB-ROTINAS UTILIZADAS/DESENVOLVIDAS PROCEDIMENTO PARA ACEDER AOS VALORES ARMAZENADOS NA BASE DE DADOS Private Sub txtdiametropistao_change() recdimensoes.recordsource = "SELECT tbl_dados.* FROM tbl_dados INNER JOIN tbl_elemento ON tbl_dados.cod_dp = tbl_elemento.cod_dp WHERE (((tbl_elemento.dp)=" & txtdiametropistao.text & "))" recdimensoes.refresh txtd1.text = recdimensoes.recordset("d1") txtd2.text = recdimensoes.recordset("d2") txtd2g.text = recdimensoes.recordset("d2g") txtd3.text = recdimensoes.recordset("d3") txtd11.text = recdimensoes.recordset("d11") txtl2.text = recdimensoes.recordset("l2") txtl3.text = recdimensoes.recordset("l3") txtl4.text = recdimensoes.recordset("l4") txtl11.text = recdimensoes.recordset("l11") txtl12.text = recdimensoes.recordset("l12") txtl13.text = recdimensoes.recordset("l13") txtl14.text = recdimensoes.recordset("l14") txtl15.text = recdimensoes.recordset("l15") txtl19.text = recdimensoes.recordset("l19") txtl20.text = recdimensoes.recordset("l20") txtb8.text = recdimensoes.recordset("b8") txtb9.text = recdimensoes.recordset("b9") txtd7.text = recdimensoes.recordset("d7") txtr2.text = recdimensoes.recordset("r2") txtw1.text = recdimensoes.recordset("w1") txta.text = recdimensoes.recordset("a") txtadin.text = recdimensoes.recordset("adin") txte.text = recdimensoes.recordset("e") txta4.text = recdimensoes.recordset("l3") txta5.text = recdimensoes.recordset("a5") txta6.text = recdimensoes.recordset("a6") txtcrs.text = recdimensoes.recordset("crs") a1 = recdimensoes.recordset("a1") pd2g = recdimensoes.recordset("pd2g") padin = recdimensoes.recordset("padin") 4

pa6 = recdimensoes.recordset("pa6") End Sub If txtl1i.value = True Then txtl1i_click If txtl1ii.value = True Then txtl1ii_click If txtl1iii.value = True Then txtl1iii_click Private Sub txtl1i_click() If txtdiametropistao.text <> "" Then recl1.recordsource = "SELECT tbl_dpl1.l1 FROM tbl_elemento INNER JOIN tbl_dpl1 ON tbl_elemento.cod_dp = tbl_dpl1.cod_dp WHERE (((tbl_elemento.dp)=" & txtdiametropistao.text & ") AND ((tbl_dpl1.cod_l1)=1))" recl1.refresh txtl1.text = recl1.recordset("l1") Else MsgBox "Dimensão do Diâmetro do Pistão não definida!", vbexclamation + vbokonly, "Aviso" End Sub End If Private Sub txtl1ii_click() If txtdiametropistao.text <> "" Then recl1.recordsource = "SELECT tbl_dpl1.l1 FROM tbl_elemento INNER JOIN tbl_dpl1 ON tbl_elemento.cod_dp = tbl_dpl1.cod_dp WHERE (((tbl_elemento.dp)=" & txtdiametropistao.text & ") AND ((tbl_dpl1.cod_l1)=2))" recl1.refresh txtl1.text = recl1.recordset("l1") Else MsgBox "Dimensão do Diâmetro do Pistão não definida!", vbexclamation + vbokonly, "Aviso" End Sub End If Private Sub txtl1iii_click() If txtdiametropistao.text <> "" Then recl1.recordsource = "SELECT tbl_dpl1.l1 FROM tbl_elemento INNER JOIN tbl_dpl1 ON tbl_elemento.cod_dp = tbl_dpl1.cod_dp WHERE (((tbl_elemento.dp)=" & txtdiametropistao.text & ") AND ((tbl_dpl1.cod_l1)=3))" recl1.refresh 5

txtl1.text = recl1.recordset("l1") Else MsgBox "Dimensão do Diâmetro do Pistão não definida!", vbexclamation + vbokonly, "Aviso" End Sub End If PROCEDIMENTO PARA TORNAR VISÍVEL AS DIMENSÕES CARACTERÍSTICAS DAS OPÇÕES CONSTRUTIVAS M1/B1 Private Sub txtm1_click() End Sub fram1.visible = True FraB1.Visible = False Private Sub txtb1_click() End Sub FraB1.Visible = True fram1.visible = False PROCEDIMENTO PARA SAIR/FECHAR O PROJECTO Private Sub sair_click() End End Sub PROCEDIMENTO PARA EXECUTAR O MÓDULO mod2d, E ATRIBUIÇÃO DOS VALORES DA BD ÀS VARIÁVEIS Private Sub exedesenho2d_click() If BuscaFicheiro() = False Then Exit Sub Screen.MousePointer = vbhourglass d1 = txtd1.text diametropistao = txtdiametropistao.text d2 = txtd2.text d2g = txtd2g.text d3 = txtd3.text d11 = txtd11.text l1 = txtl1.text l2 = txtl2.text l3 = txtl3.text l4 = txtl4.text l11 = txtl11.text l12 = txtl12.text l13 = txtl13.text l14 = txtl14.text l15 = txtl15.text l19 = txtl19.text 6

l20 = txtl20.text b8 = txtb8.text b9 = txtb9.text d7 = txtd7.text r2 = txtr2.text w1 = txtw1.text a = txta.text adin = txtadin.text e = txte.text a4 = txta4.text a5 = txta5.text a6 = txta6.text crs = txtcrs.text End Sub desenha2d ' executa, chamando o módulo mod2d Screen.MousePointer = vbdefault DECLARAÇÃO DAS VARIÁVEIS NO MÓDULO modglobal TORNANDO-AS PÚBLICAS NO PROJECTO Public accordstart(2) As Double Public accord3(2) As Double Public accord4(2) As Double Public accord5(2) As Double Public accord6(2) As Double Public accord7(2) As Double Public accorde(2) As Double Public accorde1(2) As Double Public accorde3(2) As Double Public accorda(2) As Double 'Campos de texto Public d1 As String Public diametropistao As String Public d2 As String Public d2g As String Public d3 As String Public d11 As String Public l1 As String Public l2 As String Public l3 As String Public l4 As String Public l11 As String Public l12 As String Public l13 As String Public l14 As String Public l15 As String Public l19 As String Public l20 As String Public b8 As String Public b9 As String Public d7 As String Public r2 As String Public w1 As String Public a As String Public adin As String 7

Public e As String Public a4 As String Public a5 As String Public a6 As String Public crs As String 'Directamente da BD Public a1 As String Public pd2g As String Public padin As String Public pa6 As String CONSTANTES Public Const pi = 3.14159265358979 FUNÇÃO QUE EXECUTA A JANELA DE DIÁLOGO GUARDAR COMO... Public Function BuscaFicheiro() ' Abre a janela de diálogo "guardar como" frmz160.cmdsaveas.filename = "" frmz160.cmdsaveas.dialogtitle = "Guardar desenho..." frmz160.cmdsaveas.filter = "Ficheiros Autocad (*.dwg) *.dwg" frmz160.cmdsaveas.initdir = App.Path frmz160.cmdsaveas.showsave If frmz160.cmdsaveas.filename = "" Then BuscaFicheiro = False Else BuscaFicheiro = True End If End Function PROCEDIMENTO PARA EXECUÇÃO GRÁFICA 2D DO ELEMENTO NORMALIZADO Devido à extensão do código desenvolvido para a concretização deste item, reporta-se a totalidade daquele para anexo. Por este motivo será apenas apresentada nesta rubrica, a sintaxe que se considera mais relevante e que se pode encontrar neste fascículo de código em particular. Exemplo da criação de uma linha indicação de dois pontos e correspondentes coordenadas x,y,z accord1(0) = accordstart(0) accord1(1) = accordstart(1) - CDbl(d2g) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) - CDbl(d2g) + 0.1 * CDbl(d2g) Exemplo da criação de um arco indicação do centro, raio, startangle, endangle acaplic.activedocument.modelspace.addarc accord2, CDbl(d3) / 2, angadin1(cdbl(adin), CDbl(a1), CDbl(d3)), angadin2(cdbl(adin), CDbl(a1), CDbl(d3)) 8

Exemplo da criação de uma circunferência indicação do centro, raio acaplic.activedocument.modelspace.addcircle accordcentro, CDbl(d3) / 2 Exemplo da activação de uma layer existente no template autocad acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") FUNÇÕES AUXILIARES Estas funções foram criadas com o objectivo de obter dimensões indispensáveis à criação do desenho. Estas, são obtidas a partir das dimensões armazenadas na base de dados através de relações matemáticas, desta forma uma alteração do fabricante não implicará grandes alterações de código nem grandes actualizações da base de dados. Private Function angadin1(larg, altcaixa, diamcil) As Double angadin1 = (3 * pi / 2) - Arcsin(Sin((larg / 2 + altcaixa / 2) / (diamcil / 2))) End Function Private Function angadin2(larg, altcaixa, diamcil) As Double angadin2 = (3 * pi / 2) + Arcsin(Sin((larg / 2 + altcaixa / 2) / (diamcil / 2))) End Function Private Function r2i(raio, larg) As Double r2i = raio - Tan(Arcsin((larg / 2) / raio)) * (larg / 2) End Function Private Function e1(diamcil, alt) As Double e1 = Sqr((diamcil / 2) ^ 2 - (alt / 2) ^ 2) End Function Private Function e2(diamcil, alt) As Double e2 = Sqr((diamcil / 2) ^ 2 - (alt * 0.3) ^ 2) End Function Private Function r2adin(diamcil, larg, altcaixa) As Double r2adin = Sqr((diamcil / 2) ^ 2 - (larg / 2 + altcaixa / 2) ^ 2) End Function Private Function Arcsin(valor) As Double Arcsin = Atn(valor / Sqr(-valor * valor + 1)) End Function Private Function aint(diamcil, alt) As Double aint = Sqr((diamcil / 2) ^ 2 - ((diamcil / 2) - alt) ^ 2) End Function Private Function di(diamt, p) As Double di = diamt - 1.0825 * p End Function Private Function y(diamt11, larg) As Double y = Sqr((diamt11 / 2) ^ 2 - (larg / 2) ^ 2) End Function 9

APONTAMENTO DO AUTOR O facto do enunciado se encontrar em alemão levantou algumas dúvidas quanto ao curso dos cilindros normalizados nos seus vários segmentos disponibilizados pelo fabricante. Por este motivo foi arbitrado um valor de curso para cada um dos segmentos do elemento normalizado. Esta situação não é problemática para a concretização dos objetivos do trabalho uma vez que a qualquer momento a base de dados pode ser actualizada. PROCEDIMENTO DE INSTALAÇÃO O CD que acompanha este relatório contém uma pasta na raiz à qual foi dado o nome de trabalhodecfac. Esta pasta deverá ser copiada para o disco da máquina. No interior desta pasta, para além de todos os ficheiros necessários ao projecto, existe um ficheiro projectoz160.exe o qual sempre que executado dá início à aplicação. TRABALHOS FUTUROS No que diz respeito à prossecução deste projecto em particular, a minha sugestão vai de encontro à necessidade de muitas vezes o utilizador personalizar as dimensões do elemento, pelo que a criação de novas rotinas de programação permitirião esta faculdade ao projecto. A representação gráfica 3D deste elemento como complemento deste projecto faz também todo o sentido. Para além de incentivar o contínuo desenvolvimento de aplicações que implementem desenhos automáticos de elementos normalizados que se revelem de maior interesse para a Secção de Desenho Industrial, gostaria de sugerir o desenvolvimento de uma base de dados que armazene todas as aplicações até aqui desenvolvidas, e as que no futuro se venham a desenvolver. Deste modo é possível optimizar-se a gestão documental destas aplicações, com a certeza que esta iniciativa trará benefícios para todos os que trabalham com a Secção. CONLUSÕES As propostas feitas para trabalhos futuros poderiam ter sido desenvolvidas no âmbito deste projecto. Esta opção foi no entanto deixada de parte por considerar que tais desenvolvimentos não são indispensáveis para a concretização plena dos objectivos deste trabalho. 10

REFERÊNCIAS Como referências deste trabalho serviram todas as aplicações desenvolvidas no âmbito da disciplina, no que concerne à implementação de desenhos automáticos, utilizando várias linguagens de programação disponíveis para o efeito, tendo assumido principal relevo o seguinte trabalho: Título: Representação gráfica 3D em AutoCAD de um cilindro de duplo efeito Aplicações utilizadas: AutoCAD, Visual Basic e Access Linguagens utilizadas: Visual Basic for Aplications e Access Autores: Noé Pierre Gros e Nuno Daniel Tavares de Fontes (LGEI) Ano Lectivo: 2003/2004 BIBLIOGRAFIA FERREIRA, Fernando Luís, SANTOS João, Programação em AutoCAD Curso Completo, FCA, 2002, Programação. TAVARES, João M., FONSECA, Joaquim O., MARAFONA, José D., Sebenta de Concepção e Desenho Assistidos por Computador, SDI, Faculdade de Engenharia da Universidade do Porto, 2004. Morais, Simões, Desenho de Construções Mecânicas 3, Porto Editora, Desenho Técnico Básico. TAVARES, João M., Acetatos de Concepção e Desenho Assistidos por Computador, SDI, Faculdade de Engenharia da Universidade do Porto, 2004. Sebenta de Desenho e Construções Mecânicas, SDI, Faculdade de Engenharia da Universidade do Porto. 11

ANEXO A Listagem do Código Fonte Desenvolvido PROCEDIMENTO PARA EXECUÇÃO GRÁFICA 2D DO ELEMENTO NORMALIZADO Public Sub desenha2d() Dim acaplic As AutoCAD.AcadApplication Dim accordcentro(2) As Double Dim accordcentro1(2) As Double Dim accordcentro2(2) As Double Dim accordcentro3(2) As Double Dim accord1(2) As Double Dim accord2(2) As Double Dim straplic As String ' Variável para ficar com o local onde está instalado o Autocad Set acaplic = New AutoCAD.AcadApplication ' Cria o objecto acaplic como aplicação autocad straplic = acaplic.fullname ' Coloca na variável o local onde o autocad está instalado acaplic.activedocument.close 'Fecha o documento activo (o autocad abre sempre um documento em branco por defeito) acaplic.documents.add App.Path & "\acadz160.dwt" ' Cria um novo documento de autocad com o nome acadz160.dwt ' Vista Principal ' B1 If frmz160.txtb1.value = True Then accordstart(0) = 30 accordstart(1) = 210 accordstart(2) = 0 12

acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") accord1(0) = accordstart(0) accord1(1) = accordstart(1) accord2(0) = accordstart(0) accord2(1) = accordstart(1) - CDbl(d2g) accord1(0) = accordstart(0) accord1(1) = accordstart(1) - CDbl(d2g) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) - CDbl(d2g) + 0.1 * CDbl(d2g) accord1(0) = accordstart(0) accord1(1) = accordstart(1) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) - 0.1 * CDbl(d2g) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - CDbl(d2g) + 0.1 * CDbl(d2g) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) - 0.1 * CDbl(d2g) accord1(0) = accordstart(0) + CDbl(a5) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - CDbl(d2g) accord2(0) = accordstart(0) accord2(1) = accordstart(1) - CDbl(d2g) accord1(0) = accordstart(0) + CDbl(a5) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - CDbl(d2g) accord2(0) = accordstart(0) + CDbl(a5) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) 13

accord1(0) = accordstart(0) accord1(1) = accordstart(1) accord2(0) = accordstart(0) + CDbl(a5) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tf") accord1(0) = accordstart(0) + CDbl(a5) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - 0.1 * CDbl(d2g) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) - 0.1 * CDbl(d2g) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - CDbl(d2g) + 0.1 * CDbl(d2g) accord2(0) = accordstart(0) + CDbl(a5) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) - CDbl(d2g) + 0.1 * CDbl(d2g) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") accord1(0) = accordstart(0) + CDbl(a5) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - CDbl(d2g) + 1.5 * CDbl(pd2g) accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) - CDbl(d2g) + 1.5 * CDbl(pd2g) accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - 1.5 * CDbl(pd2g) accord2(0) = accordstart(0) + CDbl(a5) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) - 1.5 * CDbl(pd2g) accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 14

accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) - CDbl(d2g) accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - CDbl(d2g) * 0.5 + 0.25 * CDbl(d2g) * 2 / 3 accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + CDbl(d2g) * 2/6 accord2(1) = accordstart(1) - CDbl(d2g) * 0.5 + 0.25 * CDbl(d2g) * 2 / 3 accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - CDbl(d2g) * 0.5-0.25 * CDbl(d2g) * 2 / 3 accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + CDbl(d2g) * 2/6 accord2(1) = accordstart(1) - CDbl(d2g) * 0.5-0.25 * CDbl(d2g) * 2 / 3 accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + CDbl(d2g) * 2/6 accord1(1) = accordstart(1) - CDbl(d2g) * 0.5 + 0.25 * CDbl(d2g) * 2 / 3 accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + CDbl(d2g) * 2/6 accord2(1) = accordstart(1) - CDbl(d2g) * 0.5-0.25 * CDbl(d2g) * 2 / 3 accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - CDbl(d2g) * 0.5-0.25 * CDbl(d2g) * 2 / 3 accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + CDbl(d2g) * 2/6 accord2(1) = accordstart(1) - CDbl(d2g) * 0.5 + 0.25 * CDbl(d2g) * 2 / 3 accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - CDbl(d2g) * 0.5 + 0.25 * CDbl(d2g) * 2 / 3 accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + CDbl(d2g) * 2/6 accord2(1) = accordstart(1) - CDbl(d2g) * 0.5-0.25 * CDbl(d2g) * 2 / 3 15

accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) - CDbl(d2g) * 0.5 + 0.25 * CDbl(d2g) * 2 / 3 accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) - CDbl(d2g) * 0.5-0.25 * CDbl(d2g) * 2 / 3 accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) - CDbl(d2g) - (Tan(45 * pi / 180) * 0.5) accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 0.5) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) - CDbl(d2g) accord2(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) - CDbl(d2g) - (Tan(45 * pi / 180) * 0.5) accord1(0) = accordstart(0) + CDbl(l4) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) - CDbl(d2g) - (Tan(45 * pi / 180) * 0.5) accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 0.5) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) - CDbl(d2g) - (Tan(45 * pi / 180) * 0.5) accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 0.5) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) 16

accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 0.5) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 7 / 8) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 7 / 8) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 0.5) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 7 / 8) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 0.5) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 7 / 8) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) + (((CDbl(l4) + 0.5) * 1 / 8) * (Tan(45 * pi / 180))) accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 7 / 8) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) 17

accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) - (((CDbl(l4) + 0.5) * 1 / 8) * (Tan(45 * pi / 180))) accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5)) * 7 / 8) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d2) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) 'Criar Vista lateral esquerda B1 'Centro da vista lateral esquerda accordcentro(0) = accordstart(0) + CDbl(l3) + CDbl(l20) + CDbl(l2) accordcentro(1) = accordstart(1) - CDbl(d3) * 1.6 accordcentro(2) = 0 ' Linhas de traço misto da vista lateral esquerda acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tm") accord1(0) = accordcentro(0) - 1.1 * CDbl(d3) / 2 accord1(1) = accordcentro(1) accord2(0) = accordcentro(0) + 1.1 * CDbl(d3) / 2 accord2(1) = accordcentro(1) 18

accord1(0) = accordcentro(0) accord1(1) = accordcentro(1) - 1.1 * CDbl(d3) / 2 accord2(0) = accordcentro(0) accord2(1) = accordcentro(1) + 1.1 * CDbl(d3) / 2 ' Linha que mostra que a peça é roscada acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tf") acaplic.activedocument.modelspace.addarc accordcentro, CDbl(d2g) / 2-0.1 * CDbl(d2g), -pi / 3, 1.2 * pi ' Restante vista lateral esquerda acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") acaplic.activedocument.modelspace.addcircle accordcentro, CDbl(d2g) / 2 acaplic.activedocument.modelspace.addcircle accordcentro, CDbl(d2) / 2 acaplic.activedocument.modelspace.addcircle accordcentro, CDbl(d2g) / 2 + 0.5 * Tan(45 * pi / 180) acaplic.activedocument.modelspace.addarc accordcentro, CDbl(d11) / 2, pi * 3.2 / 180, pi * 86.8 / 180 accord1(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) + CDbl(d11) / 2 accord2(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord1(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) + CDbl(d11) / 2 accord2(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord1(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord2(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 19

acaplic.activedocument.modelspace.addarc accordcentro, CDbl(d11) / 2, pi * 93.2 / 180, pi * 176.8 / 180 accord1(0) = accordcentro(0) - CDbl(d11) / 2 accord1(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(0) = accordcentro(0) - CDbl(d11) / 2 accord1(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(0) = accordcentro(0) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord1(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) acaplic.activedocument.modelspace.addarc accordcentro, CDbl(d11) / 2, pi * 183.2 / 180, pi * 266.8 / 180 accord1(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) - CDbl(d11) / 2 accord2(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord1(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) - CDbl(d11) / 2 accord2(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord1(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 20

accord2(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 acaplic.activedocument.modelspace.addarc accordcentro, CDbl(d11) / 2, pi * 273.2 / 180, pi * 356.8 / 180 Else ' M1 accord1(0) = accordcentro(0) + CDbl(d11) / 2 accord1(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(0) = accordcentro(0) + CDbl(d11) / 2 accord1(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(0) = accordcentro(0) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord1(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) acaplic.activedocument.modelspace.addcircle accordcentro, CDbl(d3) / 2 21

accordstart(0) = 30 accordstart(1) = 210 accordstart(2) = 0 acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") accord1(0) = accordstart(0) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) accord2(0) = accordstart(0) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - CDbl(d2) accord1(0) = accordstart(0) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - CDbl(d2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - CDbl(d2) + 0.1 * CDbl(d2g) accord1(0) = accordstart(0) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - 0.1 * CDbl(d2g) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - 0.1 * CDbl(d2g) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - CDbl(d2) + 0.1 * CDbl(d2g) accord1(0) = accordstart(0) + CDbl(a4) - 2 * 0.1 * CDbl(d2g) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - CDbl(d2) accord2(0) = accordstart(0) 22

accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - CDbl(d2) accord1(0) = accordstart(0) + CDbl(a4) - 2 * 0.1 * CDbl(d2g) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - CDbl(d2) accord2(0) = accordstart(0) + CDbl(a4) - 2 * 0.1 * CDbl(d2g) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) accord1(0) = accordstart(0) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) accord2(0) = accordstart(0) + CDbl(a4) - 2 * 0.1 * CDbl(d2g) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) accord1(0) = accordstart(0) + CDbl(a4) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) + 0.1 * CDbl(d2g) accord2(0) = accordstart(0) + CDbl(a4) - 2 * 0.1 * CDbl(d2g) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) accord1(0) = accordstart(0) + CDbl(a4) - 2 * 0.1 * CDbl(d2g) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - CDbl(d2) accord2(0) = accordstart(0) + CDbl(a4) - 0.1 * CDbl(d2g) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - CDbl(d2) - 0.1 * CDbl(d2g) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("ti") accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + (CDbl(a6) / 2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + (CDbl(a6) / 2) 23

accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - (CDbl(a6) / 2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - (CDbl(a6) / 2) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + (CDbl(a6) / 2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - (CDbl(a6) / 2) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + (di(cdbl(a6), CDbl(pa6)) / 2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + (di(cdbl(a6), CDbl(pa6)) / 2) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - (di(cdbl(a6), CDbl(pa6)) / 2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - (di(cdbl(a6), CDbl(pa6)) / 2) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + (di(cdbl(a6), CDbl(pa6)) / 2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - (di(cdbl(a6), CDbl(pa6)) / 2) 24

accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + (di(cdbl(a6), CDbl(pa6)) / 2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - (di(cdbl(a6), CDbl(pa6)) / 2) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + 0.4 * CDbl(a6) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - 0.4 * CDbl(a6) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) 25

accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + 0.4 * CDbl(a6) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) + 0.6 * CDbl(a6) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + 0.4 * CDbl(a6) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - 0.4 * CDbl(a6) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) + 0.6 * CDbl(a6) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - 0.4 * CDbl(a6) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) + 0.6 * CDbl(a6) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + 0.4 * CDbl(a6) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) + 0.6 * CDbl(a6) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - 0.4 * CDbl(a6) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) + 0.6 * CDbl(a6) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + 0.4 * CDbl(a6) accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - 0.4 * CDbl(a6) accord1(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) accord1(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) + 0.4 * CDbl(a6) 26

accord2(0) = accordstart(0) - 0.1 * CDbl(d2g) + CDbl(a5) + (CDbl(a5) / 20) + (CDbl(a5) / 10) + 1 / 3 * CDbl(a6) + 0.6 * CDbl(a6) accord2(1) = accordstart(1) + ((CDbl(d2) / 2) - ((CDbl(d2g) / 2))) - (CDbl(d2) / 2) - 0.4 * CDbl(a6) 'Criar Vista lateral esquerda M1 'Centro da vista lateral esquerda accordcentro(0) = accordstart(0) + CDbl(l3) + CDbl(l20) + CDbl(l2) accordcentro(1) = accordstart(1) - CDbl(d3) * 1.6 accordcentro(2) = 0 ' Linhas de traço misto da vista lateral esquerda acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tm") accord1(0) = accordcentro(0) - 1.1 * CDbl(d3) / 2 accord1(1) = accordcentro(1) accord2(0) = accordcentro(0) + 1.1 * CDbl(d3) / 2 accord2(1) = accordcentro(1) accord1(0) = accordcentro(0) accord1(1) = accordcentro(1) - 1.1 * CDbl(d3) / 2 accord2(0) = accordcentro(0) accord2(1) = accordcentro(1) + 1.1 * CDbl(d3) / 2 ' Linha que mostra que a peça é roscada acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tf") acaplic.activedocument.modelspace.addarc accordcentro, CDbl(a6) / 2, -pi / 3, 1.2 * pi ' Restante vista lateral esquerda acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") acaplic.activedocument.modelspace.addcircle accordcentro, CDbl(d2) / 2 acaplic.activedocument.modelspace.addcircle accordcentro, di(cdbl(a6), CDbl(pa6)) / 2 acaplic.activedocument.modelspace.addcircle accordcentro, CDbl(d2) / 2 + 0.1 * CDbl(d2) acaplic.activedocument.modelspace.addcircle accordcentro, CDbl(d2) / 2-0.1 * CDbl(d2) acaplic.activedocument.modelspace.addarc accordcentro, CDbl(d11) / 2, pi * 3.2 / 180, pi * 86.8 / 180 27

accord1(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) + CDbl(d11) / 2 accord2(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord1(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) + CDbl(d11) / 2 accord2(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord1(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord2(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 acaplic.activedocument.modelspace.addarc accordcentro, CDbl(d11) / 2, pi * 93.2 / 180, pi * 176.8 / 180 accord1(0) = accordcentro(0) - CDbl(d11) / 2 accord1(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(0) = accordcentro(0) - CDbl(d11) / 2 accord1(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(0) = accordcentro(0) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord1(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) 28

acaplic.activedocument.modelspace.addarc accordcentro, CDbl(d11) / 2, pi * 183.2 / 180, pi * 266.8 / 180 accord1(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) - CDbl(d11) / 2 accord2(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord1(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) - CDbl(d11) / 2 accord2(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord1(0) = accordcentro(0) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(1) = accordcentro(1) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 accord2(0) = accordcentro(0) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(1) = accordcentro(1) - CDbl(d11) / 2 + (CDbl(d11) / 2) * 0.1 acaplic.activedocument.modelspace.addarc accordcentro, CDbl(d11) / 2, pi * 273.2 / 180, pi * 356.8 / 180 accord1(0) = accordcentro(0) + CDbl(d11) / 2 accord1(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(0) = accordcentro(0) + CDbl(d11) / 2 accord1(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord2(0) = accordcentro(0) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) accord1(0) = accordcentro(0) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord1(1) = accordcentro(1) + CDbl(d11) / 2 * Sin(3.2 * pi / 180) 29

End If accord2(0) = accordcentro(0) + CDbl(d11) / 2 - (CDbl(d11) / 2) * 0.1 accord2(1) = accordcentro(1) - CDbl(d11) / 2 * Sin(3.2 * pi / 180) acaplic.activedocument.modelspace.addcircle accordcentro, CDbl(d3) / 2 ' Corpo do cilindro acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 accord2(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) - (CDbl(d11) / 2) + (CDbl(d11) * Sin(3.2 * pi / 180)) * 0.5 30

accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) accord2(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) - (CDbl(d11) / 2) + (CDbl(d11) * Sin(3.2 * pi / 180)) * 0.5 accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) - (CDbl(d11) / 2) - (CDbl(d11) * Sin(3.2 * pi / 180)) * 0.5 accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) accord2(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) - (CDbl(d11) / 2) - (CDbl(d11) * Sin(3.2 * pi / 180)) * 0.5 accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) accord2(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 accord1(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) accord2(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) + 0.02 * CDbl(d11) accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) 31

accord2(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) - 0.02 * CDbl(d11) accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) + 0.02 * CDbl(d11) accord4(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) + (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) accord4(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) + 0.02 * CDbl(d11) + ((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) accord4(2) = accordstart(2) acaplic.activedocument.modelspace.addline accord1, accord4 accord4(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) + (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) accord4(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) + 0.02 * CDbl(d11) + ((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) accord4(2) = accordstart(2) accord3(0) = accord4(0) accord3(1) = accord4(1) - CDbl(d3) accord3(2) = accord4(1) acaplic.activedocument.modelspace.addline accord3, accord4 accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) accord2(1) = accordstart(1) - CDbl(d2g) - Tan(45 * pi / 180) * 0.5 - ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) - 0.02 * CDbl(d11) accord3(0) = accord4(0) accord3(1) = accord4(1) - CDbl(d3) accord3(2) = accord4(1) acaplic.activedocument.modelspace.addline accord2, accord3 accord1(0) = accord4(0) accord1(1) = accord4(1) - CDbl(d3) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(1) = accord4(1) - CDbl(d3) accord2(2) = accord4(1) 32

accord1(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(1) = accord4(1) - CDbl(d3) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) accord2(1) = accord4(1) - CDbl(d3) + ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(2) = accord4(1) accord1(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(1) = accord4(1) - CDbl(d3) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(1) = accord4(1) accord2(2) = accord4(1) accord4(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) + (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) accord4(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) + 0.02 * CDbl(d11) + ((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) accord4(2) = accordstart(2) accord2(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) + CDbl(l11) - (CDbl(adin) * 0.5 + CDbl(a1) * 0.5) accord2(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) + 0.02 * CDbl(d11) + ((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) acaplic.activedocument.modelspace.addline accord4, accord2 accord1(0) = accordstart(0) + CDbl(l4) + ((CDbl(l3) - (CDbl(l4) + 0.5))) - 0.1 * CDbl(d2g) + 0.5 + CDbl(l20) + CDbl(l11) + (CDbl(adin) * 0.5 + CDbl(a1) * 0.5) accord1(1) = accordstart(1) + Tan(45 * pi / 180) * 0.5 + ((CDbl(d11) / 2) - ((CDbl(d2g) / 2) + ((Tan(45 * pi / 180) * 0.5)))) + 0.02 * CDbl(d11) + ((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(1) = accord4(1) accord2(2) = accord4(1) 33

accord1(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) accord1(1) = accord4(1) - CDbl(d3) + ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) accord2(1) = accord4(1) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(2) = accord4(1) accord1(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(1) = accord4(1) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) accord2(1) = accord4(1) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(2) = accord4(1) accord1(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) accord1(1) = accord4(1) - CDbl(d3) + 0.5 * CDbl(d3) - 0.5 * CDbl(d1) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord2(1) = accord4(1) - CDbl(d3) + 0.5 * CDbl(d3) - 0.5 * CDbl(d1) accord2(2) = accord4(1) accord1(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord1(1) = accord4(1) - (0.5 * CDbl(d3) - 0.5 * CDbl(d1)) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) accord2(1) = accord4(1) - (0.5 * CDbl(d3) - 0.5 * CDbl(d1)) accord2(2) = accord4(1) accord1(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord1(1) = accord4(1) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord2(1) = accord4(1) - CDbl(d3) + ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) 34

accord2(2) = accord4(1) accord1(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord1(1) = accord4(1) - CDbl(d3) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord2(1) = accord4(1) - CDbl(d3) + ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(2) = accord4(1) accord1(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord1(1) = accord4(1) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord2(1) = accord4(1) accord2(2) = accord4(1) accord1(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord1(1) = accord4(1) - CDbl(d3) accord1(2) = accord4(1) accord2(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord2(1) = accord4(1) accord2(2) = accord4(1) accord5(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord5(1) = accord4(1) - CDbl(d3) accord5(2) = accord4(1) accord6(0) = accord4(0) - (((CDbl(d3) * 0.5) - ((CDbl(d11) * 0.5) + (0.02 * CDbl(d11)))) / (Tan(35 * pi / 180))) + CDbl(l2) + ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) + (CDbl(l1) + CDbl(crs) - CDbl(l2) - CDbl(l12) - CDbl(l13)) accord6(1) = accord4(1) accord6(2) = accord4(2) accord1(0) = accord5(0) accord1(1) = accord5(1) accord1(2) = accord5(2) 35

accord2(0) = accord5(0) + CDbl(l12) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(1) = accord5(1) accord2(2) = accord5(2) accord1(0) = accord5(0) + CDbl(l12) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(1) = accord5(1) accord1(2) = accord5(2) accord2(0) = accord6(0) + CDbl(l12) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(1) = accord6(1) accord2(2) = accord6(2) accord1(0) = accord5(0) + CDbl(l12) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(1) = accord5(1) accord1(2) = accord5(2) accord2(0) = accord5(0) + CDbl(l12) + CDbl(l13) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(1) = accord5(1) accord2(2) = accord5(2) accord1(0) = accord6(0) + CDbl(l12) + CDbl(l13) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(1) = accord6(1) accord1(2) = accord6(2) accord2(0) = accord6(0) + CDbl(l12) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(1) = accord6(1) accord2(2) = accord6(2) accord7(0) = accord6(0) + CDbl(l12) + CDbl(l13) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord7(1) = accord6(1) accord7(2) = accord6(2) accord1(0) = accord6(0) accord1(1) = accord6(1) accord1(2) = accord6(2) accord2(0) = accord6(0) + CDbl(l12) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) - CDbl(l14) - ((CDbl(adin) + CDbl(a1)) * 0.5) accord2(1) = accord6(1) accord2(2) = accord6(2) accord1(0) = accord6(0) + CDbl(l12) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) - CDbl(l14) + ((CDbl(adin) + CDbl(a1)) * 0.5) 36

accord1(1) = accord6(1) accord1(2) = accord6(2) accord2(0) = accord6(0) + CDbl(l12) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(1) = accord6(1) accord2(2) = accord6(2) accord1(0) = accord5(0) + CDbl(l12) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(1) = accord5(1) + (CDbl(r2) - r2i(cdbl(r2), CDbl(b8))) accord1(2) = accord5(2) accord2(0) = accord5(0) + CDbl(l12) + CDbl(l13) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(1) = accord5(1) + (CDbl(r2) - r2i(cdbl(r2), CDbl(b8))) accord2(2) = accord5(2) accord1(0) = accord6(0) + CDbl(l12) + CDbl(l13) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord1(1) = accord6(1) - (CDbl(r2) - r2i(cdbl(r2), CDbl(b8))) accord1(2) = accord6(2) accord2(0) = accord6(0) + CDbl(l12) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accord2(1) = accord6(1) - (CDbl(r2) - r2i(cdbl(r2), CDbl(b8))) accord2(2) = accord6(2) accordcentro1(0) = accord6(0) + CDbl(l12) + CDbl(l13) - ((0.5 * CDbl(d3) - 0.5 * CDbl(d1)) * 0.4) accordcentro1(1) = accord6(1) - CDbl(r2) accordcentro1(2) = accord6(2) acaplic.activedocument.modelspace.addarc accordcentro1, CDbl(r2), pi * (-90) / 180, pi * (90) / 180 acaplic.activedocument.modelspace.addarc accordcentro1, r2i(cdbl(r2), CDbl(b8)), pi * (-90) / 180, pi * (90) / 180 acaplic.activedocument.modelspace.addcircle accordcentro1, CDbl(d7) / 2 acaplic.activedocument.modelspace.addcircle accordcentro1, CDbl(d7) / 2 + 0.5 * CDbl(d7) * (3 / 11) acaplic.activedocument.modelspace.addcircle accordcentro1, CDbl(d7) / 2 + 0.5 * CDbl(d7) * (5 / 11) ' Linha de eixo do cilindro acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tm") accord1(0) = accordstart(0) - 0.5 * CDbl(d2) accord1(1) = accordstart(1) - CDbl(d2g) / 2 accord2(0) = accordstart(0) + 2 * 0.5 * CDbl(d2) + CDbl(l3) + CDbl(l20) + CDbl(l1) + CDbl(crs) + CDbl(r2) 37

accord2(1) = accordstart(1) - CDbl(d2g) / 2 'Linha de eixo das circunferências (rolamento) accord1(0) = accordcentro1(0) accord1(1) = accordcentro1(1) + 1.2 * (CDbl(d7) / 2 + CDbl(d7) / 2 * (5 / 11)) accord1(2) = accordcentro1(2) accord2(0) = accordcentro1(0) accord2(1) = accordcentro1(1) accord2(2) = accordcentro1(2) accord1(0) = accordcentro1(0) accord1(1) = accordcentro1(1) - 1.2 * (CDbl(d7) / 2 + CDbl(d7) / 2 * (5 / 11)) accord1(2) = accordcentro1(2) accord2(0) = accordcentro1(0) accord2(1) = accordcentro1(1) accord2(2) = accordcentro1(2) 'Dispositivo EII accorde(0) = accord7(0) - CDbl(l15) accorde(1) = accord7(1) + CDbl(e) accorde(2) = accord7(2) ' Linhas de traço misto acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tm") accord1(0) = accorde(0) accord1(1) = accorde(1) + 0.2 * CDbl(e) accord1(2) = accorde(2) accord2(0) = accorde(0) accord2(1) = accorde(1) - 1.2 * CDbl(e) accord2(2) = accorde(2) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") accord1(0) = accorde(0) + 0.2 * CDbl(e) accord1(1) = accorde(1) accord1(2) = accorde(2) accord2(0) = accorde(0) - 0.2 * CDbl(e) accord2(1) = accorde(1) accord2(2) = accorde(2) accord1(0) = accorde(0) + 0.2 * CDbl(e) accord1(1) = accorde(1) 38

accord1(2) = accorde(2) accord2(0) = accorde(0) + 0.2 * CDbl(e) accord2(1) = accorde(1) - 0.6 * CDbl(e) accord2(2) = accorde(2) accord1(0) = accorde(0) - 0.2 * CDbl(e) accord1(1) = accorde(1) - 0.6 * CDbl(e) accord1(2) = accorde(2) accord2(0) = accorde(0) - 0.2 * CDbl(e) accord2(1) = accorde(1) accord2(2) = accorde(2) accord1(0) = accorde(0) - 0.2 * CDbl(e) accord1(1) = accorde(1) - 0.6 * CDbl(e) accord1(2) = accorde(2) accord2(0) = accorde(0) - 0.5 * CDbl(e) accord2(1) = accorde(1) - 0.6 * CDbl(e) accord2(2) = accorde(2) accord1(0) = accorde(0) + 0.5 * CDbl(e) accord1(1) = accorde(1) - 0.6 * CDbl(e) accord1(2) = accorde(2) accord2(0) = accorde(0) + 0.2 * CDbl(e) accord2(1) = accorde(1) - 0.6 * CDbl(e) accord2(2) = accorde(2) accord1(0) = accorde(0) + 0.5 * CDbl(e) accord1(1) = accorde(1) - 0.6 * CDbl(e) accord1(2) = accorde(2) accord2(0) = accorde(0) + 0.5 * CDbl(e) accord2(1) = accorde(1) - CDbl(e) accord2(2) = accorde(2) accord1(0) = accorde(0) - 0.5 * CDbl(e) accord1(1) = accorde(1) - 0.6 * CDbl(e) accord1(2) = accorde(2) accord2(0) = accorde(0) - 0.5 * CDbl(e) accord2(1) = accorde(1) - CDbl(e) accord2(2) = accorde(2) accord1(0) = accorde(0) + 0.3 * CDbl(e) accord1(1) = accorde(1) - 0.6 * CDbl(e) accord1(2) = accorde(2) 39

accord2(0) = accorde(0) + 0.3 * CDbl(e) accord2(1) = accorde(1) - CDbl(e) accord2(2) = accorde(2) accord1(0) = accorde(0) - 0.3 * CDbl(e) accord1(1) = accorde(1) - 0.6 * CDbl(e) accord1(2) = accorde(2) accord2(0) = accorde(0) - 0.3 * CDbl(e) accord2(1) = accorde(1) - CDbl(e) accord2(2) = accorde(2) accord1(0) = accorde(0) + 0.2 * CDbl(e) accord1(1) = accorde(1) - 0.6 * CDbl(e) accord1(2) = accorde(2) accord2(0) = accorde(0) - 0.2 * CDbl(e) accord2(1) = accorde(1) - 0.6 * CDbl(e) accord2(2) = accorde(2) 'Dispositivo EI accorde1(0) = accord7(0) - (CDbl(l1) + CDbl(crs)) + CDbl(l19) accorde1(1) = accord7(1) + CDbl(e) accorde1(2) = accord7(2) ' Linhas de traço misto acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tm") accord1(0) = accorde1(0) accord1(1) = accorde1(1) + 0.2 * CDbl(e) accord1(2) = accorde1(2) accord2(0) = accorde1(0) accord2(1) = accorde1(1) - 1.2 * CDbl(e) accord2(2) = accorde1(2) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") accord1(0) = accorde1(0) + 0.2 * CDbl(e) accord1(1) = accorde1(1) accord1(2) = accorde1(2) accord2(0) = accorde1(0) - 0.2 * CDbl(e) accord2(1) = accorde1(1) accord2(2) = accorde1(2) accord1(0) = accorde1(0) + 0.2 * CDbl(e) accord1(1) = accorde1(1) 40

accord1(2) = accorde1(2) accord2(0) = accorde1(0) + 0.2 * CDbl(e) accord2(1) = accorde1(1) - 0.6 * CDbl(e) accord2(2) = accorde1(2) accord1(0) = accorde1(0) - 0.2 * CDbl(e) accord1(1) = accorde1(1) - 0.6 * CDbl(e) accord1(2) = accorde1(2) accord2(0) = accorde1(0) - 0.2 * CDbl(e) accord2(1) = accorde1(1) accord2(2) = accorde1(2) accord1(0) = accorde1(0) - 0.2 * CDbl(e) accord1(1) = accorde1(1) - 0.6 * CDbl(e) accord1(2) = accorde1(2) accord2(0) = accorde1(0) - 0.5 * CDbl(e) accord2(1) = accorde1(1) - 0.6 * CDbl(e) accord2(2) = accorde1(2) accord1(0) = accorde1(0) + 0.5 * CDbl(e) accord1(1) = accorde1(1) - 0.6 * CDbl(e) accord1(2) = accorde1(2) accord2(0) = accorde1(0) + 0.2 * CDbl(e) accord2(1) = accorde1(1) - 0.6 * CDbl(e) accord2(2) = accorde1(2) accord1(0) = accorde1(0) + 0.5 * CDbl(e) accord1(1) = accorde1(1) - 0.6 * CDbl(e) accord1(2) = accorde1(2) accord2(0) = accorde1(0) + 0.5 * CDbl(e) accord2(1) = accorde1(1) - CDbl(e) accord2(2) = accorde1(2) accord1(0) = accorde1(0) - 0.5 * CDbl(e) accord1(1) = accorde1(1) - 0.6 * CDbl(e) accord1(2) = accorde1(2) accord2(0) = accorde1(0) - 0.5 * CDbl(e) accord2(1) = accorde1(1) - CDbl(e) accord2(2) = accorde1(2) accord1(0) = accorde1(0) + 0.3 * CDbl(e) accord1(1) = accorde1(1) - 0.6 * CDbl(e) accord1(2) = accorde1(2) 41

accord2(0) = accorde1(0) + 0.3 * CDbl(e) accord2(1) = accorde1(1) - CDbl(e) accord2(2) = accorde1(2) accord1(0) = accorde1(0) - 0.3 * CDbl(e) accord1(1) = accorde1(1) - 0.6 * CDbl(e) accord1(2) = accorde1(2) accord2(0) = accorde1(0) - 0.3 * CDbl(e) accord2(1) = accorde1(1) - CDbl(e) accord2(2) = accorde1(2) accord1(0) = accorde1(0) + 0.2 * CDbl(e) accord1(1) = accorde1(1) - 0.6 * CDbl(e) accord1(2) = accorde1(2) accord2(0) = accorde1(0) - 0.2 * CDbl(e) accord2(1) = accorde1(1) - 0.6 * CDbl(e) accord2(2) = accorde1(2) 'Dispositivo E da vista lateral esquerda accorde3(0) = accordcentro(0) accorde3(1) = accordcentro(1) + CDbl(d3) / 2 + CDbl(e) accorde3(2) = accordcentro(2) ' Linhas de traço misto acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tm") accord1(0) = accorde3(0) accord1(1) = accorde3(1) + 0.2 * CDbl(e) accord1(2) = accorde3(2) accord2(0) = accorde3(0) accord2(1) = accorde3(1) - 0.7 * CDbl(e) accord2(2) = accorde3(2) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") accord1(0) = accorde3(0) + 0.2 * CDbl(e) accord1(1) = accorde3(1) accord1(2) = accorde3(2) accord2(0) = accorde3(0) - 0.2 * CDbl(e) accord2(1) = accorde3(1) accord2(2) = accorde3(2) accord1(0) = accorde3(0) + 0.2 * CDbl(e) accord1(1) = accorde3(1) 42

accord1(2) = accorde3(2) accord2(0) = accorde3(0) + 0.2 * CDbl(e) accord2(1) = accorde3(1) - 0.6 * CDbl(e) accord2(2) = accorde3(2) accord1(0) = accorde3(0) - 0.2 * CDbl(e) accord1(1) = accorde3(1) - 0.6 * CDbl(e) accord1(2) = accorde3(2) accord2(0) = accorde3(0) - 0.2 * CDbl(e) accord2(1) = accorde3(1) accord2(2) = accorde3(2) accord1(0) = accorde3(0) - 0.2 * CDbl(e) accord1(1) = accorde3(1) - 0.6 * CDbl(e) accord1(2) = accorde3(2) accord2(0) = accorde3(0) - 0.5 * CDbl(e) accord2(1) = accorde3(1) - 0.6 * CDbl(e) accord2(2) = accorde3(2) accord1(0) = accorde3(0) + 0.5 * CDbl(e) accord1(1) = accorde3(1) - 0.6 * CDbl(e) accord1(2) = accorde3(2) accord2(0) = accorde3(0) + 0.2 * CDbl(e) accord2(1) = accorde3(1) - 0.6 * CDbl(e) accord2(2) = accorde3(2) accord1(0) = accorde3(0) + 0.5 * CDbl(e) accord1(1) = accorde3(1) - 0.6 * CDbl(e) accord1(2) = accorde3(2) accord2(0) = accordcentro(0) + 0.5 * CDbl(e) accord2(1) = accordcentro(1) + e1(cdbl(d3), CDbl(e)) accord1(0) = accorde3(0) - 0.5 * CDbl(e) accord1(1) = accorde3(1) - 0.6 * CDbl(e) accord1(2) = accorde3(2) accord2(0) = accordcentro(0) - 0.5 * CDbl(e) accord2(1) = accordcentro(1) + e1(cdbl(d3), CDbl(e)) accord1(0) = accorde3(0) + 0.3 * CDbl(e) accord1(1) = accorde3(1) - 0.6 * CDbl(e) accord1(2) = accorde3(2) 43

accord2(0) = accordcentro(0) + 0.3 * CDbl(e) accord2(1) = accordcentro(1) + e2(cdbl(d3), CDbl(e)) accord1(0) = accorde3(0) - 0.3 * CDbl(e) accord1(1) = accorde3(1) - 0.6 * CDbl(e) accord1(2) = accorde3(2) accord2(0) = accordcentro(0) - 0.3 * CDbl(e) accord2(1) = accordcentro(1) + e2(cdbl(d3), CDbl(e)) accord1(0) = accorde3(0) + 0.2 * CDbl(e) accord1(1) = accorde3(1) - 0.6 * CDbl(e) accord1(2) = accorde3(2) accord2(0) = accorde3(0) - 0.2 * CDbl(e) accord2(1) = accorde3(1) - 0.6 * CDbl(e) accord2(2) = accorde3(2) 'Dispositivo AII accorda(0) = accord7(0) - CDbl(l13) - CDbl(l14) accorda(1) = accord7(1) accorda(2) = accord7(2) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tm") accord1(0) = accorda(0) accord1(1) = accorda(1) + CDbl(adin) * 0.5 accord1(2) = accorda(2) accord2(0) = accorda(0) accord2(1) = accorda(1) - ((CDbl(d3) - CDbl(d11)) * 0.5) * 1.2 accord2(2) = accorda(2) ' Linhas de traço interrompido acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("ti") accord1(0) = accorda(0) + CDbl(adin) * 0.5 accord1(1) = accorda(1) - CDbl(a1) accord1(2) = accorda(2) accord2(0) = accorda(0) + CDbl(adin) * 0.5 accord2(1) = accorda(1) - (CDbl(d3) * 0.5 - CDbl(d11) * 0.5) accord2(2) = accorda(2) accord1(0) = accorda(0) + di(cdbl(adin), CDbl(padin)) * 0.5 accord1(1) = accorda(1) - CDbl(a1) 44

accord1(2) = accorda(2) accord2(0) = accorda(0) + di(cdbl(adin), CDbl(padin)) * 0.5 accord2(1) = accorda(1) - (CDbl(d3) * 0.5 - CDbl(d11) * 0.5) accord2(2) = accorda(2) accord1(0) = accorda(0) - CDbl(adin) * 0.5 accord1(1) = accorda(1) - CDbl(a1) accord1(2) = accorda(2) accord2(0) = accorda(0) - CDbl(adin) * 0.5 accord2(1) = accorda(1) - (CDbl(d3) * 0.5 - CDbl(d11) * 0.5) accord2(2) = accorda(2) accord1(0) = accorda(0) - di(cdbl(adin), CDbl(padin)) * 0.5 accord1(1) = accorda(1) - CDbl(a1) accord1(2) = accorda(2) accord2(0) = accorda(0) - di(cdbl(adin), CDbl(padin)) * 0.5 accord2(1) = accorda(1) - (CDbl(d3) * 0.5 - CDbl(d11) * 0.5) accord2(2) = accorda(2) accord1(0) = accorda(0) + CDbl(adin) * 0.5 + CDbl(a1) * 0.5 accord1(1) = accorda(1) accord1(2) = accorda(2) accord2(0) = accorda(0) + CDbl(adin) * 0.5 + CDbl(a1) * 0.5 accord2(1) = accorda(1) - CDbl(a1) accord2(2) = accorda(2) accord1(0) = accorda(0) - CDbl(adin) * 0.5 - CDbl(a1) * 0.5 accord1(1) = accorda(1) accord1(2) = accorda(2) accord2(0) = accorda(0) - CDbl(adin) * 0.5 - CDbl(a1) * 0.5 accord2(1) = accorda(1) - CDbl(a1) accord2(2) = accorda(2) accord1(0) = accorda(0) + CDbl(adin) * 0.5 + CDbl(a1) * 0.5 accord1(1) = accorda(1) - CDbl(a1) accord1(2) = accorda(2) accord2(0) = accorda(0) - CDbl(adin) * 0.5 - CDbl(a1) * 0.5 accord2(1) = accorda(1) - CDbl(a1) accord2(2) = accorda(2) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") accord2(0) = accorda(0) 45

accord2(1) = accorda(1) + r2adin(cdbl(d3), CDbl(adin), CDbl(a1)) accord2(2) = accorda(2) acaplic.activedocument.modelspace.addarc accord2, CDbl(d3) / 2, angadin1(cdbl(adin), CDbl(a1), CDbl(d3)), angadin2(cdbl(adin), CDbl(a1), CDbl(d3)) 'Dispositivo AI accorda(0) = accord7(0) - (CDbl(l1) + CDbl(crs)) + CDbl(l11) accorda(1) = accord7(1) accorda(2) = accord7(2) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tm") accord1(0) = accorda(0) accord1(1) = accorda(1) + CDbl(adin) * 0.5 accord1(2) = accorda(2) accord2(0) = accorda(0) accord2(1) = accorda(1) - ((CDbl(d3) - CDbl(d11)) * 0.5) * 1.2 accord2(2) = accorda(2) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("ti") accord1(0) = accorda(0) + CDbl(adin) * 0.5 accord1(1) = accorda(1) - CDbl(a1) accord1(2) = accorda(2) accord2(0) = accorda(0) + CDbl(adin) * 0.5 accord2(1) = accorda(1) - (CDbl(d3) * 0.5 - CDbl(d11) * 0.5) accord2(2) = accorda(2) accord1(0) = accorda(0) + di(cdbl(adin), CDbl(padin)) * 0.5 accord1(1) = accorda(1) - CDbl(a1) accord1(2) = accorda(2) accord2(0) = accorda(0) + di(cdbl(adin), CDbl(padin)) * 0.5 accord2(1) = accorda(1) - (CDbl(d3) * 0.5 - CDbl(d11) * 0.5) accord2(2) = accorda(2) accord1(0) = accorda(0) - CDbl(adin) * 0.5 accord1(1) = accorda(1) - CDbl(a1) accord1(2) = accorda(2) accord2(0) = accorda(0) - CDbl(adin) * 0.5 accord2(1) = accorda(1) - (CDbl(d3) * 0.5 - CDbl(d11) * 0.5) accord2(2) = accorda(2) accord1(0) = accorda(0) - di(cdbl(adin), CDbl(padin)) * 0.5 accord1(1) = accorda(1) - CDbl(a1) accord1(2) = accorda(2) 46

accord2(0) = accorda(0) - di(cdbl(adin), CDbl(padin)) * 0.5 accord2(1) = accorda(1) - (CDbl(d3) * 0.5 - CDbl(d11) * 0.5) accord2(2) = accorda(2) accord1(0) = accorda(0) + CDbl(adin) * 0.5 + CDbl(a1) * 0.5 accord1(1) = accorda(1) accord1(2) = accorda(2) accord2(0) = accorda(0) + CDbl(adin) * 0.5 + CDbl(a1) * 0.5 accord2(1) = accorda(1) - CDbl(a1) accord2(2) = accorda(2) accord1(0) = accorda(0) - CDbl(adin) * 0.5 - CDbl(a1) * 0.5 accord1(1) = accorda(1) accord1(2) = accorda(2) accord2(0) = accorda(0) - CDbl(adin) * 0.5 - CDbl(a1) * 0.5 accord2(1) = accorda(1) - CDbl(a1) accord2(2) = accorda(2) accord1(0) = accorda(0) + CDbl(adin) * 0.5 + CDbl(a1) * 0.5 accord1(1) = accorda(1) - CDbl(a1) accord1(2) = accorda(2) accord2(0) = accorda(0) - CDbl(adin) * 0.5 - CDbl(a1) * 0.5 accord2(1) = accorda(1) - CDbl(a1) accord2(2) = accorda(2) acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tg") accord2(0) = accorda(0) accord2(1) = accorda(1) + r2adin(cdbl(d3), CDbl(adin), CDbl(a1)) accord2(2) = accorda(2) acaplic.activedocument.modelspace.addarc accord2, CDbl(d3) / 2, angadin1(cdbl(adin), CDbl(a1), CDbl(d3)), angadin2(cdbl(adin), CDbl(a1), CDbl(d3)) 'Dispositivo A na vista lateral esquerda acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("tm") accord1(0) = accordcentro(0) accord1(1) = accordcentro(1) + 0.2 * CDbl(adin) * 0.5 accord2(0) = accordcentro(0) accord2(1) = accordcentro(1) - 1.3 * CDbl(adin) * 0.5 ' Linhas de traço interrompido 47

acaplic.activedocument.activelayer = acaplic.activedocument.layers.item("ti") accord1(0) = accordcentro(0) + CDbl(adin) * 0.5 accord1(1) = accordcentro(1) + CDbl(d3) * 0.5 - CDbl(a1) accord2(0) = accordcentro(0) + CDbl(adin) * 0.5 accord2(1) = accordcentro(1) + y(cdbl(d11), CDbl(adin)) accord1(0) = accordcentro(0) + di(cdbl(adin), CDbl(padin)) * 0.5 accord1(1) = accordcentro(1) + CDbl(d3) * 0.5 - CDbl(a1) accord2(0) = accordcentro(0) + di(cdbl(adin), CDbl(padin)) * 0.5 accord2(1) = accordcentro(1) + y(cdbl(d11), di(cdbl(adin), (padin))) accord1(0) = accordcentro(0) - CDbl(adin) * 0.5 accord1(1) = accordcentro(1) + CDbl(d3) * 0.5 - CDbl(a1) accord2(0) = accordcentro(0) - CDbl(adin) * 0.5 accord2(1) = accordcentro(1) + y(cdbl(d11), CDbl(adin)) accord1(0) = accordcentro(0) - di(cdbl(adin), CDbl(padin)) * 0.5 accord1(1) = accordcentro(1) + CDbl(d3) * 0.5 - CDbl(a1) accord2(0) = accordcentro(0) - di(cdbl(adin), CDbl(padin)) * 0.5 accord2(1) = accordcentro(1) + y(cdbl(d11), di(cdbl(adin), (padin))) accord1(0) = accordcentro(0) + aint(cdbl(d3), CDbl(a1)) accord1(1) = accordcentro(1) + CDbl(d3) / 2 - CDbl(a1) accord2(0) = accordcentro(0) - aint(cdbl(d3), CDbl(a1)) accord2(1) = accordcentro(1) + CDbl(d3) / 2 - CDbl(a1) acaplic.activedocument.saveas (frmz160.cmdsaveas.filename) ' Grava o documento autocad com o nome do ficheiro seleccionado acaplic.activedocument.close 'Fecha o documento autocad acaplic.quit ' Fecha a aplicação Autocad aberta internamente no vb Set acaplic = Nothing ' Elimina o objecto acaplic Shell straplic & " """ & frmz160.cmdsaveas.filename & """" ' Abre o Autocad, abrindo o ficheiro gravado End Sub 48