Die Inventor FAQ wird unterstützt von:

Inventor FAQ Logo

20.03.2017

Inventor automatisieren: Programmieren für Konstrukteure (Teil 11)

Teil 10 verpasst? Dann hier weiter!

Alle Beiträge der Serie

Letzte Woche haben wir unseren Programmierwerkzeugkasten um ein kleines Programm erweitert, das Informationen zum aktuellen Dokument bzw. dem in Inventor gewählten Element anzeigt. Dazu kamen noch zwei kleinere Programme, mit denen wir Bemaßungen manipuliert haben.

Wie immer zuerst: VBA-Editor öffnen und unser Benutzer-VBA-Projekt laden.

Zuerst schauen wir uns mal die iProperties in einer Datei an. Dazu öffnen wir eine Inventordatei, wählen nichts aus und rufen unser Objektuntersuchungsprogramm auf.

image

Wir sehen, das jede Inventordatei einen Eintrag PropertySets hat, der wiederum 4 Item enthält, die für die verschiedenen Register im iPropertydialog stehen. Item 4 sind z.B. die benutzerdefinierten iProperties.

image

Darin enthalten sind wiederum Items, wobei jeden Item für eine (Benutzer-) iProperty steht. Im meinem Screenshot oben finden wir z.B. das Benutzer-iProperty Druckbenutzer.

Die Struktur sieht also so aus:

PropertySets (Summe aller iProperties)

- Propertyset (Gruppe von Properties, z.B. alle Benutzer-iProperties)

         - Property (das einzelne Property, wie z.B. Bauteilnummer oder eben das Benutzer-iProp. Durckname)

Hier unser erstes Programm:

Public Sub iPropLesen1()

'Wie immer Dokumentobjekt definieren
Dim doc As Document
Set doc = ThisApplication.ActiveDocument

'Jetzt kommt der Verweis auf den Satz iProperties mit dem Name: Inventor User Defined Properties
'Siehe dazu Screenshot oben im Text. Den Name haben wir bei unsere Untersuchung rausgefunden!
Dim PropSet As PropertySet
Set PropSet = doc.PropertySets.Item("Inventor User Defined Properties")

'Objektdefinition für ein einzelnes iProperty. Verwendet wird das Objekt unten in der
'For Each Schleife
Dim prop As Property

'Durch alle Properies im PropertySet "Inventor User Defined Properties" gehen
'und mittels Debug.Print Propertyname und Wert in einem Direktfenster ausgeben
For Each prop In PropSet
    Debug.Print prop.Name & ":" & prop.Value
Next

End Sub

Was im Code passiert, habe ich in den Kommentaren beschrieben. Wird das Programm gestartet, werden alle Benutzer-iProperties im Direktfenster ausgegeben.

image

Jetzt ergänzen wir das Programm um einen weitere Schleife, in der wir durch alle Propertysets gehen.

Public Sub iPropLesen1()

'Wie immer Dokumentobjekt definieren
Dim doc As Document
Set doc = ThisApplication.ActiveDocument

'Jetzt kommt der Verweis auf den Satz iProperties mit dem Name: Inventor User Defined Properties
'Siehe dazu Screenshot oben im Text. Den Name haben wir bei unsere Untersuchung rausgefunden!
Dim PropSet As PropertySet

'Die Zeile kann weg, wir wollen ja durch alle Propertysets gehen
'Set PropSet = doc.PropertySets.Item("Inventor User Defined Properties")

'Objektdefinition für ein einzelnes iProperty. Verwendet wird das Objekt unten in der
'For Each Schleife
Dim prop As Property

'Durch alle ProperySets im Doc-oBjekt gehen
For Each PropSet In doc.PropertySets
'Durch alle Properies im PropertySet "Inventor User Defined Properties" gehen
'und mittels Debug.Print Propertyname und Wert in einem Direktfenster ausgeben
    For Each prop In PropSet
        Debug.Print prop.Name & ":" & prop.Value
    Next
Next
End Sub

Der Code ist um eine weitere For Each Schleife ergänzt worden, bei dem durch alle ProperySets gegangen wird. Im Ausgabenfenster finden sich nun alle iProperties in der Datei. Übrigens auch welche, die im iPropertydialog gar nicht angezeigt werden! (Ihr feste diesen Beitrag jetzt sicher besser, bzw. wisst nun, wo die Namen herkommen)

image

Was wir noch sehen, ist das Name des iProperties auf englisch dargestellt wird. Das entspricht eben prop.Name. Wir ändern das nun auf prop.DisplayName, was dazu führt, dass der Anzeigename der iProperties benutzt wird, was in dem meisten Fällen zu deutschen anstelle englischer Namen führt.

image

Das ist mal das erste Rüstzeug, um was mit iProperties zu machen.

Bis zum nächsten mal!

Weiter zu Teil 12!

1 Kommentar:

War der Beitrag hilfreich oder hast du eine Ergänzung dazu?
Ist noch eine Frage offen?
Ich freue mich auf deine Rückmeldung!

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.

Related Posts Plugin for WordPress, Blogger...
Inventor FAQ Newsletter. Emailadresse: