| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: iLogic | benutzerdefiniertes iProperty von mehreren Bauteilen aus Baugruppe öffnen (1318 / mal gelesen)
|
Chris0804 Mitglied Maschinenbauingenieur

 Beiträge: 22 Registriert: 16.08.2021 Inventor 2019 Inventor 2020
|
erstellt am: 17. Nov. 2021 11:10 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich möchte folgendes Problem lösen: Aus einer Baugruppe möchte ich auf ein iProperty aller Bauteile der Baugruppe zugreifen. In dem iProperty steht ein numerischer Wert, den ich in der Baugruppe aufsummieren und in das iProperty der Baugruppe schreiben möchte. Da ich im Inventor direkt in der Baugruppe auf die einzelnen iProperties der Bauteile zugreifen kann, müsste das doch auch über eine iLogic-Regeln funktionieren, aber leider habe ich bei meiner Recherche nichts dazu gefunden. Folgenden Code habe ich probiert:
Code: Dim oAsm As Inventor.AssemblyDocument = ThisApplication.ActiveDocument Dim oPrt As Inventor.PartDocument Dim iCount As Integer Dim y As DoubleiCount = 1 Dim propertyName As String = "numerischer Wert" Dim propertyValue As Double customPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties") Try prop = customPropertySet.Item(propertyName) Catch customPropertySet.Add(propertyValue, propertyName) End Try For Each oPrt In oAsm.AllReferencedDocuments If oAsm.AllReferencedDocuments.Item(iCount).DocumentType = kPartDocumentObject Then 'MsgBox (oPrt.FullDocumentName) y = oAsm.AllReferencedDocuments.Item(iCount).customPropertySet.Item("numerischer Wert").Value propertyValue = propertyValue + y End If iCount = iCount + 1 Next
Danke im Voraus! ------------------ Gruß Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 17. Nov. 2021 13:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Chris0804
Hallo Berücksichtigt aber nicht wenn ein Bauteil mehrfach vorkommt. Code:
Dim oAsm As Inventor.AssemblyDocument = ThisApplication.ActiveDocument Dim oPrt As Inventor.PartDocument Dim customPropertySet As PropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties") Dim propertyName As String = "numerischer Wert" Dim propertyValue As DoubleFor Each oPrt In oAsm.AllReferencedDocuments If oPrt.DocumentType = kPartDocumentObject Then Try propertyValue = propertyValue + oPrt.PropertySets("Inventor User Defined Properties").Item(propertyName).Value Catch End Try End If Next Try customPropertySet.Item(propertyName).Value=propertyValue Catch customPropertySet.Add(propertyValue, propertyName) End Try
------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris0804 Mitglied Maschinenbauingenieur

 Beiträge: 22 Registriert: 16.08.2021 Inventor 2019 Inventor 2020
|
erstellt am: 17. Nov. 2021 14:02 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ralf, stimmt, das hatte ich nicht bedacht. Dein Code funktioniert, vielen Dank. Und dank der For Each-Schleife auch für mehrfach vorkommende Bauteile, oder verstehe ich das falsch? ------------------ Gruß Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 17. Nov. 2021 14:45 <-- editieren / zitieren --> Unities abgeben:          Nur für Chris0804
Hallo Nö, genau anders herum. Kommt ein Bauteil mehrfach vor, wird es trotzdem nur einmal gezählt. Wenn die Anzahl der Exemplare berücksichtigt werden muss, könnte man durch die Occurrences gehen. Code:
Dim oAsm As Inventor.AssemblyDocument = ThisApplication.ActiveDocument Dim oOcc As Inventor.ComponentOccurrence Dim customPropertySet As PropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties") Dim propertyName As String = "numerischer Wert" Dim propertyValue As DoubleFor Each oocc In oAsm.ComponentDefinition.Occurrences.AllLeafOccurrences If oOcc.Definition.Type = ObjectTypeEnum.kPartComponentDefinitionObject Then Try propertyValue = propertyValue + oOcc.Definition.Document.PropertySets("Inventor User Defined Properties").Item(propertyName).Value Catch End Try End If Next Try customPropertySet.Item(propertyName).Value=propertyValue Catch customPropertySet.Add(propertyValue, propertyName) End Try
------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |