Hallo zusammen, ich war bei der Suche leider nicht fündig. Ich möchte gerne aus einer Baugruppe heraus eine bestimmte Unterkomponente (iam) öffnen, eine darin befindliche Regel auslösen, diese Komponente speichern und wieder schließen.
Hintergrund ist folgender. Ich habe in der obersten BG schon eine Regel, welche über eine Schleife mit "runruleincomponent" die entsprechenden Regeln ausführt. Diese Regel in der Unterkomponente stellt dort Positionsdarstellung und Ansicht ein, was leider nur teilweise funktioniert, wenn es von "ganz oben" ausgeführt wird ( Positionsdarstellung wird gesetzt, jedoch nicht die Ansicht). Die BG werden bei uns automatisch über eine externe Ansteuerung erstellt, deshalb steckt die Regel auch noch im Ereignisauslöser vor dem Speichern. Laut Messagebox wird die Regel auch ausgeführt, aber läuft wie beschrieben nicht ordnungsgemäß durch, aussesr ich führe sie manuell aus.
Wenn ich manuell die Unter-BG öffne, die Regel ausführe, läuft alles prima, deshalb ist das jetzt meine Idee, es per ilogic zu machen.
Oder hat jemand einen anderen Vorschlag?
Vielen Dank schonmal
Das hier ist mein Code in der Unter-BG, welcher nur zuverlässig ausgeführt wird, wenn ich es manuell mache.
If ANZAHL_TEILE_UEBERTRAGUNGSPARAMETER > 1 Then
'ALLE ERWEITERUNGEN----------------------------------------------------------------------------------------------------------------------
Dim positionsdarstellung_erweiterung As String
Dim ansicht_erweiterung As String
Dim erweiterung As String
Dim ende As Double
Dim nummer As Double
ende = ANZAHL_TEILE_UEBERTRAGUNGSPARAMETER - 1
nummer = 0
If AUSRICHTUNG_UEBERTRAGUNGSPARAMETER = 1 Then
positionsdarstellung_erweiterung = "Pos 1"
Else
positionsdarstellung_erweiterung = "Pos 2"
End If
Do While Not EqualWithinTolerance(nummer, ende, 0.5)
nummer = nummer + 1
erweiterung = "TEIL_"&nummer
' MessageBox.Show(erweiterung, "Erweiterung")
Try
Component.InventorComponent(erweiterung).ActivePositionalRepresentation = positionsdarstellung_erweiterung
Catch
End Try
If nummer = 10 Then Exit Do
Loop
'ALLE ERWEITERUNGEN----------------------------------------------------------------------------------------------------------------------
'ELETZTES TEIL----------------------------------------------------------------------------------------------------------------------
Dim ansicht_letztes_teil As String
Dim positionsdarstellung_letztes_teil As String
Dim letztes_teil As String
ansicht_letztes_teil = "ohne_anbindung"
If AUSRICHTUNG_UEBERTRAGUNGSPARAMETER = 1 Then
positionsdarstellung_letztes_teil = "Anbau links"
Else
positionsdarstellung_letztes_teil = "Anbau rechts"
End If
letztes_teil = "TEIL_"&ANZAHL_TEILE_UEBERTRAGUNGSPARAMETER
' MessageBox.Show(letztes_teil, "Letztes Teil")
Try
For Each Occurrence In ThisApplication.ActiveDocument.ComponentDefinition.Occurrences
If Occurrence.Name = letztes_teil Then Occurrence.SetDesignViewRepresentation(ansicht_letztes_teil, , True)
Next
Component.InventorComponent(letztes_teil).ActivePositionalRepresentation = positionsdarstellung_letztes_teil
Catch
End Try
'LETZTES TEIL----------------------------------------------------------------------------------------------------------------------
End If
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP