Padronize croquis de rede de esgoto no Anália Franco com macros VBA e ganhe agilidade

Aprenda a criar macros VBA no CorelDRAW para padronizar croquis de rede de esgoto no Anália Franco. Automação prática para equipes técnicas e projetistas.

O engenheiro civil responsável pelo loteamento no Anália Franco recebeu o prazo de 48 horas para entregar os croquis de rede de esgoto à concessionária. A equipe de desenho, acostumada a configurar camadas, estilos e blocos manualmente a cada nova prancha, estimava dois dias só na formatação. Foi aí que a automação entrou: uma macro VBA no CorelDRAW reduziu o setup de 4 horas para 3 minutos por prancha, liberando o time para validar a hidráulica em vez de desenhar linhas tracejadas.

Essa realidade não é exceção. Projetos de saneamento na zona leste de São Paulo exigem rigor na representação gráfica — declividades, cotas de fundo, identificação de poços de visita, materiais e trechos de responsabilidade pública versus particular. Cada desvio da norma da Sabesp gera devolução, retrabalho e multas contratuais. A padronização via VBA não é luxo; é condição de competitividade para escritórios que atendem a região.

O diferencial está em tratar o croqui como estrutura de dados, não como desenho livre. Quando a macro cria a camada “REDE_COLETORA_150_PVC” com espessura 0,35 mm, cor azul e tipo de linha “DASH_DOT”, ela garante que nenhum estagiário use linha contínua por engano. Quando insere o bloco “PV_PADRAO_SABESP” com atributos editáveis para número, cota de fundo e tampa, ela elimina a digitação repetida de 15 poços por quilômetro. O ganho escala exponencialmente.

Cenário prático: do levantamento topográfico ao croqui aprovado

Imagine a rotina: o topógrafo entrega planilha CSV com 247 pontos — coordenadas X/Y/Z, tipo de ponto (PV, mudança de direção, mudança de declividade), diâmetro nominal e material. No fluxo manual, alguém digita cada coordenada, desenha polilinhas, insere blocos, coteja, legenda. Com a macro, o CSV é lido, a geometria é gerada, os blocos são instanciados com atributos preenchidos, as cotas são colocadas nos pontos de quebra e a legenda é montada com contagem automática de metros por diâmetro.

O segredo está na separação de responsabilidades: uma função ImportarTopografia(caminhoCSV) retorna uma coleção de objetos PontoRede tipados. Outra, GerarGeometria(pontos), cria as shapes no CorelDRAW usando ActiveLayer.CreateCurveSegment. A terceira, AplicarPadronizacao(), percorre todas as shapes e aplica estilos baseados em metadados armazenados em UserData. Cada camada é isolada, testável e reutilizável.

Para validar o conceito, pegue um projeto antigo do Anália Franco — preferencialmente um com 30+ poços de visita e trechos em PVC 150, 200 e 250 mm. Rode a macro sobre o CSV original e compare o tempo: setup manual médio de 3h40min versus 2min15s de execução completa. A diferença paga o desenvolvimento na primeira semana.

Estrutura do template mestre (.cdt) para o Anália Franco

O template é a fundação. Não comece a macro sem ele. Crie um arquivo Croqui_Esgoto_AnaliaFranco.cdt contendo:

Camada Cor Espessura Tipo Linha Finalidade
REDE_COLETORA_150_PVC Azul (RGB 0,0,255) 0,35 mm DASH_DOT Coletor principal Ø150
REDE_COLETORA_200_PVC Azul 0,50 mm DASH_DOT Coletor principal Ø200
REDE_COLETORA_250_PVC Azul 0,70 mm DASH_DOT Coletor principal Ø250
RAMAL_DOMICILIAR_100_PVC Verde (0,128,0) 0,25 mm CONTINUOUS Ramais Ø100
POCOS_VISITA Vermelho (255,0,0) 0,50 mm CONTINUOUS Blocos de PV
COTAS_FUNDO Preto 0,18 mm CONTINUOUS Textos de cota
LEGENDA_E_TITULO Preto 0,35 mm CONTINUOUS Carimbo e legenda

Além das camadas, o template deve conter blocos mestres na página “Mestres” (fora da área de impressão): PV_PADRAO_SABESP, PV_PROFUNDO_SABESP, CAIXA_INSPECAO, MUDANCA_DIRECAO, MUDANCA_DECLIVIDADE. Cada bloco com atributos NumeroPV, CotaFundo, DiametroEntrada, DiametroSaida, Material, TrechoPublico (Sim/Não).

