| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | |  | Autodesk Revit: Grundlagen - Online, ein Seminar am 10.12.2025
|
|
Autor
|
Thema: ilogic Komponentennamen unabhängig (146 / mal gelesen)
|
TimPa Mitglied Technischer Produktdesigner
 Beiträge: 3 Registriert: 30.10.2024 Inventor 2025
|
erstellt am: 06. Nov. 2025 13:04 <-- editieren / zitieren --> Unities abgeben:         
Moin, Ich möchte mir als blutiger ilogic-Anfänger Vorlagen zum kopieren erstellen, bei denen ich in der Baugruppe die Maße eines Einzelteil verändern kann. Mein Problem ist dabei, das ich es nicht hinbekomme, dass die Regel unabhängig vom Komponentennamen ist. Das Bauteil was mit der Regel bearbeitet werden soll ist immer an Pos. 3 im Modell-Baum. Ich bin nach einiger Recherche leider nicht zu dem richtigen Kniff gekommen. Parameter("100798:1", "Höhe") = E_Höhe - 3 mm
100798 ist in diesem Fall der Komponentenname Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic
      

 Beiträge: 2950 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 06. Nov. 2025 23:48 <-- editieren / zitieren --> Unities abgeben:          Nur für TimPa
Moin Variante 1 - Komponentenname normalisieren Den Namen der Komponente im Teilebrowser überschreiben und auch in den Kopie der Baugruppe beibehalten. Ich vermute das ist wenig praktikabel, wenn im Teilebrowser immer der gleiche Name steht, obwohl es verschiedene Teile sind. Variante 2 - Namen der Komponente ermitteln Wenn es immer die dritte Komponente im Teilebrowser ist, kann man deren Namen auslesen. Probier mal:
Code:
Dim oAssDoc As AssemblyDocument = TryCast(ThisDoc.Document, Inventor.AssemblyDocument) If oAssDoc Is Nothing Then Exit Sub Dim sName As String = oAssDoc.ComponentDefinition.Occurrences.Item(3).NameParameter(sName, "Höhe") = E_Höhe - 3 mm
Variante 3 - Nach etwas eindeutigem in der Komponente suchen Noch besser wäre der Komponente ein benutzerdefiniertes iProp mit einem eindeutigen Namen zu verpassen und danach zu suchen. Im Teilebrowser mal unbedacht was verschoben oder eingefügt/gelöscht und an Platz 3 steht ein anderes Teil. Dann geht nix mehr und keiner weiß mehr warum. Der Inhalt des iProps ist nicht von Bedeutung. Es könnte z.B. die Warnung sein, dass es nicht gelöscht werden darf, weil für iLogicregel xyz erforderlich.
Code:
Sub main Dim oAssDoc As AssemblyDocument = TryCast(ThisDoc.Document, Inventor.AssemblyDocument) If oAssDoc Is Nothing Then Exit Sub Dim sName As String = GetCompName("Mein_iPropName", oAssDoc) ' <------------------------------------Name des iProps anpassen Parameter(sName, "Höhe") = E_Höhe - 3 mm End Sub Private Function GetCompName(ByVal sPropName As String, ByVal oAssDoc As AssemblyDocument) As String Try Dim oDoc As Document For Each oOcc As ComponentOccurrence In oAssDoc.ComponentDefinition.Occurrences If oOcc.Definition.Type = ObjectTypeEnum.kPartComponentDefinitionObject Then oDoc = DirectCast(oOcc.Definition.Document,Document) For Each oProp As Inventor.Property In oDoc.PropertySets(4) If oProp.Name = sPropName Then Return oOcc.Name End If Next End If Next Catch Return Nothing End Try End Function
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TimPa Mitglied Technischer Produktdesigner
 Beiträge: 3 Registriert: 30.10.2024 Inventor 2025
|
erstellt am: 07. Nov. 2025 07:00 <-- editieren / zitieren --> Unities abgeben:         
Erstmal besten Dank für den Aufwand! Ich finde Variante 3 am besten. Allerdings bekomme ich die Fehlermeldung "Parameter: Keinen Parameter mit dem Namen "Höhe" gefunden" Ich habe dem Bauteil ein Benutzerdefiniertes iPropertie mit dem Namen WT_Fuß_Vorne gegeben, mit Inhalt gefüllt und in die Formel eingefügt. (siehe unten) Bei Variante 2 funktioniert es allerdings. Habe ich irgendwas übersehen? Sub main Dim oAssDoc As AssemblyDocument = TryCast(ThisDoc.Document, Inventor.AssemblyDocument) If oAssDoc Is Nothing Then Exit Sub Dim sName As String = GetCompName("WT_Fuß_Vorne", oAssDoc) ' <------------------------------------Name des iProps anpassen Parameter(sName, "Höhe") = E_Höhe - 3 mm End Sub Private Function GetCompName(ByVal sPropName As String, ByVal oAssDoc As AssemblyDocument) As String Try Dim oDoc As Document For Each oOcc As ComponentOccurrence In oAssDoc.ComponentDefinition.Occurrences If oOcc.Definition.Type = ObjectTypeEnum.kPartComponentDefinitionObject Then oDoc = DirectCast(oOcc.Definition.Document,Document) For Each oProp As Inventor.Property In oDoc.PropertySets(4) If oProp.Name = sPropName Then Return oOcc.Name End If Next End If Next Catch Return Nothing End Try End Function Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic
      

 Beiträge: 2950 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 07. Nov. 2025 10:21 <-- editieren / zitieren --> Unities abgeben:          Nur für TimPa
Moin Vermutlich ist da ein unterdrücktes Exemplar in der Baugruppe. Das löst einen Fehler aus. Neuer Versuch: Code:
Sub main Dim oAssDoc As AssemblyDocument = TryCast(ThisDoc.Document, Inventor.AssemblyDocument) If oAssDoc Is Nothing Then Exit Sub Dim sName As String = GetCompName("WT_Fuß_Vorne", oAssDoc) ' <------------------------------------Name des iProps anpassen Parameter(sName, "Höhe") = E_Höhe - 3 mm oAssDoc.Update End SubPrivate Function GetCompName(ByVal sPropName As String, ByVal oAssDoc As AssemblyDocument) As String Try Dim oDoc As Document For Each oOcc As ComponentOccurrence In oAssDoc.ComponentDefinition.Occurrences If oOcc.Suppressed= True Then Continue For If oOcc.Definition.Type = ObjectTypeEnum.kPartComponentDefinitionObject Then oDoc = DirectCast(oOcc.Definition.Document,Document) For Each oProp As Inventor.Property In oDoc.PropertySets(4) If oProp.Name = sPropName Then Return oOcc.Name Next End If Next Catch Return Nothing End Try End Function
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |