Back to blog
iProperties lezen en schrijven met C# in Inventor
Intermediate

iProperties lezen en schrijven met C# in Inventor

David De Lombaerde David De Lombaerde · juli 10, 2026 · 15 min read

iProperties zijn de metadata van Inventor-bestanden: projectnummer, ontwerper, revisie, materiaal, massa. Ze verschijnen in de titelbord, in de stuklijst en in Vault. Via C# kun je iProperties lezen, aanpassen en zelfs eigen property sets aanmaken. Dit artikel toont alle technieken voor een volledige metadata-automatisering.

Structuur van iProperties

iProperties zijn georganiseerd in Property Sets. De ingebouwde sets zijn: Inventor Summary Information, Inventor Document Summary Information, Design Tracking Properties en Custom. Elke set heeft een unieke GUID en een verzameling Property-objecten met naam, waarde en type.

iProperty lezen

using Inventor;

public string LeesProperty(Document doc, string setNaam, string propNaam)
{
    foreach (PropertySet ps in doc.PropertySets)
    {
        if (ps.DisplayName == setNaam || ps.Name == setNaam)
        {
            foreach (Property prop in ps)
            {
                if (prop.DisplayName == propNaam || prop.Name == propNaam)
                    return prop.Value?.ToString() ?? "";
            }
        }
    }
    return "";
}

// Gebruik:
string ontwerper = LeesProperty(doc, "Inventor Summary Information", "Author");
string revisie   = LeesProperty(doc, "Design Tracking Properties",   "Revision Number");
string massa     = LeesProperty(doc, "Design Tracking Properties",   "Mass");

iProperty schrijven

public void StelPropertyIn(Document doc, string setNaam, string propNaam, object waarde)
{
    foreach (PropertySet ps in doc.PropertySets)
    {
        if (ps.DisplayName == setNaam || ps.Name == setNaam)
        {
            foreach (Property prop in ps)
            {
                if (prop.DisplayName == propNaam || prop.Name == propNaam)
                {
                    prop.Value = waarde;
                    doc.Save2(false); // sla op zonder dialoog
                    return;
                }
            }
        }
    }
    throw new Exception($"Property '{propNaam}' in set '{setNaam}' niet gevonden.");
}

// Gebruik:
StelPropertyIn(doc, "Inventor Summary Information", "Author",   "David D.");
StelPropertyIn(doc, "Design Tracking Properties",  "Revision Number", "B");
StelPropertyIn(doc, "Design Tracking Properties",  "Description", "Steunbeugel aluminium");

Snellere toegang via bekende property-ID's

De meest gebruikte iProperties hebben bekende ID's. Dit is sneller dan zoeken op naam:

// Design Tracking Properties GUID
var dtpGuid = "{32853F0F-3444-11d1-9E93-0060B03C1CA6}";

// Revision Number heeft PropertyID 8
var dtpSet  = doc.PropertySets[dtpGuid];
var revisie = dtpSet[8];  // PropertyID
revisie.Value = "C";

doc.Save2(false);

Alle properties uitlezen als woordenboek

public Dictionary> LeesAlleProperties(Document doc)
{
    var resultaat = new Dictionary>();

    foreach (PropertySet ps in doc.PropertySets)
    {
        var setDict = new Dictionary();
        foreach (Property prop in ps)
        {
            try { setDict[prop.DisplayName] = prop.Value; }
            catch { /* sommige properties geven een fout als ze leeg zijn */ }
        }
        resultaat[ps.DisplayName] = setDict;
    }
    return resultaat;
}

Eigen Property Set aanmaken

Naast de ingebouwde sets kun je eigen sets aanmaken voor projectspecifieke metadata:

public PropertySet MaakEigenPropertySet(Document doc, string setNaam)
{
    // Controleer of de set al bestaat
    foreach (PropertySet ps in doc.PropertySets)
        if (ps.DisplayName == setNaam) return ps;

    // Nieuwe set aanmaken
    var nieuwSet = doc.PropertySets.Add(setNaam);
    nieuwSet.Add("ProjectNummer", "PROJ-001");
    nieuwSet.Add("Klant",         "ACME Corp.");
    nieuwSet.Add("Goedgekeurd",   false);

    doc.Save2(false);
    return nieuwSet;
}

