Autodesk Inventor desde código: primer experimento de automatización
En el video que acompaña a este artículo se ve algo que al inicio parece raro: abro una terminal de Windows, ejecuto un archivo, y Autodesk Inventor responde dibujando geometría en un sketch que no existía un segundo antes. Nadie tocó el mouse. Este documento es la guía completa para que puedas reproducirlo en tu propia máquina, con los comandos exactos, el código, y los errores típicos que vas a encontrar en el camino.
Antes de entrar en los pasos, una nota de sinceridad: lo que hacemos aquí es pequeño. Una línea y un círculo en un sketch no resuelven ningún problema de ingeniería por sí solos. Pero es el primer ladrillo de un proyecto más grande: llegar al punto en que un equipo de diseño pueda generar familias completas de piezas a partir de datos, o incluso a partir de una descripción en lenguaje natural dada a un agente de IA. No estamos en ese punto. Pero el camino empieza aquí.
Desliza con las flechas (‹ / ›) o usa los círculos numerados de abajo para saltar a un paso específico. El texto de cada captura resume lo que vas a ver más detallado en el recorrido escrito que sigue. Si te pierdes en algún paso del artículo, vuelve aquí: cada número de paso coincide.
Cuando termines esta Fase 1, sigue con Autodesk Inventor con IA: del prompt al dibujo. Ahí el flujo cambia: ya no escribes todo el C# a mano, sino que describes el mecanismo y una IA genera el código para compilarlo y verlo en Inventor.
- Qué vas a hacer y qué necesitas
- Cómo lo explico en una analogía
- Paso 1: Localizar el compilador de C# en Windows
- Paso 2: Conseguir el código fuente (descargar o escribir)
- Cómo se lee el código (anatomía)
- Paso 3: Ubicar la DLL de Inventor en tu versión
- Paso 4: Compilar
- Paso 5: Ejecutar y verificar
- Errores típicos
- ¿Puedo pedirle el código a una IA?
- Qué se logró y hacia dónde va esto
1. Qué vas a hacer y qué necesitas
Vas a hacer un programa pequeño que, al ejecutarse, le pide a Autodesk Inventor lo siguiente:
- Abrir un documento de pieza nuevo (archivo
.ipt). - Crear un sketch en el plano XY.
- Dibujar una línea de (0, 0) a (50, 50) milímetros.
- Dibujar un círculo con centro en (100, 100) mm y radio 30 mm.
Y todo esto sin tocar un solo menú ni un solo botón. Eso es todo por ahora.
Lo que debes tener instalado
- Autodesk Inventor — cualquier versión reciente funciona. En mi máquina uso Inventor 2020; en otra tengo Inventor 2026.
- Windows con .NET Framework — ya viene incluido en Windows 10 y 11. No hay nada que instalar.
- Una terminal — CMD o PowerShell, cualquiera sirve.
- Un editor de texto — Notepad, Notepad++, VS Code, lo que tengas.
No necesitas instalar Visual Studio ni un entorno de desarrollo grande. El compilador de C# ya vive dentro de Windows desde hace más de una década. La idea de este experimento es mostrar que con lo mínimo ya alcanza para empezar.
2. Cómo lo explico en una analogía
Inventor, además de su interfaz con menús y botones, tiene una puerta por la que acepta instrucciones desde otros programas. Pensárlo como una tomacorriente: siempre está energizada esperando que alguien conecte algo. Nuestro trabajo es escribir un programa que se conecte a esa puerta y le dicte lo que queremos. Ese dictado es en texto, en un lenguaje de programación llamado C# (se pronuncia cé sharp), y las instrucciones que podemos dar están documentadas por Autodesk en lo que se llama la API de Inventor.
¿Por qué C# y no otro lenguaje? Porque la API de Inventor está hecha para .NET, que es la familia de tecnologías en la que vive C# de forma nativa. Python también puede comunicarse con Inventor, pero con más fricción. En esta Fase 1 elijo el camino con menos sorpresas.
Localizar el compilador de C# en Windows
El compilador de C# se llama csc.exe (de C# Compiler). Su trabajo es tomar el archivo de texto que vas a escribir y convertirlo en un archivo .exe que Windows puede ejecutar. Como ya viene con el sistema, lo único que hace falta es saber dónde está.
El CMD (o “Símbolo del sistema”) es una ventana de texto donde puedes escribir comandos directamente a Windows. No es para programadores exclusivamente — cualquiera puede usarlo siguiendo instrucciones exactas.
Para abrirlo hay tres formas, usa la que te resulte más cómoda:
- Opción rápida: Presiona las teclas
Windows+Ral mismo tiempo. Aparece una ventana pequeña. Escribecmdy presionaEnter. - Desde el menú Inicio: Haz clic en el botón de Windows (esquina inferior izquierda), escribe
cmden el buscador, y haz clic en Símbolo del sistema. - Desde el Explorador de archivos: Navega a tu carpeta, haz clic en la barra de dirección, escribe
cmdy presionaEnter. Esto abre el CMD ya ubicado dentro de esa carpeta.
El resultado es una ventana negra con texto blanco que muestra algo como C:\Users\TuNombre>. Eso es el CMD listo para recibir instrucciones.
Con el CMD abierto, escribe el siguiente comando y presiona Enter. Este comando le pide a Windows que busque el compilador csc.exe dentro de la carpeta de .NET y te muestre su ubicación exacta:
El resultado que ves arriba — v4.0.30319\csc.exe — es un ejemplo de lo que aparece en una máquina con Windows 10 y .NET Framework 4. En tu computadora puede salir una ruta distinta dependiendo de la versión de Windows y de .NET que tengas instalada. Algunos ejemplos posibles:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe— la más común en Windows 10/11C:\Windows\Microsoft.NET\Framework64\v3.5\csc.exe— en sistemas más antiguosC:\Windows\Microsoft.NET\Framework64\v2.0.50727\csc.exe— en versiones muy viejas de Windows
Lo que debes hacer: copia la ruta completa que aparezca en tu pantalla, incluyendo \csc.exe al final. Esa es la ruta válida para tu máquina y es la que usarás en los pasos siguientes. No copies la del ejemplo de este artículo si la tuya es diferente.
El CMD no responde a Ctrl+C para copiar como en otros programas. Para copiar el resultado que aparece en pantalla: haz clic derecho sobre la ventana del CMD y selecciona Marcar. Luego arrastra el mouse sobre el texto que quieres copiar y presiona Enter. El texto queda en el portapapeles listo para pegar con Ctrl+V en cualquier otro lado. En Windows 10 y 11 más recientes también puedes simplemente seleccionar el texto con el mouse y presionar Ctrl+C directamente.
Framework64
Autodesk Inventor es un programa de 64 bits. Nuestro compilador debe ser también de 64 bits para poder hablar con él. Por eso buscamos dentro de Framework64 y no en Framework a secas (que es la versión de 32 bits).
Conseguir el código fuente
Necesitas un archivo llamado HolaMundo.cs dentro de una carpeta nueva de experimento, por ejemplo C:\Users\TU_USUARIO\Documents\demoinv. Primero crea esa carpeta (clic derecho en el Explorador de archivos → Nuevo → Carpeta) y después elige uno de los dos caminos de abajo.
Opción A · Descargar el código ya escrito (recomendado)
Si no quieres copiar y pegar — o si temes equivocarte en una coma y que luego el compilador te arroje errores confusos — puedes bajar el archivo ya listo desde cualquiera de estos dos lugares. Los dos tienen el mismo contenido; usa el que te quede más cómodo.
1. Abre github.com/cesarbobadilla/AutodeskInventor- en tu navegador.
2. Arriba a la derecha, encima de la lista de archivos, haz clic en el botón verde <> Code.
3. En el menú que se despliega, elige Download ZIP. Se descarga un archivo comprimido en tu carpeta Descargas.
4. Descomprime el ZIP (clic derecho → Extraer todo) y copia el archivo HolaMundo.cs dentro de tu carpeta demoinv.
1. Abre el enlace: drive.google.com — HolaMundo.cs .
2. Arriba a la derecha haz clic en el ícono de Descargar...
3. Mueve el archivo descargado desde tu carpeta Descargas a tu carpeta demoinv.
Con cualquiera de las dos opciones, tu carpeta demoinv debe terminar conteniendo un archivo llamado HolaMundo.cs. Ya puedes saltar al Paso 3.
Con cualquiera de las dos opciones, tu carpeta demoinv debe terminar conteniendo un archivo llamado HolaMundo.cs. Ya puedes saltar al Paso 3.
Opción B · Escribirlo a mano
Si quieres entender el código antes de ejecutarlo — o no tienes conexión estable ahora mismo — también puedes abrir el Bloc de notas de Windows (en el menú Inicio escribe notepad) y copiar adentro exactamente este contenido:
using System; using System.Runtime.InteropServices; using Inventor; // Referencia a la API de Autodesk namespace Fase1 { class Program { [STAThread] // Obligatorio para comunicacion COM static void Main(string[] args) { Application _invApp = null; try { // CONEXION AL SERVIDOR COM // Intentamos capturar una instancia de Inventor ya abierta try { _invApp = (Application)Marshal.GetActiveObject("Inventor.Application"); } catch { Console.WriteLine("Inventor no esta abierto. Abriendo una nueva sesion..."); Type invAppType = Type.GetTypeFromProgID("Inventor.Application"); _invApp = (Application)Activator.CreateInstance(invAppType); _invApp.Visible = true; } // MANEJO DE UNIDADES: La API siempre usa cm. // Para hacer 50 mm, usaremos 5.0 // Crear un documento de pieza (.ipt) PartDocument oDoc = (PartDocument)_invApp.Documents.Add( DocumentTypeEnum.kPartDocumentObject, _invApp.FileManager.GetTemplateFile(DocumentTypeEnum.kPartDocumentObject) ); PartComponentDefinition oCompDef = oDoc.ComponentDefinition; TransientGeometry oTG = _invApp.TransientGeometry; // HITO: Dibujar en el plano XY (indice 3 en la coleccion de planos) PlanarSketch oSketch = oCompDef.Sketches.Add(oCompDef.WorkPlanes[3]); // Dibujar Linea (0,0 a 5,5 cm) oSketch.SketchLines.AddByTwoPoints( oTG.CreatePoint2d(0, 0), oTG.CreatePoint2d(5, 5) ); // Dibujar Circulo (centro 10,10 cm, radio 3 cm) oSketch.SketchCircles.AddByCenterRadius( oTG.CreatePoint2d(10, 10), 3 ); Console.WriteLine("Hito Fase 1 completado: Linea y Circulo creados."); } catch (Exception ex) { Console.WriteLine("Error critico: " + ex.Message); } } } }
En el diálogo Guardar como, antes de escribir el nombre, cambia el menú Tipo a Todos los archivos (*.*). Escribe el nombre HolaMundo.cs (con la extensión .cs incluida). Si lo guardas con la opción por defecto, Windows lo convierte en HolaMundo.cs.txt y el compilador no lo va a reconocer.
3. Cómo se lee ese código
No necesitas entender cada línea para correrlo, pero vale la pena pasar por los cinco bloques principales para que el experimento no se sienta mágico.
a. [STAThread]
Ese atributo arriba del método Main le dice a Windows que el programa va a hablar con un componente COM (que es el tipo de interfaz que expone Inventor). Sin ese atributo el programa falla con errores confusos. No necesitas entender más que eso: siempre que hables con Inventor, [STAThread] tiene que estar.
b. Conectarse a Inventor
El primer bloque dentro del try hace lo siguiente: intenta capturar una instancia de Inventor que ya esté abierta. Si no la encuentra, la abre él mismo y la hace visible. Este patrón es útil porque te permite correr el programa independientemente de si abriste Inventor antes o no.
c. Unidades: el gotcha más frecuente
La API de Inventor, por razones históricas, trabaja internamente en centímetros. Así que cuando en el código escribo el número 5, en pantalla el usuario va a ver 50 mm. Este es el detalle que más confunde al inicio y el que más vale la pena memorizar.
| En el código escribo | Inventor lo interpreta como (mm) | Equivalente en pulgadas |
|---|---|---|
| 1.0 | 10 mm | 0.394 in |
| 5.0 | 50 mm | 1.969 in |
| 10.0 | 100 mm | 3.937 in |
| 25.4 | 254 mm | 10.000 in |
d. Crear el documento y el sketch
Con _invApp.Documents.Add(...) pedimos un documento nuevo de tipo parte (extensión .ipt), usando la plantilla por defecto de Inventor. Luego accedemos a sus planos de trabajo (WorkPlanes): el índice 3 corresponde al plano XY, que es el que solemos usar para los sketches horizontales.
e. Dibujar la geometría
AddByTwoPoints crea una línea entre dos puntos, y AddByCenterRadius crea un círculo a partir de un punto central y un radio. Los puntos los fabricamos con el objeto auxiliar TransientGeometry. El resultado — en milímetros — es una línea de (0, 0) a (50, 50) y un círculo de radio 30 mm centrado en (100, 100).
Ubicar la DLL de Inventor en tu versión
Para que nuestro código pueda decir "crea un sketch" o "dibuja un círculo" Inventor pone a disposición un diccionario llamado Autodesk.Inventor.Interop.dll. Ese archivo vive dentro de la carpeta de instalación de Inventor, y la ruta cambia según la versión que tengas instalada. Aquí va una nota de honestidad: cuando empecé, asumí que era Inventor 2026 y escribí esa ruta a ojo. Mi máquina tenía Inventor 2020. El compilador devolvió un error confuso y tuve que ir a buscar.
Este comando te busca el archivo en todas las carpetas de Autodesk que tengas:
Copia la ruta completa que te devuelva el comando. Si tienes varias versiones de Inventor instaladas, te aparecerán varias rutas; usa la que corresponde a la versión que vas a abrir.
Compilar
Ahora tenemos los tres ingredientes: la ruta del compilador, la ruta del diccionario DLL, y el archivo HolaMundo.cs. Los combinamos en un comando que le dice a csc.exe: "toma este código, úsalo con este diccionario, y devuelve un ejecutable llamado Fase1.exe".
Movete a la carpeta donde guardaste HolaMundo.cs y ejecuta (en una sola línea, reemplazando la ruta de la DLL por la que obtuviste en el paso anterior):
Si el comando termina sin mostrar errores en rojo, significa que se creó el archivo Fase1.exe en la misma carpeta. Inventor todavía no hizo nada — eso pasa en el paso siguiente.
/r: significa reference: "usa este diccionario". /out: significa output: "el ejecutable resultante se llamará así". HolaMundo.cs al final es el archivo de entrada. Las comillas dobles son necesarias porque las rutas tienen espacios.
Ejecutar y verificar
Sin cerrar la terminal, ejecuta el archivo que se acaba de crear:
Abre la ventana de Inventor. Deberías ver un documento de pieza nuevo con un sketch activo, una línea diagonal y un círculo. Si lo ves, el experimento funcionó. Si no, salta a la sección siguiente.
4. Errores típicos
"No se puede cargar el archivo o ensamblado Autodesk.Inventor.Interop"
Este es el error que más se repite cuando un alumno sigue la guía por primera vez. Compila sin problemas, pero al ejecutar Fase1.exe la consola se llena de texto rojo que se ve así:
Qué está pasando en palabras simples. Al compilar, le dijiste al compilador "usa el diccionario que está en C:\Program Files\...\Autodesk.Inventor.Interop.dll" (eso es el /r:). El compilador lo usó para armar tu Fase1.exe, pero no copió el diccionario adentro. Ahora, cuando ejecutas Fase1.exe, Windows necesita encontrar ese diccionario otra vez para que el programa funcione. Lo primero que hace Windows es buscarlo en la misma carpeta donde está tu .exe. Si no lo encuentra ahí, se rinde y lanza este error.
La solución, en una frase: copiar el archivo Autodesk.Inventor.Interop.dll dentro de tu carpeta demoinv, al lado de Fase1.exe. Tienes dos caminos para hacerlo; elige el que te sea más cómodo.
Public Assemblies por dentro. El archivo correcto es el que dice Autodesk.Inventor.Interop.dll — ni .Library, ni .Services, ni .iLogic.Paso 1. Abre el Explorador de archivos. Hay varias formas: presiona Windows + E, o haz clic en el ícono de carpeta amarilla en la barra de tareas, o abre cualquier carpeta de tu PC.
Paso 2. En la barra de dirección de arriba (la que dice "Este equipo > Disco local (C:) > ..."), haz clic una vez sobre ella para que quede editable. Borra lo que haya y escribe o pega exactamente esto:
C:\Program Files\Autodesk\Inventor 2026\Bin\Public Assemblies
Presiona Enter. Debe abrirse una carpeta con muchos archivos .dll.
Paso 3 · ojo con la versión. Si aparece el mensaje "Windows no puede encontrar...", tu versión de Inventor no es 2026. Cambia el número 2026 por la versión que tienes instalada. En las máquinas de la universidad suele ser Inventor 2020. Por ejemplo:
C:\Program Files\Autodesk\Inventor 2020\Bin\Public Assemblies
Si no sabes qué versión tienes, vuelve al Paso 3 y usa el comando where /r; ese te dice la ruta exacta.
Paso 4 · ubicar el archivo. Dentro de la carpeta Public Assemblies, busca uno que se llame exactamente Autodesk.Inventor.Interop.dll. Hay muchos archivos parecidos; fijate bien en el nombre completo. Para encontrarlo más rápido, arriba a la derecha hay un buscador donde puedes escribir Interop.
Paso 5 · copiar. Haz clic una sola vez sobre Autodesk.Inventor.Interop.dll (el archivo debe quedar seleccionado, con un fondo azul). Ahora presiona Ctrl + C. Eso es "copiar" en Windows — no va a pasar nada visible todavía, pero el archivo ya está en el portapapeles.
Paso 6 · abrir tu carpeta demoinv. En la misma barra de dirección de arriba, escribe la ruta de tu carpeta del experimento. Por ejemplo:
C:\Users\TU_USUARIO\Documents\demoinv
(Reemplaza TU_USUARIO por tu nombre de usuario de Windows.) Presiona Enter. Ahora ves los archivos que ya tenías: HolaMundo.cs, Fase1.exe, etc.
Paso 7 · pegar. Estando dentro de demoinv, presiona Ctrl + V. Eso es "pegar". Debe aparecer un archivo nuevo llamado Autodesk.Inventor.Interop.dll al lado de Fase1.exe.
Paso 8 · volver a ejecutar. Regresa al CMD que tenías abierto (en la barra de tareas debe estar todavía), y ejecuta otra vez:
Fase1.exe
El error debe desaparecer y Inventor debe empezar a dibujar.
demoinv después de pegar. El archivo resaltado es el que acabas de traer de Public Assemblies. Ahora sí, Fase1.exe va a encontrar su diccionario.Si ya dominas el CMD y prefieres no abrir el Explorador, puedes copiar la DLL con una sola línea. Estando parado en tu carpeta demoinv dentro del CMD, ejecuta:
El punto (.) al final significa "cópiala en la carpeta actual donde estoy ahora". Recuerda ajustar Inventor 2026 a tu versión real. Si ves el mensaje "1 archivo(s) copiado(s)", quedó bien. Las comillas dobles son obligatorias porque la ruta tiene espacios.
Cómo verificas que quedó bien. Abre la carpeta demoinv con el Explorador: ahora deben existir al menos tres archivos al mismo nivel: HolaMundo.cs, Fase1.exe y Autodesk.Inventor.Interop.dll. Si los tres están ahí, ejecuta nuevamente Fase1.exe desde el CMD y Inventor debería crear el sketch con la línea y el círculo.
El /r: del compilador es una referencia "solo para compilar". Cuando el compilador arma tu .exe, toma la información del diccionario que necesita y la anota internamente, pero no lo copia. Luego, en tiempo de ejecución, Windows busca ese diccionario en un orden específico: primero en la carpeta donde está el .exe, después en el GAC (un repositorio global de librerías), después en el PATH del sistema. Como no lo encuentra en ninguno de esos lugares, falla. Poner la DLL al lado del .exe es la forma más simple y transparente de resolverlo. Hay formas más elegantes — registrar la DLL en el GAC, o usar Visual Studio con "copy local" — pero para este experimento la de al lado es la más didáctica.
"csc.exe no se reconoce como un comando"
Estás escribiendo la ruta del compilador sin comillas o sin la ruta completa. Recuerda: el comando comienza con las comillas dobles abarcando la ruta hasta csc.exe.
"Metadata file '...' could not be found"
La ruta de la DLL que pusiste en /r: no existe. Casi siempre es porque la versión de Inventor que asumiste no es la que tienes instalada. Usa el comando where /r del paso 3 para verificar.
"Retrieving the COM class factory failed"
No hay Inventor instalado en el sistema, o está instalado en una ruta no registrada. Verifica desde el menú Inicio de Windows que Inventor se abra manualmente. Si se abre, el problema es otro; si no, reinstala Inventor.
Inventor se abrió pero no veo ninguna ventana
Faltó la línea _invApp.Visible = true; o fue eliminada por error. En ese caso Inventor está corriendo en segundo plano sin mostrar su interfaz.
El ejecutable termina sin errores pero Inventor no muestra nada
Es posible que Inventor esté creando la pieza en una sesión distinta. Cierra todas las instancias de Inventor, vuelve a correr Fase1.exe desde cero, y observa.
5. ¿Puedo pedirle este código a una IA?
Sí. De hecho, el código que usé en el video lo generé conversando con Claude de Anthropic y ajustando lo que me dio. Para un primer experimento como este, pedirle a un asistente de IA que te genere el esqueleto y luego leerlo con calma es perfectamente válido; lo importante es que entiendas cada bloque antes de correrlo. Si corres un código que no entiendes, vas a perder más tiempo depurando que el que ahorraste genera´ndolo.
Ese siguiente paso ya está publicado como Fase 2: Inventor con IA. En vez de escribir todo el C# a mano, describes el mecanismo en lenguaje natural, la IA genera el código, lo compilas con csc.exe y lo ves construir un ensamble en Inventor. Todavía hay detalles que revisar, pero el camino ya se puede probar.
6. Qué se logró y hacia dónde va esto
Hoy tenemos un programa pequeño que controla Autodesk Inventor desde la terminal. Produce un sketch con dos formas y punto. Es chico. Y al mismo tiempo es el primer eslabón de una cadena que en las siguientes fases permite hacer varias cosas que sí impactan un flujo real de trabajo.
- Parametrizar. En vez de tener los números quemados dentro del código, pasarlos como argumentos para generar la misma pieza con medidas distintas. Generar una familia de cien placas con cien espesores desde un solo archivo Excel.
- Pasar a IA y ensambles. La Fase 2 ya muestra el siguiente salto: prompt → IA → C# → compilación → Inventor, con piezas y ensambles más complejos.
- Ensamblar y animar. Ya no una pieza suelta sino un ensamble con restricciones, y eventualmente una animación de movimiento. Inventor soporta todo eso por la misma API.
- Conectar con IA. Un asistente recibe un requerimiento escrito y genera el código correspondiente, que se compila y ejecuta sin intervención humana directa.
La continuación directa es la Fase 2, acompañada por su video en YouTube. Pero ninguna de esas fases funciona bien si primero no dominas el paso de hoy: que un comando en terminal cree geometría en una herramienta de CAD profesional. Ese es el eslabón uno.
En un flujo típico de diseño, ¿cuántas tareas que hoy haces con clic son en realidad variaciones pequeñas de una misma receta? Si pudieras escribir esa receta una sola vez y ejecutarla cien veces con parámetros distintos, ¿en qué invertirías el tiempo que ahorras?
Registrate al boletin MathPlay
De la idea a la maquina que funciona: diseno, prototipado, programacion, hardware e IA aplicada a problemas reales. Te escribo cuando hay algo nuevo que vale la pena compartir.
Sin calendario fijo. Sin spam.
¡Listo! Te escribo cuando haya algo nuevo del proyecto.












