Makro vb.net, Browse-Funktionen

Hallo ihr alle

Ich brauche ein wenig Hilfe mit einem meiner Makros! Normalerweise schaffe ich das, aber diesmal nicht.
Ich möchte alle Funktionen eines Teils oder einer Baugruppe durchsuchen

In vba, mit einem in SolidWorks integrierten Makro, komme ich mit dem folgenden Code dorthin.
Aber ich würde es gerne in Vb.net tun können , ohne Solidworks öffnen zu müssen.
Ich habe einen Fehler in der letzten Zeile. Ich habe den Eindruck, dass Sie nicht auf swFeat zugreifen können, ohne SolidWorks zu öffnen?

Wenn mir jemand helfen kann, wäre das cool!

Vielen Dank

VBA-Code:

Dim swApp As SldWorks.SldWorks
Set swApp = Application.SldWorks
Dim swModel As SldWorks.ModelDoc2
Set swModel = swApp.ActiveDoc

If Not swModel Is Nothing Then

   Dim swFeat As SldWorks.Feature
   Set swFeat = swModel.FirstFeature

   While Not swFeat Is Nothing
       Debug.Print "    " & swFeat.Name & " [" & swFeat.GetTypeName & "]"
        Set swFeat = swFeat.GetNextFeature
    Wend

End If

Vb.net Code:

       Dim sDocFileName = "W:\...."

        Dim swClassFact As SwDMClassFactory
        Dim swDocMgr As SwDMApplication
        Dim swDoc As SwDMDocument17
        Dim nDocType As Integer
        Dim nRetVal As Integer
        Dim swCfgMgr As SwDMConfigurationMgr

        If InStr(LCase(sDocFileName), "sldasm") > 0 Then
            nDocType = SwDmDocumentType.swDmDocumentAssembly
        Else
            nDocType = SwDmDocumentType.swDmDocumentUnknown
            Exit Sub
        End If

        If (nDocType = SwDmDocumentType.swDmDocumentAssembly) Then
            swClassFact = CreateObject("SwDocumentMgr.SwDMClassFactory") 'si bug :Frameworks cible = .NET Framework 4
            swDocMgr = swClassFact.GetApplication(sLicenseKey)
            swDoc = swDocMgr.GetDocument(sDocFileName, nDocType, True, nRetVal)
            swCfgMgr = swDoc.ConfigurationManager
            Select Case nRetVal
                Case 0
                    Debug.Print("File successfully opened : ")
            End Select
        End If

        Debug.Print("File = " & swDoc.FullName)
        Debug.Print("Active Configuration Name = " & swCfgMgr.GetActiveConfigurationName)


        Dim swSelMgr As SelectionMgr
        Dim swFeat As Feature

        swSelMgr = swDoc.SelectionManager
        swFeat = swCfgMgr.GetSelectedObject6(1, -1)

Hallo;

Um Ihre Funktionen anzeigen zu können, ist es unerlässlich, dass das Solidworks Dokument geöffnet ist.
… Es wäre einfacher mit Ihrem gesamten Makro...
Die Art der gewählten Sprache ist keine Ausnahme von dieser Regel.
VBA-Makros sind übrigens nicht in Solidworks "integriert", der Solidworks Makro-Editor vermeidet lediglich das manuelle Hinzufügen von Bibliotheken (Referenzen) und Add-Ins zu einem anderen Editor (z.B. dem Excel-Editor). eine API.
(SOLIDWORKS API - 2021 - SOLIDWORKS Hilfe).

Herzliche Grüße.

Vielen Dank für Ihre Antwort!

Ich finde es immer noch toll, dass man die Funktionen nicht ablesen kann,
In dem Wissen, dass Sie die Liste aller Komponenten, Konfigurationen und benutzerdefinierten Eigenschaften abrufen können.
Naja, schade.
PS: Ich wollte nicht meinen ganzen Code einfügen, weil er viel zu lang ist und ich glaube nicht, dass es viel genützt hätte, besonders wenn ich nach etwas Unmöglichem frage :slight_smile:

Hallo
Daran ist nichts Seltsames :wink:
Was in VBA oder Vb.Net gelesen werden kann, ohne das Dokument zu öffnen , hat mehr mit den Erweiterungen der Möglichkeiten durch den Windows Explorer als mit reiner SW zu tun.
Im Übrigen ist das Durchsuchen eines Baums ein bisschen so, als würde man die Zellen einer Excel-Tabelle per Makro auflisten, ohne sie zu öffnen, unmöglich.

2 „Gefällt mir“