Batchverwerking van meerdere bestanden

Het meest krachtige gebruik van iProperty-automatisering is het bijwerken van honderden bestanden in één keer:

public void BatchUpdateProperties(string map, string revisie, string ontwerper)
{
    var app = (Application)Marshal.GetActiveObject("Inventor.Application");

    foreach (var bestand in Directory.GetFiles(map, "*.ipt", SearchOption.AllDirectories))
    {
        Document doc = null;
        try
        {
            doc = app.Documents.Open(bestand, false); // false = niet zichtbaar

            StelPropertyIn(doc, "Inventor Summary Information",
                "Author", ontwerper);
            StelPropertyIn(doc, "Design Tracking Properties",
                "Revision Number", revisie);

            doc.Save2(false);
            Console.WriteLine($"✓ {Path.GetFileName(bestand)}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"✗ {Path.GetFileName(bestand)}: {ex.Message}");
        }
        finally
        {
            doc?.Close(true);
        }
    }
}

iProperties exporteren naar CSV

public void ExporteerNaarCsv(string map, string uitvoerCsv)
{
    var app   = (Application)Marshal.GetActiveObject("Inventor.Application");
    var regels = new List { "Bestand,Ontwerper,Revisie,Beschrijving,Massa" };

    foreach (var bestand in Directory.GetFiles(map, "*.ipt"))
    {
        var doc = app.Documents.Open(bestand, false);
        try
        {
            var ont  = LeesProperty(doc, "Inventor Summary Information", "Author");
            var rev  = LeesProperty(doc, "Design Tracking Properties",   "Revision Number");
            var desc = LeesProperty(doc, "Design Tracking Properties",   "Description");
            var mass = LeesProperty(doc, "Design Tracking Properties",   "Mass");
            regels.Add($"{Path.GetFileName(bestand)},{ont},{rev},{desc},{mass}");
        }
        finally { doc.Close(true); }
    }

    File.WriteAllLines(uitvoerCsv, regels, System.Text.Encoding.UTF8);
    Console.WriteLine($"CSV opgeslagen: {uitvoerCsv}");
}

iProperties in een drawing gebruiken

In Inventor-tekeningen kun je iProperties refereren via velden in het titelbord. Je kunt via code ook de iProperties van het brondocument (het onderdeel) lezen via de drawingdocument:

var drawingDoc = (DrawingDocument)doc;
// De sheets bevatten view-referenties naar part-documenten
foreach (Sheet sheet in drawingDoc.Sheets)
{
    foreach (DrawingView view in sheet.DrawingViews)
    {
        var referencedDoc = view.ReferencedDocumentDescriptor.ReferencedDocument;
        string partNaam = LeesProperty(referencedDoc, "Design Tracking Properties", "Part Number");
        Console.WriteLine($"Sheet '{sheet.Name}' toont onderdeel: {partNaam}");
    }
}

Veelgemaakte fouten

Property.Value geeft null — sommige properties zijn niet ingevuld. Gebruik altijd prop.Value?.ToString() ?? "".

Save2 vs Save — gebruik doc.Save2(false) om op te slaan zonder een dialoogvenster. doc.Save() kan een dialoog tonen voor nieuwe bestanden.

Set-naam vs DisplayName — de interne naam (ps.Name) en de weergavenaam (ps.DisplayName) kunnen verschillen. Zoek op beide om zeker te zijn.

Massa is alleen-lezenMass is een berekende property en kan niet direct worden ingesteld. Ze wordt automatisch bijgewerkt bij doc.Update().

Samenvatting

iProperties zijn de metadata-laag van Inventor-bestanden en de sleutel tot correcte stuklijsten, titelborden en Vault-integratie. Met C# kun je properties lezen, schrijven, exporteren naar CSV en in bulk bijwerken voor honderden bestanden — zonder dat een gebruiker ook maar één bestand hoeft te openen.

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.