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.
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.
- 01Conceito
O que é a API
Duas camadas, AutoCAD e Civil 3D, e suas alternativas
- 02Preparação
O que você precisa
Visual Studio, o .NET da sua versão e as referências
- 03Código
Primeiro comando
Listar os alinhamentos do desenho
- 04API
Objetos-chave
Alinhamentos, superfícies, corredores e pontos
- 05Erros
Erros comuns
NETLOAD, Copiar localmente, Commit e bloqueio
- 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.
- Windows com o Civil 3D instalado. A API só funciona dentro do Civil 3D.
- Visual Studio Community, gratuito, com a carga de trabalho de desenvolvimento desktop com .NET.
- O framework certo para a sua versão:
| Versão do Civil 3D | Framework |
|---|---|
| 2024 e anteriores | .NET Framework 4.8 |
| 2025 e 2026 | .NET 8 |
| 2027 | .NET 10 |
- 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:
CommandMethodtransforma o método num comando que se digita no Civil 3D.CivilApplication.ActiveDocumentdá 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
Commita 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 com | Ponto de partida no CivilDocument |
|---|---|
| Alinhamentos | GetAlignmentIds() |
| Superfícies | GetSurfaceIds() |
| Corredores | CorridorCollection |
| Pontos COGO | CogoPoints |
| Redes de tubulação | GetPipeNetworkIds() |
| Estilos | Styles |
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ério | Plugin em C# com a API | Script de Dynamo |
|---|---|---|
| Velocidade com milhares de objetos | Alta | Variável |
| Interface própria e validações | Sim | Básica |
| Distribuição | Instalador ou bundle para o escritório inteiro | Arquivo que cada um abre |
| Curva de aprendizado | Meses | Semanas |
| Ideal para | Ferramentas de uso diário | Testar uma ideia rápido |
Recursos relacionados
- O guia completo: desenvolvimento de add-ins para Revit e Civil 3D.
- Com ajuda de IA: criar um plugin do Civil 3D com Claude Code.
- Dynamo ou C#: qual convém em cada caso.
- O que automatizar primeiro: automatizar o Civil 3D, o guia completo.
- Se você vai encomendar: quanto custa um add-in para Revit ou Civil 3D.
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.
Continue lendo sobre este tema
Desenvolvimento de add-ins para Revit e Civil 3D: o guia completo em português (2026)
Guia completo para desenvolver add-ins para Revit e Civil 3D: o que são, o que automatizar, C# e a API da Autodesk, como distribuir e quanto custam.
Automatizar Civil 3D: o guia completo em português (2026)
O que dá para automatizar no Civil 3D e como: Dynamo, Python, C# e AutoLISP comparados, as 15 automações com mais retorno e qual fazer primeiro.
Como criar um plugin para Civil 3D com Claude Code sem ser programador: guia end-to-end 2026
Como criar um plugin para Civil 3D com Claude Code sem saber programar: arquitetura, prompts que funcionam e como compilar e instalar no escritório.
Dynamo vs C# no Civil 3D e Revit: quando usar cada um + automações que economizam horas
Dynamo ou C# para automatizar Civil 3D e Revit: diferenças reais, quando cada um vale a pena e automações que economizam horas, com exemplos.