Obtenir la dernière version des fichiers du coffre EPDM

vos questions concernant les API SolidWorks

Obtenir la dernière version des fichiers du coffre EPDM

Messagepar Roub25 » Jeu 11 Mai 2017, 7:50

Bonjour à tous,

Je suis entrain d'écrire le code d'une macro afin de faciliter l'utilisation des fichiers CAO par mes collègues.
Je suis presque à la fin de ce que je voudrais réaliser mais j'ai un dernier point bloquant :
Lorsque l'utilisateur choisit un fichier, l'identification au coffre fort est demandé et dans l'idéale le fichier devrait s'ouvrir or j'ai une erreur "Run-time 91" Object variable not set. Je pense avoir trouvé l'origine de ce bug.
Car lorsque je me connecte sur EPDM et que je clique sur le fichier voulu (pas double clique) j'ai une fenêtre qui s'ouvre "Obtention de la dernière version du fichier" suite à cela je relance ma macro et cela fonctionne !
Donc je pense que c'est dû au fait que la dernière version du fichier ne se trouve pas encore dans le cache local. Donc j'ai voulu coder cela mais j'ai toujours ce problème...
Code: Tout sélectionner
'Active la seconde ComboBox lorsqu'un type est sélectionné dans la 1er liste
 Private Sub CBox_etat_Click()

    'Déclaration des varaibles nécessaires
     Dim Part                As SldWorks.ModelDoc2
     Dim boolstatus          As Boolean
     Dim longstatus          As Long
     Dim longwarnings        As Long
     Dim swModel             As ModelDoc2
     Dim swDesignTable       As SldWorks.DesignTable
     Dim xlWS                As Worksheet
     Dim DebutDesignation    As Range
     Dim r                   As Range
     Dim Vault               As New EdmVault5
     Dim File                As IEdmFile5
     Dim Folder              As IEdmFolder5
     
     Vault.LoginAuto "Nom_de_mon_coffre", 0
   
     If Info_general.CBox_type.Value = ("Pince W25") Then
        'Ouverture du fichier correspond au besoin choisi dans la liste
        'Chemin à changer lors du changement d'emplacement des fichiers EXEMPLE : Lors de l'insertion dans l'ePDM
         If CBox_etat.Value = ("Pince finie") Then
         
            Set File = Vault.GetFileFromPath("Chemin du fichier dans EPDM + nom du fichier", Folder)
            Set Part = swApp.OpenDoc6("Chemin du fichier dans EPDM + nom du fichier.SLDPRT", 1, 0, "", longstatus, longwarnings)
            swApp.ActivateDoc2 "CAO_W25_80-5", False, longstatus
           
                'Activation du modèle ouvert, nécessaire pour accéder à la famille de pièces
                 Set swModel = swApp.ActiveDoc
               
                'Récupération de la famille de pièces
                 Set swDesignTable = swModel.GetDesignTable()
               
                'Si récupération correcte de la famille de pièces
                 If Not swDesignTable Is Nothing Then
               
                    'Récupération de la feuille excel
                     Set xlWS = swDesignTable.EditTable2(False)
                   
                    'Récupération de la cellule à la suite de laquelle commence la famille de pièces.
                    'En règle générale, une famille de pièces commence par une cellule vide qui est renommée "Family"
                    'Dans notre cas pour ne pas avoir toutes les configurations visibles dans SW la tabelle a du être divisée
                    'Donc dans le fichier les désignations commencent après une cellule renommée "Article"
                    'Cette cellule peut être n'importe où sur la feuille
                     Set DebutDesignation = xlWS.Range("Article")
                     
                    'Écriture des choix de configurations dans la combobox
                     For Each r In xlWS.Range("A" & DebutDesignation.Row + 1 & ":A" & xlWS.Range("A" & xlWS.Rows.Count).End(xlUp).Row - 3)
                         CBox_article.AddItem (r.Value2)
                     Next
                   
                    'Sélection de la première ligne de la combobox
                    'CBox_article.ListIndex = 1
                   
                    'Fermeture de la tabelle sans appliquer de modifications
                     swDesignTable.UpdateTable swUpdateDesignTableNone, True
                   
                 End If
               
                'Une fois le type de pince choisi et la liste remplie, elle est accessible
                 CBox_article.Enabled = True


Voici une partie de mon code et cela bloque à la ligne "Set swDesignTable = swModel.GetDesignTable()" je ne vois pas trop comment faire.
De plus, lorsque je lance ma macro pas à pas je me rends compte que mes variable File, Part et swDesigntable = Nothing, je ne comprends pas pourquoi ni l'impact.

Merci de votre aide je suis presque au bout de mon projet !
Bonne journée
Roub25
Ewok SolidWorks
 
Messages: 2
Inscription: Ven 17 Fév 2017, 8:53

Retourner vers Questions générales sur les API

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

banniere