Escolar Documentos
Profissional Documentos
Cultura Documentos
AUTOMAÇÃO DE DETALHAMENTOS
Por Valteson da Silva Santos
Do que se trata?
1
1 INTRODUÇÃO A ESTE MANUAL
Este manual foi elaborado com o objetivo de explicar a sincronização entre o Excel e o AutoCAD para
automação de detalhamentos. Trata-se da união de ferramentas de engenharia poderosas que
podem ajudar o trabalho do desenhista.
Os limites de aplicação dessa ferramenta estão na imaginação do utilizador, cita-se, sem querer
esgotar o tema:
4 – Desenho de esquadrias.
O material necessário para fixação do conteúdo aqui exposto encontra-se na pasta compartilhada no
link: https://1drv.ms/u/s!AuQ204pgWABdgaBjrXc-waXnrxn3IA?e=l0x5Tb
Eventuais dúvidas poderão ser tiradas pelo e-mail: valtesomdasilva3@gmail.com ou pelo canal do
YouTube: https://www.youtube.com/channel/UCtZuARcwSFVymFAUBI7Gn7Q?view_as=subscriber
2
2 CONFIGURAÇÕES INICIAIS
a) Criar uma planilha chamada Layers com as mesmas características da planilha exemplo;
Name Freeze On Lock Color Linetype LineWeight Transparency New VP Freeze Description
Alvenaria FALSE TRUE False 7 Continuous acLnWtByLwDefault 0 Color_5 TRUE FALSE Avenaria
Projecoes FALSE TRUE False 3 ACAD_ISO03W100acLnWtByLwDefault 0 Color_5 TRUE FALSE Objetos fora de vista
Texto_T FALSE TRUE False 5 Continuous acLnWtByLwDefault 0 Color_5 TRUE FALSE Informações textuais
Cotas FALSE TRUE False 1 Continuous acLnWtByLwDefault 0 Color_5 TRUE FALSE Medidas
Aces FALSE TRUE False 2 Continuous acLnWtByLwDefault 0 Color_5 TRUE FALSE Objetos em segundo plano
'Cria os layers
x = ActiveCell.Row
y = Cells(x, 2)
Sub Cria_Layer()
Application.ScreenUpdating = False
Set u = Worksheets("Layers")
Set w = Worksheets("Fossa e Sumidouro")
u.Select
numero = u.Range("O3").Value
u.Range("b2").Select
Selection.Activate
'criar Layers
i = 1
Do While i <= numero
Call Layers.Layers_PR
ActiveCell.Offset(1, 0).Activate
i = i + 1
Loop
w.Select
w.Range("A1").Select
Application.ScreenUpdating = True
End Sub
4
1.3 Criar um botão e aplicar a macro Cria_Layer:
Myapp.Visible = True
5
2 DESENHAR LINHA
Para desenhar uma linha, no módulo Desenho_cad prosseguir com o código:
Set w = Worksheets("Fossa e Sumidouro")
w.Select
'Desenhar as alvenarias
w.Range("AG2").Select
Selection.Activate
O nome Fossa e Sumidouro refere-se à planilha que contem as coordenadas e pode ser mudado;
Uma alternativa seria criar uma sub apenas para desenhar linha e chama-la com a função Call
3 DESENHAR CIRCUNFERÊNCIA
Para desenhar uma circunferência basta usar o seguinte código no módulo Desenho_cad:
center(0) = Range("B6").Value: center(1) = Range("B7").Value: center(2) = Range("B8").Value
radius = Range("B3").Value
'Desenha o circulo
Set circ = AutoCAD.Application.ActiveDocument.ModelSpace.AddCircle(center, radius)
'Atualiza o programa pra tornar visível as alterações em tempo real
AutoCAD.Application.Update
Cabe destacar que os valores das coordenadas devem estar em B6, B7 e B8 ou serem alteradas no
código.O raio está em B3.
4 DESENHAR COTA
Para desenhar uma cota basta usar o seguinte código no módulo Desenho_cad:
Ponto_cota1(0) = Cells(1, 1): Ponto_cota1(1) = Cells(1,2): Ponto_cota1(2) = 0
Ponto_cota2(0) = Cells(2, 1): Ponto_cota2(1) = Cells(2, 2): Ponto_cota2(2) = 0
5 DESENHAR TEXTO
Para desenhar um texto basta usar o seguinte código no módulo Desenho_cad:
Coordenada_texto(0) = Cells(1, 10): Coordenada_texto(1) = Cells(2, 10)
Set Nome = AutoCAD.Application.ActiveDocument.ModelSpace.AddText(Cells(2, 15), Coordenada_texto, 0.24)
Nome.Layer = "Texto"
Nome.Update
6 PROCESSO ITERATIVO
Como desejamos desenhar vários elementos de um único tipo (ex.: vários segmentos de linha ou
várias cotas) usamos processos iterativos até que o objetivo seja alcançado.
Elementos distintos devem ser separados por um espaço para que os segmentos de linha não fiquem
unidos, conforme mostrado abaixo.
7
Para executar o processo repetidas vezes deveremos usar o Do while:
i = 1
Do While i <= 30
‘Colocar aqui o código do desenho (texto, cota, linha)
i = i + 1
If ActiveCell.Offset(2, 0).Value <> "" Then
‘O IF testa se duas linhas abaixo há uma célula vazia, caso positivo ele já pula 3 linhas para o
próximo segmento válido, caso negativo, prossegue normalmente.
ActiveCell.Offset(1, 0).Activate
Else: ActiveCell.Offset(3, 0).Activate
End If
AutoCAD.Application.Update
Loop
7 DESENHAR CASINHA3
Nosso objetivo agora é fortalecer nosso conhecimento desenhando a fachada frontal de uma casa
(bem simples).
b) Agora devemos usar fórmulas para encontrar as coordenadas do nosso desenho. Podemos
inicias em (0,00;0,00). Para cada tipo de traço (layer) usar uma coluna diferente.
Alvenaria Esquadrias
0,00 0,00 2,00 0,50
0,00 0,50 2,00 2,60
7,00 0,50 2,80 2,60
7,00 0,00 2,80 0,50
0,20 3,3
c) Agora devemos selecionar o intervalo das coordenadas 3,50
e inserir 4,13
um gráfico do tipo dispersão
6,80 3,30
com linhas retas.
6,85 3,50
3,50 4,33
0,15 3,5
0,20 3,3
8
d) Obtidas as coordenadas devemos continuar o trabalho no VBA repetindo o que foi dito no item
1 – Configurações iniciais.
e) Agora devemos iniciar o desenho das linhas da alvenaria: usando o código do item 2
(Desenhar linha) juntamente com o código do item 6 (Processo iterativo):
i = 1
Set w = Worksheets("Casa")
w.Select
w.Range("D2").Select
Selection.Activate
Do While i <= 12
'Desenhar alvenarias
i = 1
i = i + 1
If ActiveCell.Offset(2, 0).Value <> "" Then
'O IF testa se duas linhas abaixo há uma célula vazia, caso positivo ele já pula 3 linhas para o próximo
segmento válido, caso negativo, prossegue normalmente.
ActiveCell.Offset(1, 0).Activate
Else: ActiveCell.Offset(3, 0).Activate
End If
9
AutoCAD.Application.Update
Loop
f) Agora podemos desenhar as esquadrias (código bem semelhante que deve ser escrito abaixo
do código anterior. Deve-se alterar o endereço da célula inicial e o nome do Layer.
g) Agora podemos inserir as cotas no desenho usanado o passo a passo do item 4 – Desenhar
cota.
'Desenhar cotas
Ponto_cota1(0) = Cells(2, 4): Ponto_cota1(1) = Cells(2, 5): Ponto_cota1(2) = 0
Ponto_cota2(0) = Cells(3, 4): Ponto_cota2(1) = Cells(3, 5): Ponto_cota2(2) = 0
h) Agora devemos criar o botão para detalhar nossa casinha atribuindo a ele a macro detalha.
i) Salve seu arquivo e pode testar.
Veja como ficou o meu desenho:
10
8 DESENHAR VIGA
Para desenhar uma viga seguiremos o mesmo passo a passo:
a) Por praticidade irei utilizar a planilha anterior, alterando de Casa para Viga;
No modulo de criara Layers iremos alterar Casa por Viga, pois agora, a nossa planilha que
era casa passa a ser viga
b) Vamos então entrar com os nossos parâmetros da nossa viga;
d) Obtidas as coordenadas, faremos o gráfico (podemos fazer o gráfico no início, para das uma
noção de como está indo o desenho);
'Dimensionar variáveis
'Analisador de erro
ERRORHANDLER:
If Err.Description <> "" Then
Err.Clear
Set Myapp = CreateObject("Autocad.Application")
End If
Myapp.Visible = True
'Iniciar o concreto
i = 1
Set w = Worksheets("Viga")
w.Select
w.Range("D2").Select
Selection.Activate
Do While i <= 14
i = i + 1
If ActiveCell.Offset(2, 0).Value <> "" Then
'O IF testa se duas linhas abaixo há uma célula vazia, caso positivo ele já pula 3 linhas para
o próximo segmento válido, caso negativo, prossegue normalmente.
ActiveCell.Offset(1, 0).Activate
Else: ActiveCell.Offset(3, 0).Activate
End If
AutoCAD.Application.Update
Loop
'Desenhar o aço
i = 1
w.Select
w.Range("G2").Select
Selection.Activate
Do While i <= 20
12
'Desenhar esquadrias
Set w = Worksheets("Viga")
i = i + 1
If ActiveCell.Offset(2, 0).Value <> "" Then
'O IF testa se duas linhas abaixo há uma célula vazia, caso positivo ele já pula 3 linhas para
o próximo segmento válido, caso negativo, prossegue normalmente.
ActiveCell.Offset(1, 0).Activate
Else: ActiveCell.Offset(3, 0).Activate
End If
AutoCAD.Application.Update
Loop
i = i + 1
Loop
i = i + 1
Loop
End Sub