Macro-vb.net, Blader door functies

Hoi allemaal

Ik heb een beetje hulp nodig met een van mijn macro's! Meestal lukt het me wel, maar deze keer niet.
Ik wil graag alle kenmerken van een onderdeel of assemblage bekijken

In vba, met een macro geïntegreerd in SolidWorks, kom ik er met de onderstaande code.
Maar ik zou het graag in Vb.net kunnen doen zonder Solidworks te hoeven openen.
Ik heb een bug op de laatste regel. Ik heb de indruk dat je geen toegang hebt tot swFeat zonder SolidWorks te openen?

Als iemand me kan helpen, zou dat cool zijn!

Bedankt

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;

Om je features te kunnen bekijken, is het essentieel dat het Solidworks-document open is.
… Het zou gemakkelijker zijn met je hele macro ...
Het gekozen taaltype vormt geen uitzondering op deze regel.
Trouwens, VBA-macro's zijn niet "geïntegreerd" in Solidworks, de Solidworks-macro-editor vermijdt alleen het handmatig toevoegen van bibliotheken (referenties) en add-ins aan een andere editor (de Excel-editor bijvoorbeeld). een API.
(SOLIDWORKS API - 2021 - SOLIDWORKS Help).

Vriendelijke groeten.

Dank u voor uw antwoord!

Ik vind het nog steeds een sneeuwstorm dat je de functies niet kunt aflezen,
Wetende dat u de lijst met alle componenten, configuraties, aangepaste eigenschappen kunt ophalen.
Nou, jammer.
PS: Ik wilde niet al mijn code plaatsen omdat het veel te lang is en ik denk niet dat het veel nut zou hebben gehad, vooral als ik om iets onmogelijks vraag om te doen :slight_smile:

Hallo
Hier is niets raars aan :wink:
Wat in VBA of Vb.Net kan worden gelezen zonder het document te openen, heeft meer te maken met uitbreidingen van de mogelijkheid via Windows Verkenner dan met pure SW.
Voor de rest is het bladeren door een boom een beetje als het opsommen van de cellen van een Excel-tabel via een macro, zonder deze te openen, onmogelijk.

2 likes