Back to blog
C# voor Inventor: Aan de slag met de Inventor API
Intermediate

C# voor Inventor: Aan de slag met de Inventor API

David De Lombaerde David De Lombaerde · juli 1, 2026 · 8 min read

Waarom Inventor automatiseren met C#?

Autodesk Inventor stelt vrijwel zijn volledige functieset beschikbaar via een COM-gebaseerde API. Vanuit C# kun je onderdelen, samenstellingen en tekeningen programmatisch aanmaken, parameters aansturen, bestanden exporteren en batchbewerkingen uitvoeren op honderden modellen — alles wat je handmatig kunt doen, kun je scrippen.

Dit bericht richt zich op de snelste weg naar een werkende automatisering: verbinding maken met een actieve Inventor-instantie vanuit een zelfstandige C# console-applicatie. Zodra je het verbindingspatroon begrijpt, volgt de rest — onderdelen, schetsen, parameters — vanzelf.

Vereisten

Twee manieren om Inventor te automatiseren

Voor het schrijven van code helpt het om je opties te kennen:

We beginnen met een externe applicatie. De API-aanroepen zijn identiek bij beide methoden.

Stap 1 — Project aanmaken

Maak in Visual Studio een nieuw Console App (.NET Framework)-project aan met als doel .NET Framework 4.8. Noem het InventorAutomatisering.

Stap 2 — Inventor API-referentie toevoegen

Klik met de rechtermuisknop op ReferencesAdd Reference → tabblad COM. Zoek naar Autodesk Inventor Object Library en vink het aan.

Staat het niet in de COM-lijst, blader dan direct naar:

C:\Program Files\Autodesk\Inventor 2024\Bin\Autodesk.Inventor.Interop.dll

Stel Embed Interop Types = False in de referentie-eigenschappen in. Als je dit op True laat staan, krijg je runtime-fouten met Inventor's COM-objecten.

Stap 3 — Verbinding maken en een bestand openen

using System;
using System.Runtime.InteropServices;
using Inventor;  // Autodesk Inventor COM-namespace

namespace InventorAutomatisering
{
    class Program
    {
        static void Main(string[] args)
        {
            Inventor.Application inventorApp = null;

            try
            {
                // Probeer verbinding te maken met een al actieve Inventor-instantie.
                // Als Inventor niet open is, gooit dit een COMException.
                inventorApp = (Inventor.Application)
                    Marshal.GetActiveObject("Inventor.Application");

                Console.WriteLine($"Verbonden met Inventor {inventorApp.SoftwareVersion.DisplayVersion}");
            }
            catch (COMException)
            {
                // Inventor is niet actief — start een nieuwe instantie
                Console.WriteLine("Inventor niet actief. Nieuwe instantie starten...");

                Type inventorType = Type.GetTypeFromProgID("Inventor.Application");
                inventorApp = (Inventor.Application)Activator.CreateInstance(inventorType);
                inventorApp.Visible = true; // venster zichtbaar maken
            }

            // Een bestaand onderdeelbestand openen
            string filePath = @"C:\Modellen\MijnOnderdeel.ipt";
            PartDocument partDoc = (PartDocument)inventorApp.Documents.Open(
                filePath,
                openVisible: true);

            Console.WriteLine($"Geopend: {partDoc.DisplayName}");

            // Een gebruikersparameter uitlezen
            UserParameter lengthParam = partDoc.ComponentDefinition
                .Parameters.UserParameters["Lengte"];

            Console.WriteLine($"Lengte = {lengthParam.Value} mm");

            // Parameterwaarde wijzigen en het model herbouwen
            lengthParam.Value = 150;
            partDoc.Update();

            Console.WriteLine("Parameter bijgewerkt en model herbouwd.");
        }
    }
}

Voer dit uit met een open Inventor-onderdeel dat een gebruikersparameter Lengte heeft en je ziet hem live bijwerken.

Stap 4 — Een nieuw onderdeel vanaf nul aanmaken

Bestaande bestanden openen is nuttig, maar de echte kracht zit in het programmatisch aanmaken van geometrie. Zo maak je een nieuw onderdeel met een geëxtrudeerde rechthoek:

static void MaakGeextrudeerdOnderdeel(Inventor.Application app)
{
    // Nieuw onderdeeldocument aanmaken met het metrisch sjabloon
    string template = app.FileManager.GetTemplateFile(
        DocumentTypeEnum.kPartDocumentObject,
        SystemOfMeasureEnum.kMetricSystemOfMeasure);

    PartDocument doc = (PartDocument)app.Documents.Add(
        DocumentTypeEnum.kPartDocumentObject,
        template,
        createVisible: true);

    PartComponentDefinition compDef = doc.ComponentDefinition;

    // Schets aanmaken op het XY-vlak
    PlanarSketch sketch = compDef.Sketches.Add(
        compDef.WorkPlanes[3]); // WorkPlanes[3] = XY-vlak

    TransientGeometry tg = app.TransientGeometry;

    // Rechthoek van 100x60 mm gecentreerd op het oorsprongspunt
    SketchRectangle rect = sketch.SketchLines.AddAsTwoPointRectangle(
        tg.CreatePoint2d(-50, -30),
        tg.CreatePoint2d( 50,  30));

    // Schetsprofilel extruderen over 40 mm
    Profile profile = sketch.Profiles.AddForSolid();
    ExtrudeFeature extrude = compDef.Features.ExtrudeFeatures.AddByDistanceExtent(
        profile,
        40,
        PartFeatureExtentDirectionEnum.kPositiveExtentDirection,
        PartFeatureOperationEnum.kNewBodyOperation);

    Console.WriteLine($"Extrusie aangemaakt: {extrude.Name}");

    // Bestand opslaan
    doc.SaveAs(@"C:\Modellen\GegenereerdeOnderdeel.ipt", saveMetadata: false);
    Console.WriteLine("Opgeslagen.");
}

Kernconcepten

Het Application-object is het startpunt voor alles. Hiervanuit bereik je Documents, FileManager, UserInterfaceManager en alle andere objecten op het hoogste niveau.

Componentdefinities bevatten de eigenlijke geometrie. Een PartDocument heeft een PartComponentDefinition; een AssemblyDocument heeft een AssemblyComponentDefinition. Features, parameters, schetsen en werkvlakken leven op de componentdefinitie.

TransientGeometry is een fabriek voor tijdelijke geometrie-objecten zoals punten en vectoren die als argumenten in API-aanroepen worden gebruikt. Objecten die via TransientGeometry worden aangemaakt, worden niet aan het model toegevoegd.

Parameters komen in twee soorten: ModelParameters (automatisch aangemaakt door features) en UserParameters (handmatig of via code). Stuur je automatisering altijd aan via gebruikersparameters in plaats van vaste afmetingen, zodat het model bewerkbaar blijft.

Debugtips

Wat volgt

Met het verbindingspatroon werkend behandelen de volgende lessen:

De volledige C# voor Inventor-cursus is beschikbaar voor Standard- en Full Access-abonnees in de E-Learning-sectie.

Share this article

LinkedIn WhatsApp X

Comments

No comments yet — be the first!

Leave a comment

Sign in to skip moderation — anonymous comments are reviewed before appearing.