Macro vb.net, Parcourir Features

Bonjour à tous,

J’ai besoin d’un peux d’aide pour une de mes macros ! J’arrive d’habitude tjs à me débrouiller mais pas cette fois ci.
Je souhaiterai parcourir toutes les « features » d’une pièce ou d’un assemblage

En vba, avec une macro intégré à SolidWorks, j’y arrive avec le code ci dessous.
Mais j’aimerai pouvoir le faire en Vb.net sans avoir besoin d’ouvrir Solidworks.
J’ai un bug sur la dernière ligne. J’ai l’impression que l’on peut pas accédé à swFeat sans ouvrir SolidWorks ?

Si quelqu’un peut m’aider cela serait cool !

Merci

Code vba :

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

Code Vb.net:

       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)

Bonjour;

Pour pouvoir consulter vos fonctions (features) il est indispensable que le document Solidworks soit ouvert.
… ce serait plus facile avec votre macro en entier …
Le type de langage choisis ne déroge pas à cette règle.
D’ailleurs les macro en VBA ne sont pas « Intégrées » à Solidworks, l’éditeur de macro de Solidworks évite seulement l’ajout manuel des Bibliothèques (Références) et des Compléments à un autre éditeur (celui de Excel par exemple). un API quoi.
(SOLIDWORKS API - 2021 - Aide de SOLIDWORKS).

Cordialement.

Merci pour ta réponse !

Je trouve cela quand même blizzard que l’on ne peut pas lire les fonctions,
sachant que l’on peut récupérer la liste de tous les composants, des configs, des propriétés personnalisée.
Bon tant pis.
PS: J’ai pas voulu mettre tous mon code car il beaucoup trop long et je pense pas que cela aurait servit à grand chose surtout si je demande quelque chose d’impossible à faire :slight_smile:

Bonjour,
Rien de bizarre dans ceci :wink:
Ce qui est peut-être lu en VBA ou Vb.Net sans ouvrir le document est plus lié à des extensions de possibilité au travers de l’explorateur Windows que du SW pur.
Pour le reste, pour parcourir un arbre c’est un peu comme lister les cellules d’un tableau Excel via macro, sans l’ouvrir impossible.

2 « J'aime »