| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: iproperties -> Kategorie anzeigen (1555 / mal gelesen)
|
Thomas Thomas Mitglied
Beiträge: 49 Registriert: 27.02.2020
|
erstellt am: 16. Jul. 2020 21:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte mit gern den Inhalt in der Zeile Kategorie anzeigen lassen (in iproperties -> Reiter Übersicht) Msgbox (ThisApplication.ActiveDocument.PropertySets.Item(2).Parent.Item(3).Item(36).Expression) funktioniert nicht, könnt ihr mir weiterhelfen? Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bkrüger Mitglied Konstrukteur
Beiträge: 51 Registriert: 14.09.2014 Win10 IV2018 Vault2018-WG
|
erstellt am: 17. Jul. 2020 01:56 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Thomas
Hallo, Iprop Kategorie anzeigen lassen: Code:
MsgBox ThisApplication.ActiveDocument.PropertySets("Inventor Document Summary Information").Item("Category").value
Hinweis: Besser mit Namen als mit Index arbeiten - auf Namen ist eher Verlass über die Inventorversionen hinweg. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 17. Jul. 2020 21:41 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Thomas
Hallo Oberlehrermodus an: Autodesk empfiehlt sogar den InternalName zu verwenden. Selbst der Name ist nicht in Stein gemeisselt. DisplayName: Inventor - Zusammenfassungsinformationen Name: Inventor Summary Information InternalName: {F29F85E0-4FF9-1068-AB91-08002B27B3D9} DisplayName: Inventor - Zus.-fassungsinfo f. Dokument Name: Inventor Document Summary Information InternalName: {D5CDD502-2E9C-101B-9397-08002B2CF9AE} DisplayName: Design Tracking - Eigenschaften Name: Design Tracking Properties InternalName: {32853F0F-3444-11D1-9E93-0060B03C1CA6} DisplayName: Inventor - Benutzerdefinierte Eigenschaften Name: Inventor User Defined Properties InternalName: {D5CDD505-2E9C-101B-9397-08002B2CF9AE}
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Thomas Mitglied
Beiträge: 49 Registriert: 27.02.2020
|
erstellt am: 18. Jul. 2020 22:38 <-- editieren / zitieren --> Unities abgeben:
|
Thomas Thomas Mitglied
Beiträge: 49 Registriert: 27.02.2020
|
erstellt am: 15. Feb. 2021 21:19 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte mit dem folgenden Code nur bei virtuelle Komponente unter Kategorie ein "K" schreiben. Bekomme aber einen Fehler da Occurrence.DefinitionReference.ReferencedDefinition.Type nicht immer vorhanden ist. Wie kann ich den Fehler abfangen? Code: Public Sub Kategorie_Test() Dim oAsmDoc As AssemblyDocument Set oAsmDoc = ThisApplication.ActiveDocument 'Anstatt nun direkt durch die Occurrences zu gehen 'übergeben wir die Occurrences (alle Komponenten) an eine andere SubCall TraverseAssembly(oAsmDoc.ComponentDefinition.Occurrences) ' Virtuelle Bauteile auf K setzen End Sub Private Sub TraverseAssembly(Occurrences As ComponentOccurrences) Dim Occurrence As ComponentOccurrence 'Stop For Each Occurrence In Occurrences Debug.Print Occurrence.Name 'Ist die Occurrence eine Baugruppe, ruft wir diese Sub ebenfalls auf 'Die SUB ruft also sich selbst auf und ggf. wieder und wieder 'bis sie durch die IAM Unterstruktur durch ist auf der untersten Eben 'und geht dann weiter in der nächste Ebene If Occurrence.DefinitionReference.ReferencedDefinition.Type = kVirtualComponentDefinitionObject Then Occurrence.Definition.PropertySets("Inventor Document Summary Information").Item("Category").Value = "K" End If If Occurrence.DefinitionDocumentType = kAssemblyDocumentObject Then Call TraverseAssembly(Occurrence.SubOccurrences) End If Next End Sub
Vielen Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bwr Mitglied Konstrukteur
Beiträge: 139 Registriert: 21.02.2007 Win10 64-bit NVIDIA T500 Inventor 2022 Catia V5-6R2020
|
erstellt am: 16. Feb. 2021 07:34 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Thomas
Hallo, probier's mal mit folgender Abfrage ob es sich um eine virtuelle Komponente handelt: Code:
If TypeOf Occurrence.Definition Is VirtualComponentDefinition Then Occurrence.Definition.PropertySets("Inventor Document Summary Information").Item("Category").Value = "K" End If
------------------ Grüße Andreas etaCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bkrüger Mitglied Konstrukteur
Beiträge: 51 Registriert: 14.09.2014 Win10 IV2018 Vault2018-WG
|
erstellt am: 16. Feb. 2021 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Thomas
Hallo, wenn eine Objektvariable nicht existiert, dann ist das Ergebnis von 'is nothing' = true, also: Code:
If Occurrence.DefinitionReference.ReferencedDefinition.Type is nothing then 'Objektvariable existiert nicht else 'Objektvariable existiert endif
Das vermeidet, dass irgendwelche Fehler geworfen werden, weil die Variable in dem Kontext nicht existiert. Ansonsten kann man Fehler abfangen, bzw darauf reagieren, indem man Code:
on error resume next
o.ä. verwendet - das ist aber mit Vorsicht zu geniessen - schließlich unterdrückt der Befehl jegliche (auch andere, die ganz andere Ursachen haben können) Fehlerausgaben - das kann auch fix mal zu einer Einladung zu einer unerquicklichen und langen Fehlersuche werden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Thomas Mitglied
Beiträge: 49 Registriert: 27.02.2020
|
erstellt am: 23. Feb. 2021 15:44 <-- editieren / zitieren --> Unities abgeben:
Hallo bwr und bkrüger, vielen Dank für eure Antworten, ich habe beide Varianten probiert, es funktioniert aber leider beides nicht. @bwr: Fehlermeldung: Method 'Definition' of object 'ComponentOccurrence' faild. @bkrüger: Fehlermeldung: Compile error: Type mismatch Hattet ihr es probiert und hat es bei euch funktioniert? Vielen Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 23. Feb. 2021 16:28 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Thomas
Hallo Ich vermute es liegt daran, dass die Fehler auslösende Occurrence unterdrückt ist. Code:
Public Sub Kategorie_Test() Dim oAsmDoc As AssemblyDocument Set oAsmDoc = ThisApplication.ActiveDocument 'Anstatt nun direkt durch die Occurrences zu gehen 'übergeben wir die Occurrences (alle Komponenten) an eine andere SubCall TraverseAssembly(oAsmDoc.ComponentDefinition.Occurrences) ' Virtuelle Bauteile auf K setzen End Sub Private Sub TraverseAssembly(Occurrences As ComponentOccurrences) Dim Occurrence As ComponentOccurrence 'Stop For Each Occurrence In Occurrences Debug.Print Occurrence.Name 'Ist die Occurrence eine Baugruppe, ruft wir diese Sub ebenfalls auf 'Die SUB ruft also sich selbst auf und ggf. wieder und wieder 'bis sie durch die IAM Unterstruktur durch ist auf der untersten Eben 'und geht dann weiter in der nächste Ebene If Occurrence.Suppressed = False Then If Occurrence.Definition.Type = kVirtualComponentDefinitionObject Then Occurrence.Definition.PropertySets("Inventor Document Summary Information").Item("Category").Value = "K" End If If Occurrence.DefinitionDocumentType = kAssemblyDocumentObject Then Call TraverseAssembly(Occurrence.SubOccurrences) End If End If Next End Sub
------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Thomas Mitglied
Beiträge: 49 Registriert: 27.02.2020
|
erstellt am: 02. Mrz. 2021 19:55 <-- editieren / zitieren --> Unities abgeben:
|