VBA | / SolidWorks
fabian1243 13. Mrz. 2020, 21:34

Hallo Leute,

Die nachfolgende Funktion ermittelt ob eine Datei in einer Baugruppe vorhanden ist oder nicht.

Code:

Option Explicit

Public swApp As Object
Public swModel As SldWorks.ModelDoc2
Public swAssembly As SldWorks.AssemblyDoc
Public swComponent As SldWorks.Component2
Public vComponents As Variant
Public lCompCount As Long

Sub Test()

    If InBaugruppe("C:\Baugruppe1.SLDASM", "C:\Teil1.SLDPRT") Then
        MsgBox "Die Datei ist in der Baugruppe verbaut"
    Else
        MsgBox "Die Datei wird in der Baugruppe nicht verwendet"
    End If
  
End Sub

Public Function InBaugruppe(PfadBaugruppe As String, PfadDatei As String) As Boolean
    Dim i As Integer
    Dim Zwischenspeicher As String
    Dim Errors As Long
   
    Set swApp = Application.SldWorks
    swApp.DocumentVisible False, swDocASSEMBLY
    Set swModel = swApp.OpenDoc3(PfadBaugruppe, swDocASSEMBLY, True, True, True, True, Errors)
    Set swAssembly = swModel
   
    InBaugruppe = False
    lCompCount = swAssembly.GetComponentCount(True)
    vComponents = swAssembly.GetComponents(True)
   
    For i = 0 To lCompCount - 1
        Set swComponent = vComponents(i)
        Zwischenspeicher = swComponent.GetPathName
        If Zwischenspeicher = PfadDatei Then
            InBaugruppe = True
            Exit For
        End If
    Next i
   
    swApp.DocumentVisible True, swDocASSEMBLY
    swApp.QuitDoc swModel.GetTitle
    Set swModel = swApp.ActiveDoc
   
End Function


[Diese Nachricht wurde von fabian1243 am 14. Mrz. 2020 editiert.]

fabian1243 14. Mrz. 2020, 15:02

So habe das Problem selber gelöst, der obige Code ist berichtigt und funktioniert!

[Diese Nachricht wurde von fabian1243 am 14. Mrz. 2020 editiert.]