A macro de inicialização InicializarCroqui() abre o template, define ActiveDocument como variável global, cria as camadas se não existirem (verificação LayerExists), e configura Unit = cdrMillimeter. Isso garante que qualquer máquina da equipe parta do mesmo estado — seja no escritório da Vila Formosa ou no notebook de campo no Anália Franco.

Lendo dados de topografia e gerando geometria

O coração da automação é a transformação de dados tabulares em vetores precisos. Use ADO para ler o CSV sem abrir o Excel:

Function LerCSVTopografia(caminho As String) As Collection
    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim pontos As New Collection
    Dim pt As PontoRede
    
    conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
        Left(caminho, InStrRev(caminho, "\")) & _
        ";Extended Properties='text;HDR=YES;FMT=Delimited'"
    
    rs.Open "SELECT * FROM " & Mid(caminho, InStrRev(caminho, "\") + 1), conn
    
    Do Until rs.EOF
        Set pt = New PontoRede
        pt.X = CDbl(rs("X"))
        pt.Y = CDbl(rs("Y"))
        pt.Z = CDbl(rs("Z"))
        pt.Tipo = rs("Tipo")
        pt.Diametro = CLng(rs("Diametro"))
        pt.Material = rs("Material")
        pt.NumeroPV = rs("NumeroPV")
        pontos.Add pt
        rs.MoveNext
    Loop
    
    rs.Close: conn.Close
    Set LerCSVTopografia = pontos
End Function

A classe PontoRede encapsula os dados e validações: Property Get CamadaAlvo() As String retorna a camada correta baseada em diâmetro e material. Property Get BlocoMestre() As String define qual bloco inserir. A geração de geometria itera a coleção: para pontos consecutivos do mesmo trecho, cria Curve com AddNode; para pontos de PV, usa ActiveLayer.ImportEx do bloco mestre e define Shape.UserData("NumeroPV") = pt.NumeroPV.

Declividade é calculada no momento da criação: (Z_anterior - Z_atual) / Distancia3D * 100. Se fora da faixa NBR 8160 (mínimo 0,5% para Ø150, 0,35% para Ø200), a macro marca a shape com Outline.Color = RGB(255,165,0) (laranja) e adiciona UserData("AlertaDeclividade") = True para revisão posterior.

Padronização visual e anotações técnicas automáticas

Com a geometria no lugar, a macro aplica a identidade visual do projeto. A rotina AplicarEstilos() percorre ActivePage.Shapes e, lendo UserData("Diametro") e UserData("Material"), define Outline.Width, Outline.Style, Fill (se houver) e Layer.Name. Nada de Select/Activate — use For Each shp In ActivePage.Shapes direto.

Cotas de fundo são inseridas via ActiveLayer.CreateArtisticText posicionadas no BoundingBox.BottomCenter de cada bloco de PV, com formatação Font = "Arial Narrow", Size = 2.5mm, Alignment = cdrCenterAlignment. O texto vem de shp.UserData("CotaFundo") formatado com Format(cota, "0.00").

Numeração sequencial de poços: a macro ordena a coleção por NumeroPV (chave natural do projeto) e atualiza o atributo do bloco via shp.OLEObject.SetAttribute "NumeroPV", novoNumero. Se o projeto usa numeração da concessionária (ex: PV-ANF-001), a macro aplica máscara "PV-ANF-" & Format(indice, "000").

Legenda técnica é construída agregando dados: Dictionary com chave "Ø" & diametro & "_" & material e valor ComprimentoTotal. No final, CreateTable ou CreateParagraphText monta a tabela com colunas: Diâmetro, Material, Extensão (m), Qtd PVs, Trecho Público (m). O carimbo de responsável técnico puxa Environ("USERNAME") e Now para "Proj. " & usuario & " - " & Format(Date, "dd/mm/yyyy").

Validação, exportação e integração com fluxo de aprovação

Antes de entregar, a macro roda ValidarCroqui() — checklist automatizado:

  1. Todos os PVs têm CotaFundo preenchida?
  2. Declividades dentro da NBR 8160? (alerta laranja já aplicado)
  3. Camadas não utilizadas foram removidas?
  4. Limite da área de impressão contém todas as shapes?
  5. Carimbo de RT preenchido com CREA válido?

Falhas geram relatório TXT na pasta do projeto: Validacao_Croqui_ANF_20241115_143022.txt. Aprovações seguem para PDF/X-1a via PublishToPDF com preset "Sabesp_Aprovacao" (300 DPI, fontes embutidas, marcas de corte).

Para equipes que trabalham com DESENTUPIDORA NO ANÁLIA FRANCO em manutenção corretiva, a mesma base de dados do croqui alimenta ordens de serviço georreferenciadas — a macro exporta GeoJSON simplificado com centroides dos PVs e atributos de profundidade, material e último serviço.

Integração com versionamento: a macro salva Backup_ + timestamp na pasta \Servidor\Projetos\AnaliaFranco\Versoes\ antes de qualquer alteração em massa. FileCopy ActiveDocument.FullName, destino. Histórico de quem rodou a macro, quando e qual CSV foi importado fica em Log_Macros.csv com Application.UserName, Now, caminhoCSV, QtdPontos.

Distribuição, manutenção e evolução da solução

Empacote como extensão .ccx via Tools > Macros > Export as Extension. Inclua manifest.xml com Version="1.2.0", MinCorelVersion="2021", Description="Croqui Esgoto Anália Franco - Padronização Sabesp". Instalação: duplo clique no .ccx ou Gerenciador de Extensões > Instalar.

Atualizações seguem semântica: 1.2.1 corrige bug na leitura de CSV com vírgula decimal; 1.3.0 adiciona exportação para DXF compatível com AutoCAD Civil 3D. Comunicação via Changelog.md no repositório Git interno (sim, versionamento de macro em Git — git init na pasta GlobalMacros\CroquiEsgoto\).

Treinamento da equipe: sessão de 30 minutos cobrindo atalhos Ctrl+Shift+E (importar CSV), Ctrl+Shift+V (validar), Ctrl+Shift+P (publicar PDF). Guia rápido de uma página em \Servidor\Manuais\Croqui_Esgoto_Atalhos.pdf. Suporte: canal #automacao-coreldraw no Teams com rotação de plantão semanal.

Métricas de adoção: Application.Events.OnMacroRun incrementa contador em Estatisticas_Uso.csv. Após 90 dias, meta é 95% dos croquis da região gerados via macro, tempo médio de setup < 5 min, zero devoluções por não conformidade gráfica.

Conclusão prática

A padronização de croquis de rede de esgoto no Anália Franco via VBA no CorelDRAW transforma um gargalo de formatação em fluxo de dados controlado. O template mestre garante identidade visual, a importação de CSV elimina digitação, a validação automática previne devoluções e a extensão .ccx democratiza o uso na equipe. Comece pelo template, automatize a leitura de um CSV real, meça o ganho e evolua em ciclos curtos. O próximo projeto da região sai com a macro — não com o mouse.

Para aprofundar a base técnica, veja como criar macros VBA para CorelDRAW do zero, aplique boas práticas de desempenho em macros para produção e entenda como publicar suas macros no gerenciador de extensões.

Checklist prático

0 de 9 concluídos

Perguntas frequentes

Por que padronizar croquis de rede de esgoto com VBA no CorelDRAW?

A padronização via VBA elimina retrabalho manual, garante conformidade com normas técnicas e acelera a entrega de projetos. Macros aplicam estilos, camadas e simbologias de forma consistente em segundos.

Quais elementos do croqui podem ser automatizados?

É possível automatizar a criação de camadas padronizadas, aplicação de estilos de linha para tubulações, inserção de blocos de poços de visita, cotas automáticas, legendas técnicas e carimbos de aprovação.

Preciso saber programação avançada para criar essas macros?

Não. Conhecimentos básicos de VBA e do modelo de objetos do CorelDRAW são suficientes. O gravador de macros ajuda a capturar ações repetitivas, que depois podem ser refinadas com lógica condicional.

Como garantir que a macro funcione em diferentes versões do CorelDRAW?

Use late binding para objetos, evite referências a versões específicas e teste em ambientes homologados. Prefira métodos nativos da API e trate erros com On Error Resume Next em blocos críticos.

A macro pode importar dados de planilhas ou CAD?

Sim. VBA acessa arquivos CSV, Excel via ADO ou ODBC, e DXF/DWG via importação nativa do CorelDRAW. Dados de coordenadas, diâmetros e materiais podem preencher o croqui automaticamente.

Como distribuir a macro para a equipe de campo no Anália Franco?

Exporte como .gms ou instale via Gerenciador de Extensões. Crie um instalador simples que copia o arquivo para a pasta GlobalMacros de cada usuário e registra atalhos de teclado personalizados.