← Voltar ao blog
Civil 3DCivil 3D APIC#.NETPlugins para Civil 3DAutomação BIM

Civil 3D API em C#: primeiros passos para programar o Civil 3D, do primeiro comando ao plugin

O que é a API do Civil 3D, o que você precisa para programá-la em C#, seu primeiro comando passo a passo, os objetos-chave e os erros mais comuns.

Zeist··8 min de leitura
Compartilhar no LinkedInCivil 3D API em C#: primeiros passos para programar o Civil 3D, do primeiro comando ao plugin

Civil 3D · API · C#

A API do Civil 3D é a porta que quase ninguém explica em português.

O que é, o que instalar, como escrever seu primeiro comando em C#, quais objetos você vai usar sempre e que erros aparecem na primeira semana. Com código para copiar e versões do .NET atualizadas.

Por que quase ninguém programa o Civil 3D

Há muito material sobre a API do Revit e quase nada sobre a do Civil 3D, sobretudo em português. Não é porque o Civil 3D tenha menos a automatizar: um projeto rodoviário repete tanto trabalho quanto um edifício. É porque a API do Civil 3D tem mais camadas, seus objetos são mais complexos e sua documentação tem menos exemplos.

Este guia percorre o mínimo para começar com o pé direito: o que é, o que instalar, um primeiro comando real e os erros que vale conhecer antes de tropeçar neles.

Do código a um botão no Civil 3D

Projeto no Visual Studio

Biblioteca de classes .NET

Referências da Autodesk

AutoCAD + Civil 3D, sem copiar

Comando em C#

Lê e modifica o desenho

NETLOAD ou bundle

Carregado no Civil 3D

Civil 3D API em C#, em 6 passos

O que é a API, o que instalar, seu primeiro comando, os objetos-chave, os erros da primeira semana e como transformar um comando num plugin.

  1. 01Conceito

    O que é a API

    Duas camadas, AutoCAD e Civil 3D, e suas alternativas

  2. 02Preparação

    O que você precisa

    Visual Studio, o .NET da sua versão e as referências

  3. 03Código

    Primeiro comando

    Listar os alinhamentos do desenho

  4. 04API

    Objetos-chave

    Alinhamentos, superfícies, corredores e pontos

  5. 05Erros

    Erros comuns

    NETLOAD, Copiar localmente, Commit e bloqueio

  6. 06Ação

    Do comando ao plugin

    Botão, bundle, erros e estrutura

O Civil 3D é construído sobre o AutoCAD, e sua API também. Um programa para o Civil 3D usa duas camadas:

  • A API do AutoCAD (.NET): documentos, transações, a linha de comando, linhas, polilinhas, blocos e layers.
  • A API do Civil 3D (.NET): os objetos de engenharia: alinhamentos, perfis, superfícies, corredores, seções, pontos COGO, lotes e redes de tubulação.

As alternativas, conforme o que você precisa:

  • Dynamo, para automatizar sem escrever código. Desde o Civil 3D 2025.1 traz mais de mil nós nativos; explicamos em 10 scripts de Dynamo para Civil 3D.
  • Python, dentro dos nós de Python do Dynamo, quando os nós visuais não bastam.
  • A API COM, mais antiga, que algumas rotinas LISP e VBA ainda usam.
  • C# sobre a API .NET, para ferramentas de produção que o escritório inteiro usa. É o caminho deste guia.
  1. Windows com o Civil 3D instalado. A API só funciona dentro do Civil 3D.
  2. Visual Studio Community, gratuito, com a carga de trabalho de desenvolvimento desktop com .NET.
  3. O framework certo para a sua versão:
Versão do Civil 3DFramework
2024 e anteriores.NET Framework 4.8
2025 e 2026.NET 8
2027.NET 10
  1. Um projeto do tipo biblioteca de classes, com referências às bibliotecas da pasta de instalação do Civil 3D: AcCoreMgd, AcDbMgd e AcMgd, do AutoCAD, e AecBaseMgd e AeccDbMgd, do Civil 3D.

Este comando percorre os alinhamentos do desenho e escreve o nome e o comprimento de cada um na linha de comando:

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Civil.ApplicationServices;
using Autodesk.Civil.DatabaseServices;

