Construção da evolvente com o VBA

É preciso traçar a curva evolvente para o desenho do dente da engrenagem, mesmo que não seja necessário o desenho do dente para a construção da mesma no processo industrial. A vantagem de desenhar a engrenagem exatamente como ela será é imensa, pois poderá detalhar o acabamento ou facilitar compreensão do projeto ou mesmo testá-la empiricamente, uma vez que terá a sua área, volume e peso obtidos do desenho em três dimensões.

Foi desenvolvido um programa em VBA (o AutoCad 2000 já possui) para gerar a curva da evolvente, entrando com o valor do diâmetro de base e o ângulo da fórmula cartesiana, para facilitar a construção esse ângulo será 360º e depois corta-se a evolvente que ultrapassar a medida, repare que para um mesmo diâmetro de base há apenas uma curva evolvente que vai se formando a medida que se vai variando o ângulo da fórmula cartesiana.

1) Abra o AutoCad 2000

2) Menu Tool > Macro >Visual Basic Editor

3) Insira um formulário

4) Inclua duas labels, dois textbox e um botão de comando, mude os caption e posicione os conforme a figura abaixo

 AcadPolyline

 

5) Dê dois cliques no botão comando (Evolvente) e insira a rotina abaixo

Private Sub CommandButton1_Click()

Dim polilinha As AcadPolyline

Dim pontos(0 To 2999) As Double 'array  com 3000 elementos, cada um receberá

                                    'uma coordenada coordenadas (x, ou y ou z) conforme seu índice.

Dim a As Double

Dim b As Double

Dim db As Double 'diâmetro de base

a = 0 'angulo inicial


  For n = 0 To 999   ' mil pontos na curva evolvente, para cada n há três coordenadas '(x,y e z)

db = CDbl(TextBox1.Text)

b = CDbl(TextBox2.Text)

a = n * ((b * 3.1415962 / 180) / 999) '999 fragmentos de ângulos, 999 último ciclo

pontos(n * 3 + 0) = (db / 2) * (Cos(a) + a * Sin(a)) 'coordenada x

pontos(n * 3 + 1) = (db / 2) * (Sin(a) - a * Cos(a))   'coordenada y

pontos(n * 3 + 2) = 0 'coordenada z

Next n

Set polilinha = ThisDrawing.ModelSpace.AddPolyline(pontos)

ZoomAll

End Sub

Private Sub TextBox1_Change()

'rb = CDbl(TextBox1.Text) comentário, transforma texto em número tipo double

End Sub

Private Sub TextBox2_Change()

'b = CDbl(TextBox2.Text) comentário, transforma texto em número tipo double

End Sub

Private Sub UserForm_Click()

End Sub

 6) Entre com os valores abaixo indicados e execute o programa

 

7) Será gerado uma evolvente no AutoCad, inclua a circunferência de base e o resultado será a figura abaixo

 

Observações:

O objeto AcadPolyline é uma polilinha, isso significa que a curva gerada por esse objeto é formada por vários seguimento de reta, isso não cria empecilho na sua construção, até mesmo porque na fase de fabricação da engrenagem o passo da fresadora ou torno poderá ser comparado com esse seguimento. Deverá evitar de tomar como referência a polilinha para localizar pontos de intersecção ou pontos de extremidades de linha, pois os seguimentos são muito pequenos e confundem.

Foi gerado a evolvente de 360º com 1000 (mil) seguimento de reta, esse valor pode ser aumentando, apenas mude os valores da mesma forma que o valor 1000 (mil). Onde está 2999 foi obtido de 3000 - 1, 1000 foi obtido de 3000/3, 999 foi obtido de 1000 - 1.

Foi utilizado 999 frações de ângulos, pois o último n também tem este valor.



Explicação sobre o VBA

 Vetores ou Array

Criar um vetor implica em dimensioná-lo, isto é, definir o seu tamanho. Os componentes individuais de um vetor se chamam elementos e o número que se usa para acessar um elemento individual se chama de índice. O maior e o menor índice são chamados de extremos.

No VBA para autocad, os pontos no espaço têm dimensão 3, exemplo:

Dim ponto1 (2) As Bouble

Essa linha define um vetor chamado ponto1 com  três elementos, ponto1(0), ponto1(1) e ponto1(2), ou seja, a linha acima declarou um vetor com três elementos de índices, 0 (zero), 1 (um) e 2 (dois).


Objeto AcadPolyline

Representa uma polilinha do AutoCAD. O objeto é definido usando:

Dim polilinha As AcadPolyline

E é criado usando:

Set polilinha = ThisDrawing.ModelSpace.AddPolyline(pontos)

Onde pontos é um vetor de Double. O número de elementos dever ser múltiplo de três, já que cada ponto é definido por três elementos.