Ab Dezember werden wir Inhalte aus der Community, die 10 Jahre und älter sind, archivieren. Diese FAQ enthält weitere Informationen.
Hallo Zusammen,
ich möchte gerne über eine iLogic Regel 2 bestimmte Arbeitsebenen in einem Beuteil ein- bzw. ausblenden.
Im VBA habe ich schon einen gewissen Ansatz gefunden, aber ich laufe dabei noch auf einen kleinen Fehler, da der Originalcode sich auf eine Baugruppe bezog.
Da ich VBA erst seit letzter Woche etwas näher kennengelernt habe, hoffe ich, das Ihr mir vielleicht bei der Fehlersuche bzw. Übersetzung nach iLogic etwas helfen könntet.
Anbei findet Ihr den Code und das Bauteil:
VBA:
Option Explicit
Public Sub Workplane_Visible()
'Deklaration
Dim oApp As Application
Dim oPart As PartDocument
Dim oPara_WPV As Inventor.Parameter
Dim c As PartComponentDefinition
Dim occ As ComponentOccurrence
'Zuweisung
Set oApp = ThisApplication
Set oPart = oApp.ActiveDocument
Set c = oPart.ComponentDefinition
Set oPara_WPV = c.Parameters.Item("Workplane_Replacement_Visible")
For Each occ In c.Occurrences
Dim d As Document
Set d = occ.Definition.Document
If oPara_WPV = True Then
d.ComponentDefinition.WorkPlanes.Item("YZ_Workplane_Replacement").Visible = True
d.ComponentDefinition.WorkPlanes.Item("XZ_Workplane_Replacement").Visible = True
ElseIf oPara_WPV = False Then
d.ComponentDefinition.WorkPlanes.Item("YZ_Workplane_Replacement").Visible = False
d.ComponentDefinition.WorkPlanes.Item("XZ_Workplane_Replacement").Visible = False
End If
'occ.Definition.Document
Next
oPart.Update
End Sub
iLOgic:
Sub Main()
'Deklaration
Dim oApp As Application:oApp = ThisApplication
Dim oPart As PartDocument:oPart = oApp.ActiveDocument
Dim c As PartComponentDefinition:c = oPart.ComponentDefinition
Dim oPara_WPV As Inventor.Parameter:oPara_WPV = c.Parameters.Item("Workplane_Replacement_Visible")
Dim occ As ComponentOccurrence
For Each occ In c.Occurrences
Dim d As Document:d = occ.Definition.Document
If Workplane_Replacement_Visible = True Then
d.ComponentDefinition.WorkPlanes.Item("YZ_Workplane_Replacement").Visible = True
d.ComponentDefinition.WorkPlanes.Item("XZ_Workplane_Replacement").Visible = True
ElseIf Workplane_Replacement_Visible = False Then
d.ComponentDefinition.WorkPlanes.Item("YZ_Workplane_Replacement").Visible = False
d.ComponentDefinition.WorkPlanes.Item("XZ_Workplane_Replacement").Visible = False
End If
'occ.Definition.Document
Next
oPart.Update
End Sub
Im iLOgic scheint er mir die Regel überhaupt nicht mit dem Parameter zu verknüpfen und auch in VBA schmeißt er mir keine Fehlermeldung aus.
Vielleicht seh ich auch vor lauter Wald den Baum nicht mehr.
Jedenfalls würde ich mich freuen, wenn ihr mal ein Auge auf den Code werfen könntet.
Gruß Sven
Gelöst! Gehe zur Lösung
Gelöst von S_Verbeek. Gehe zur Lösung
MsgBox("Unsichtbar") ThisApplication.ActiveDocument.ComponentDefinition.WorkPlanes.Item("TEST").Visible = False msgbox("Sichtbar") ThisApplication.ActiveDocument.ComponentDefinition.WorkPlanes.Item("TEST").Visible = True
Die Arbeitsebene muss entsprechend umbenannt sein. In diesem Fall TEST.
Gruß
Stefan Verbeek
Manchmal kann es so einfach sein. 😊
Vielen Dank für die Lösung.
If Workplane_Replacement_Visible = True Then
ThisApplication.ActiveDocument.ComponentDefinition.WorkPlanes.Item("YZ_Workplane_Replacement").Visible = True
ThisApplication.ActiveDocument.ComponentDefinition.WorkPlanes.Item("XZ_Workplane_Replacement").Visible = True
ElseIf Workplane_Replacement_Visible = False Then
ThisApplication.ActiveDocument.ComponentDefinition.WorkPlanes.Item("YZ_Workplane_Replacement").Visible = False
ThisApplication.ActiveDocument.ComponentDefinition.WorkPlanes.Item("XZ_Workplane_Replacement").Visible = False
End If
Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.