Você está na página 1de 14

EXCEL + AUTOCAD

AUTOMAÇÃO DE DETALHAMENTOS
Por Valteson da Silva Santos

Do que se trata?

Sabia que é possível transformar coordenadas do Excel em projetos profissionais em


questão de segundos utilizando o AutoCAD e o Excel? Mas antes de tornar isso possível,
passos devem ser seguidos. O resultado ...
EXCEL + AUTOCAD
PONTOS
IMPORTANTES
AUTOMAÇÃO DE DETALHAMENTOS A conexão entre o

Sumário AutoCad e o Excel é

1 INTRODUÇÃO A ESTE MANUAL .............................................. 2 feita através do VBA


2 Configurações iniciais ................................................................ 3 (Visual Basics for
1.1 Habilitar a biblioteca do AutoCAD no VBE .......................... 3
Applications). Ela
1.2 – Criação de Layers ............................................................ 3
1.3 Criar um botão e aplicar a macro Cria_Layer: ..................... 5 permite o

1.4 Dimensionar variáveis ......................................................... 5 detalhamento de


1.5 Análise de erro .................................................................... 5 tanques sépticos,
2 Desenhar Linha .......................................................................... 6
fundações, vigas e
3 Desenhar circunferência ............................................................ 6
4 Desenhar cota ............................................................................ 6 quaisquer elemento

5 Desenhar TEXTO....................................................................... 7 que possa ser


6 Processo iterativo ....................................................................... 7
programado. A
7 Desenhar casinha ...................................................................... 8
imaginação é o limite.
8 Desenhar viga .......................................................................... 11

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:

1 – Desenho de tanques sépticos e sumidouros;

2 – Desenhos de fundações e blocos de coroamento;

3 – Desenho de Vigas, lajes e pilares;

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

1.1 Habilitar a biblioteca do AutoCAD no VBE


a) Inicialmente deve-se abrir o VBE do EXCEL (comando ALT + F11)
b) Menu FERRAMENTAS > REFERÊNCIAS > Procurar AutoCAD-Ano1 Type Library

1.2 – Criação de Layers2


Para o funcionamento adequado do projeto final, é necessário que os Layers estejam
devidamente criados no AutoCAD. Esse procedimento pode ser manual ou automático.
O procedimento manual consta de:
a) Abrir o autocad
b) Criar os layers e aplicar suas propriedades

O procedimento automático consta de:

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

b) No VBE criar um módulo chamado Layers e escrever o código:


3

1 Aparecerá o ano da versão instalada em seu computador, Exemplo AutoCAD 2016.


2 Material disponível para download em https://1drv.ms/u/s!AuQ204pgWABdgaBjrXc-waXnrxn3IA?e=l0x5Tb
Sub Layers_PR()
Dim ACAD

'Cria os layers

x = ActiveCell.Row

y = Cells(x, 2)

If Not (y = "" Or y = "Name") Then

Set ACAD = Nothing


On Error Resume Next
Set ACAD = GetObject(, "AutoCAD.Application")
ACAD.Visible = True
Set DOC = ACAD.ActiveDocument

Dim linetypeName As String

On Error Resume Next ' trap any load errors


DOC.Linetypes.Load Cells(x, 7), "acad.lin"

Set layerObj = DOC.Layers.Add(Cells(x, 2))


layerObj.Freeze = Cells(x, 3)
layerObj.LayerOn = Cells(x, 4)
layerObj.Lock = Cells(x, 5)
layerObj.Color = Cells(x, 6)
layerObj.LineType = Cells(x, 7)
layerObj.LineWeight = Cells(x, 8)
layerObj.PlotStyleName = Cells(x, 10)
layerObj.Plottable = Cells(x, 11)
layerObj.ViewportDefault = Cells(x, 12)
layerObj.Description = Cells(x, 13)
AutoCAD.Application.Update

Set ACAD = Nothing


End If
End Sub

Sub Cria_Layer()

Dim i, numero As Integer


Dim u, w As Worksheet

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:

1.4 Dimensionar variáveis


As variáveis a ser usadas devem ser dimensionadas previamente.
a) Criar um módulo chamado Desenho_Cad;
b) Criar uma Sub chamada detalha;
c) Criar o seguinte código:
Dim Myapp As Object
Dim MyDwg As AcadDocument
Dim Inicio(0 To 2) As Double
Dim Fim(0 To 2) As Double
Dim AlvenariaL, ProjecoesL, acessoriosL As AcadLine
Dim i, j As Integer
Dim Nome As AcadText
Dim Cota As AcadDimAligned
Dim Alvenaria, Projecoes, Texto, Contas, Aces As AcadLayer
Dim Coordenada_texto(0 To 2) As Double
Dim Ponto_cota1(0 To 2) As Double
Dim Ponto_cota2(0 To 2) As Double
Dim Texto_T As AcadLayer
Dim w As Worksheet
Dim circ As AcadCircle
Dim center(0 To 2) As Double
Set Myapp = GetObject(, "Autocad.application")

1.5 Análise de erro


Para analisar eventuais erros no código, usar:
ERRORHANDLER:
If Err.Description <> "" Then
Err.Clear
Set Myapp = CreateObject("Autocad.Application")
End If

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

Inicio(0) = ActiveCell.Value: Inicio(1) = ActiveCell.Offset(0, 1).Value: Inicio(2) = 0


Fim(0) = ActiveCell.Offset(1, 0).Value: Fim(1) = ActiveCell.Offset(1, 1).Value: Fim(2) = 0

Set AlvenariaL = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Inicio, Fim)


AlvenariaL.Layer = "Alvenaria"
AlvenariaL.Update
AutoCAD.Application.Update

O nome Fossa e Sumidouro refere-se à planilha que contem as coordenadas e pode ser mudado;

A célula AG2 contem a coordenada inicial da abscissa(x);

A célula AH2 contem a ordenada inicial (y);

O valor de z foi considerado 0.

Veja se a linha foi desenhada no AutoCAD.

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

Set Cota = AutoCAD.Application.ActiveDocument.ModelSpace.AddDimAligned(Ponto_cota1,


Ponto_cota2, Ponto_cota1)

Cota.Layer = "Cotas" 'Aplica a cota


Cota.Update 'Atualiza o estilo
Cota.Arrowhead1Type = acArrowArchTick 'Altera o tipo de marcador do inicio da
cota
6
Cota.Arrowhead2Type = acArrowArchTick 'Altera o tipo de marcador do fim da cota
Cota.ArrowheadSize = 0.12 'Dimensiona o tamanho do marcador
Cota.LineWeight = acLnWt005
Cota.TextHeight = 0.34
Cota.ExtensionLineOffset = 0
Cota.ExtensionLineExtend = 0.675
Cota.TextGap = 0.1 'Altera a distancia entre o texto e a linha
Cota.SuppressLeadingZeros = False 'Suprime o zero no começo ,25
Cota.SuppressTrailingZeros = False 'Mostra o zero no fim 0,10
Cota.DimensionLineExtend = 0.1 ' Mostra a extensão da linha além do limite da cota

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.

Devemos inicialmente inserir no excel as coordenadas de nosso desenho em colunas, conforme


esquematizado abaixo:

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).

a) Inicialmente devemos montar nossa planilha com os parâmetros de nossa casa:

Altura da calçada (m): 0,50


Largura da calçada (m): 1,00
Pé direito (m): 3,00
Inclinação do telhado (%): 25%
Beiral do telhado (m): 0,80
Largura da casa (m): 5,00
largura da porta (m): 0,80
Largura da janela (m): 1,20
Afastamento da porta (m): 1,00
Afastamento porta-janela (m): 0,50

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

1,00 0,50 3,30 1,60


1,00 3,50 3,30 2,60
3,50 4,13 4,50 2,60
6,00 3,50 4,50 1,60
6,00 0,50 3,30 1,60

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

3 Material disponível para download em https://1drv.ms/u/s!AuQ204pgWABdgaBjrXc-waXnrxn3IA?e=l0x5Tb


Os demais desenhos devem ser inseridos em SELECIONAR FONTE DE DADOS clicando com o
botão direito do mouse sobre o gráfico e selecionando SELECIONAR DADOS.

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

Inicio(0) = ActiveCell.Value: Inicio(1) = ActiveCell.Offset(0, 1).Value: Inicio(2) = 0


Fim(0) = ActiveCell.Offset(1, 0).Value: Fim(1) = ActiveCell.Offset(1, 1).Value: Fim(2) = 0

Set AlvenariaL = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Inicio, Fim)


AlvenariaL.Layer = "Alvenaria"
AlvenariaL.Update
AutoCAD.Application.Update

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

Set Cota = AutoCAD.Application.ActiveDocument.ModelSpace.AddDimAligned(Ponto_cota1,


Ponto_cota2, Ponto_cota1)

Cota.Layer = "Cotas" 'Aplica a cota


Cota.Update 'Atualiza o estilo
Cota.Arrowhead1Type = acArrowArchTick 'Altera o tipo de marcador do inicio da cota
Cota.Arrowhead2Type = acArrowArchTick 'Altera o tipo de marcador do fim da cota
Cota.ArrowheadSize = 0.12 'Dimensiona o tamanho do marcador
Cota.LineWeight = acLnWt005
Cota.TextHeight = 0.34
Cota.ExtensionLineOffset = 0
Cota.ExtensionLineExtend = 0.675
Cota.TextGap = 0.1 'Altera a distancia entre o texto e a linha
Cota.SuppressLeadingZeros = False 'Suprime o zero no começo ,25
Cota.SuppressTrailingZeros = False 'Mostra o zero no fim 0,10
Cota.DimensionLineExtend = 0.1 ' Mostra a extensão da linha além do limite da cota

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;

Altura (cm): 35,00


Largura (cm): 25,00
Cobrimento (cm): 2,50
Diametro da barra (cm): 1,00
Quantidade de barras inf 3,00
Quantidade de barras sup 3,00
Ancoragem (cm): 7,00
Comprimento viga (cm): 400,00
Diametro do estribo (cm): 0,50

c) Agora devemos encontrar as coordenadas para o nosso desenho;

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);

e) Feito isso, vamos ao VBE:


O código deve ser dividido em 4 partes:
1 – Configurações iniciais;
2 – Desenho do concreto (em laranja no gráfico);
3 – Desenho do aço;
4 – Desenho das barras inferiores;
5 – Desenho das barras superiores;

Os botões serão os mesmos. Segue o código:


11
Sub detalha()

'Dimensionar variáveis

Dim Myapp As Object


Dim MyDwg As AcadDocument
Dim Inicio(0 To 2) As Double
Dim Fim(0 To 2) As Double
Dim AlvenariaL, ProjecoesL, acessoriosL As AcadLine
Dim i, j As Integer
Dim Nome As AcadText
Dim Ponto_cota1(0 To 2) As Double
Dim Ponto_cota2(0 To 2) As Double
Dim Cota As AcadDimAligned
Dim Alvenaria, Projecoes, Texto, Contas, Aces As AcadLayer
Dim Coordenada_texto(0 To 2) As Double
Dim Texto_T As AcadLayer
Dim w As Worksheet
Dim circ As AcadCircle
Dim center(0 To 2) As Double
Set Myapp = GetObject(, "Autocad.application")

'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

Inicio(0) = ActiveCell.Value: Inicio(1) = ActiveCell.Offset(0, 1).Value: Inicio(2) = 0


Fim(0) = ActiveCell.Offset(1, 0).Value: Fim(1) = ActiveCell.Offset(1, 1).Value: Fim(2) = 0

Set AlvenariaL = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Inicio, Fim)


AlvenariaL.Layer = "Concreto"
AlvenariaL.Update
AutoCAD.Application.Update

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")

Inicio(0) = ActiveCell.Value: Inicio(1) = ActiveCell.Offset(0, 1).Value: Inicio(2) = 0


Fim(0) = ActiveCell.Offset(1, 0).Value: Fim(1) = ActiveCell.Offset(1, 1).Value: Fim(2) = 0

Set AlvenariaL = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Inicio, Fim)


AlvenariaL.Layer = "Aço"
AlvenariaL.Update
AutoCAD.Application.Update

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 barras inferiores


i = 1
Range("K3").Select
Selection.Activate
Do While i < 4

center(0) = ActiveCell.Value: center(1) = ActiveCell.Offset(0, 1).Value: center(2) = 0


Radius = ActiveCell.Offset(0, 2).Value

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
ActiveCell.Offset(1, 0).Activate

i = i + 1
Loop

'Desenhar barras superiores


i = 1
Range("P3").Select
Selection.Activate
Do While i < 4

center(0) = ActiveCell.Value: center(1) = ActiveCell.Offset(0, 1).Value: center(2) = 0


Radius = ActiveCell.Offset(0, 2).Value

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
ActiveCell.Offset(1, 0).Activate

i = i + 1
Loop
End Sub

Veja como ficou nossa viga:


13

Você também pode gostar