Forum:SolidWorks
Thema:VBA |
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
fabian1243

Beiträge: 35 / 0

SW 2019
Win 10 Pro v1909

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

Beiträge: 35 / 0

SW 2019
Win 10 Pro v1909

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

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