Civil 3D API en C#: primeros pasos para programar Civil 3D, del primer comando al plugin
Qué es la API de Civil 3D, qué necesitas para programarla en C#, tu primer comando paso a paso, los objetos clave y los errores que más se repiten.
Civil 3D · API · C#
La API de Civil 3D es la puerta que casi nadie explica en español.
Qué es, qué necesitas instalar, cómo escribir tu primer comando en C#, cuáles son los objetos que vas a usar siempre y qué errores aparecen la primera semana. Con código que puedes copiar y versiones de .NET al día.
Por qué casi nadie programa Civil 3D
Hay mucho material sobre la API de Revit y casi nada sobre la de Civil 3D, sobre todo en español. No es porque Civil 3D tenga menos que automatizar: un expediente vial repite tanto trabajo como un edificio. Es porque la API de Civil 3D tiene más capas, sus objetos son más complejos y su documentación tiene menos ejemplos.
Esta guía recorre lo mínimo para empezar con el pie derecho: qué es, qué instalar, un primer comando real y los errores que conviene conocer antes de tropezar con ellos.
Del código a un botón en Civil 3D
Proyecto en Visual Studio
Biblioteca de clases .NET
Referencias de Autodesk
AutoCAD + Civil 3D, sin copiar
Comando en C#
Lee y modifica el dibujo
NETLOAD o bundle
Cargado en Civil 3D
Civil 3D API en C#, en 6 pasos
Qué es la API, qué instalar, tu primer comando, los objetos clave, los errores de la primera semana y cómo convertir un comando en un plugin.
- 01Concepto
Qué es la API
Dos capas, AutoCAD y Civil 3D, y sus alternativas
- 02Preparación
Lo que necesitas
Visual Studio, el .NET de tu versión y las referencias
- 03Código
Primer comando
Listar los alineamientos del dibujo
- 04API
Objetos clave
Alineamientos, superficies, corredores y puntos
- 05Errores
Errores comunes
NETLOAD, Copiar localmente, Commit y bloqueo
- 06Acción
Del comando al plugin
Botón, bundle, errores y estructura
Civil 3D se construye sobre AutoCAD, y su API también. Un programa para Civil 3D usa dos capas:
- La API de AutoCAD (.NET): documentos, transacciones, la línea de comandos, líneas, polilíneas, bloques y capas.
- La API de Civil 3D (.NET): los objetos de ingeniería: alineamientos, perfiles, superficies, corredores, secciones, puntos COGO, parcelas y redes de tuberías.
Las alternativas, según lo que necesites:
- Dynamo, para automatizar sin escribir código. Desde Civil 3D 2025.1 trae más de mil nodos nativos; lo explicamos en 10 scripts de Dynamo para Civil 3D.
- Python, dentro de los nodos de Python de Dynamo, cuando los nodos visuales se quedan cortos.
- La API COM, más antigua, que todavía usan algunas rutinas LISP y VBA.
- C# sobre la API .NET, para herramientas de producción que usa toda la oficina. Es el camino de esta guía.
- Windows con Civil 3D instalado. La API solo funciona dentro de Civil 3D.
- Visual Studio Community, gratuito, con la carga de trabajo de desarrollo de escritorio con .NET.
- El framework correcto para tu versión:
| Versión de Civil 3D | Framework |
|---|---|
| 2024 y anteriores | .NET Framework 4.8 |
| 2025 y 2026 | .NET 8 |
| 2027 | .NET 10 |
- Un proyecto de tipo biblioteca de clases, con referencias a las librerías de la carpeta de instalación de Civil 3D: AcCoreMgd, AcDbMgd y AcMgd, de AutoCAD, y AecBaseMgd y AeccDbMgd, de Civil 3D.
Este comando recorre los alineamientos del dibujo y escribe su nombre y su longitud en la línea de comandos:
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("ZLISTAREJES")]
public void ListarEjes()
{
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 eje = (Alignment)tr.GetObject(id, OpenMode.ForRead);
ed.WriteMessage($"\n{eje.Name}: {eje.Length:F2} m");
}
tr.Commit();
}
}
}
}
Qué hace cada parte:
CommandMethodconvierte el método en un comando que se escribe en Civil 3D.CivilApplication.ActiveDocumentda acceso a los objetos de Civil 3D del dibujo abierto.GetAlignmentIds()devuelve los identificadores de todos los alineamientos.- La transacción abre cada alineamiento para leerlo, y
Commitla cierra.
Para probarlo: compila, abre Civil 3D con un dibujo que tenga alineamientos, escribe NETLOAD, elige tu DLL y ejecuta ZLISTAREJES.
Casi todo empieza en el CivilDocument, el documento de Civil 3D del dibujo abierto:
| Quieres trabajar con | Punto de partida en CivilDocument |
|---|---|
| Alineamientos | GetAlignmentIds() |
| Superficies | GetSurfaceIds() |
| Corredores | CorridorCollection |
| Puntos COGO | CogoPoints |
| Redes de tuberías | GetPipeNetworkIds() |
| Estilos | Styles |
Desde cada alineamiento se llega a sus perfiles y a sus grupos de líneas de muestreo; desde cada corredor, a sus líneas base y regiones. La regla es siempre la misma: obtener el identificador, abrir el objeto dentro de una transacción y leerlo o modificarlo.
- «No se pudo cargar» al hacer NETLOAD. El proyecto apunta a un framework distinto del que usa tu versión de Civil 3D. Revisa la tabla del paso 2.
- Errores raros al cargar o al cerrar Civil 3D. Las referencias de Autodesk quedaron con Copiar localmente en Sí.
- Los cambios no se guardan. Falta
tr.Commit(): una transacción que no se confirma se descarta entera. - Error de bloqueo del documento (eLockViolation). Pasa cuando el código se ejecuta desde una ventana propia y no desde un comando: hay que bloquear el documento antes de modificarlo.
- Funciona en tu versión y no en la de tu colega. Cada versión de Civil 3D exige compilar contra sus propias librerías.
Un comando que funciona en tu computadora todavía no es una herramienta. Para que la use la oficina hace falta:
- Un botón en la barra superior de Civil 3D, en lugar de un comando escrito.
- Un bundle: la carpeta con formato oficial de Autodesk que Civil 3D carga solo al iniciar.
- Manejo de errores y registro de lo que hace, para que un fallo no deje el dibujo a medias.
- Una estructura en capas, para que el cambio de versión de Autodesk toque una sola parte del código.
Lo explicamos en desarrollo de add-ins para Revit y Civil 3D, y si quieres llegar más rápido con IA, en crear un plugin de Civil 3D con Claude Code.
| Criterio | Plugin en C# con la API | Script de Dynamo |
|---|---|---|
| Velocidad con miles de objetos | Alta | Variable |
| Interfaz propia y validaciones | Sí | Básica |
| Distribución | Instalador o bundle para toda la oficina | Archivo que cada uno abre |
| Curva de aprendizaje | Meses | Semanas |
| Ideal para | Herramientas de uso diario | Probar una idea rápido |
Recursos relacionados
- La guía completa: desarrollo de add-ins para Revit y Civil 3D.
- El equivalente en Revit: Revit API en español, primeros pasos.
- Con ayuda de IA: crear un plugin de Civil 3D con Claude Code.
- Dynamo o C#: cuál conviene en cada caso.
- Qué automatizar primero: automatizar Civil 3D, la guía completa.
- Si prefieres encargarlo: desarrollo de plugins para Civil 3D.
Preguntas frecuentes sobre la API de Civil 3D
Es la interfaz oficial de Autodesk para programar Civil 3D. Permite que un programa en C# lea y modifique alineamientos, perfiles, superficies, corredores, puntos COGO y redes de tuberías. Funciona sobre .NET y sobre la API de AutoCAD, que aporta los documentos, las transacciones y los objetos de dibujo.
Nota técnica: las versiones de .NET corresponden a la documentación de Autodesk vigente en octubre de 2026. Revisa la guía del desarrollador de tu versión antes de empezar.
Sigue leyendo sobre este tema
Desarrollo de add-ins para Revit y Civil 3D: la guía completa en español (2026)
Guía completa para desarrollar add-ins para Revit y Civil 3D: qué son, qué automatizar, C# y la API de Autodesk, cómo se distribuyen y cuánto cuestan.
Automatizar Civil 3D: la guía completa en español (2026)
Qué se puede automatizar en Civil 3D y cómo: Dynamo, Python, C# y AutoLISP comparados, las 15 automatizaciones con más retorno y cuál hacer primero.
Cómo crear un plugin para Civil 3D con Claude Code sin ser programador: guía end-to-end 2026
Cómo crear un plugin para Civil 3D con Claude Code sin saber programar: arquitectura, prompts que funcionan, y cómo compilarlo e instalarlo en tu oficina.
Dynamo vs C# en Civil 3D y Revit: cuándo usar cada uno + automatizaciones que ahorran horas
Dynamo o C# para automatizar Civil 3D y Revit: diferencias reales, cuándo conviene cada uno y automatizaciones que ahorran horas, con ejemplos.