[assembly: CommandClass(typeof(ZeistDemo.Comandos))]

namespace ZeistDemo
{
    public class Comandos
    {
        [CommandMethod("ZLISTAREIXOS")]
        public void ListarEixos()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
            CivilDocument civil = CivilApplication.ActiveDocument;

            using (Transaction tr = doc.Database.TransactionManager.StartTransaction())
            {
                foreach (ObjectId id in civil.GetAlignmentIds())
                {
                    var eixo = (Alignment)tr.GetObject(id, OpenMode.ForRead);
                    ed.WriteMessage($"\n{eixo.Name}: {eixo.Length:F2} m");
                }
                tr.Commit();
            }
        }
    }
}

O que faz cada parte:

  • CommandMethod transforma o método num comando que se digita no Civil 3D.
  • CivilApplication.ActiveDocument dá acesso aos objetos do Civil 3D do desenho aberto.
  • GetAlignmentIds() devolve os identificadores de todos os alinhamentos.
  • A transação abre cada alinhamento para leitura, e Commit a encerra.

Para testar: compile, abra o Civil 3D com um desenho que tenha alinhamentos, digite NETLOAD, escolha sua DLL e execute ZLISTAREIXOS.

Quase tudo começa no CivilDocument, o documento do Civil 3D do desenho aberto:

Você quer trabalhar comPonto de partida no CivilDocument
AlinhamentosGetAlignmentIds()
SuperfíciesGetSurfaceIds()
CorredoresCorridorCollection
Pontos COGOCogoPoints
Redes de tubulaçãoGetPipeNetworkIds()
EstilosStyles

De cada alinhamento chega-se aos seus perfis e grupos de linhas de amostragem; de cada corredor, às suas linhas base e regiões. A regra é sempre a mesma: obter o identificador, abrir o objeto dentro de uma transação e lê-lo ou modificá-lo.

  • «Não foi possível carregar» ao fazer NETLOAD. O projeto aponta para um framework diferente do que a sua versão do Civil 3D usa. Confira a tabela do passo 2.
  • Erros estranhos ao carregar ou fechar o Civil 3D. As referências da Autodesk ficaram com Copiar localmente em Sim.
  • As mudanças não são salvas. Falta tr.Commit(): uma transação que não é confirmada é descartada inteira.
  • Erro de bloqueio do documento (eLockViolation). Acontece quando o código roda a partir de uma janela própria e não de um comando: é preciso bloquear o documento antes de modificá-lo.
  • Funciona na sua versão e não na do colega. Cada versão do Civil 3D exige compilar contra as próprias bibliotecas.

Um comando que funciona no seu computador ainda não é uma ferramenta. Para o escritório usar, é preciso:

  • Um botão na barra superior do Civil 3D, em vez de um comando digitado.
  • Um bundle: a pasta com formato oficial da Autodesk que o Civil 3D carrega sozinho ao iniciar.
  • Tratamento de erros e registro do que faz, para que uma falha não deixe o desenho pela metade.
  • Uma estrutura em camadas, para que a mudança de versão da Autodesk afete uma só parte do código.

Explicamos em desenvolvimento de add-ins para Revit e Civil 3D, e se você quer chegar mais rápido com IA, em criar um plugin do Civil 3D com Claude Code.

CritérioPlugin em C# com a APIScript de Dynamo
Velocidade com milhares de objetosAltaVariável
Interface própria e validaçõesSimBásica
DistribuiçãoInstalador ou bundle para o escritório inteiroArquivo que cada um abre
Curva de aprendizadoMesesSemanas
Ideal paraFerramentas de uso diárioTestar uma ideia rápido

Recursos relacionados

Perguntas frequentes sobre a API do Civil 3D

É a interface oficial da Autodesk para programar o Civil 3D. Permite que um programa em C# leia e modifique alinhamentos, perfis, superfícies, corredores, pontos COGO e redes de tubulação. Funciona sobre o .NET e sobre a API do AutoCAD, que fornece os documentos, as transações e os objetos de desenho.


Nota técnica: as versões do .NET correspondem à documentação da Autodesk vigente em outubro de 2026. Consulte o guia do desenvolvedor da sua versão antes de começar.

Fale com um engenheiroResposta hoje · Sem compromisso