Depuis macro SolidWorks, recherche rapide dans le coffre PDM (Entreprise)

Bonjour à tous,

Je suis à la recherche de la commande à utiliser dans ma macro SolidWorks pour contrôler dans le coffre PDM (EPDM) si le nom de fichier que je génère automatiquement est unique ou non.

J'arrive à faire ce contrôle avec le code ci-dessous:

Sub CheckFileNameUnique()

    Set PDMVault = ConnectToVault("MyVaultName")

    If PDMVault.IsLoggedIn = True Then
        Debug.Print "Already logged in"
    Else
    End If

    Set Search = PDMVault.CreateSearch()
    Set SearchResult = Search.GetFirstResult


    While Not SearchResult.Name = "033244.SLDPRT"
        Debug.Print SearchResult.Name
        Set SearchResult = Search.GetNextResult()
    Wend
    
    Debug.Print "Trouvé!!!"
    
End Sub

Mais le temps de traitement est trop long. Je voudrais avoir le même temps de réponse que lorsque l'on lance l'archivage et que le nom de fichier n'est pas unique; dans ce cas le contrôle est instantané! Il devrait donc être possible de le faire via la macro...

Si vous avez une solution à me proposer, je vous en remercie d'avance.

Bonjour,

En vba, sauf erreur de ma part, il est impossible de faire ce contrôle. A ma connaissance c'est plus le comportement d'un addin qui serait codé en C# ou VB.Net qui peut accéder aux fonctionnalités interne de PdmWorks.

Enfin sinon dans la façon de faire (qui est longue puisque le scan de l'ensemble de la base est lancé puis analysé), je pense qu'il est préférable de lancer une recherche de la référence concernée en critère. Le temps de traitement sera probablement meilleur.

  Set folder = vault.GetFolderFromPath("...")   'renseigner la racine du coffre     Search.StartFolderID = folder.ID
  Search.FindFolders = False
        Search.Filename = "033244.SLDPRT"
Ensuite appliquer le traitement si trouvé ou non.

1 « J'aime »

Pourquoi passer par une macro VBA ?

Chez nous le COFFRE fait un contrôle automatique. Il nous est impossible d'archiver deux fichiers avec le même nom. Il faut voir dans les paramètres du coffre.

 

Edit: Nous avons un message comme celui-ci:

2 « J'aime »

@ KVuilleumier, je me suis posé la même question mais je pense que ça doit être pour ne pas avoir à changer de nom après tentative d'archivage. Mais sinon oui, suffit d'interdire les doublons.

Merci pour vos réponses et remarques.

En fait je travail sur une macro que l'on va lancer sur un assemblage avant de lancer en production.

Le but est, pour chaque pièce et sous-ensemble utilisés dans l'assemblage traité, de récupérer automatiquement les N° d'article et autres infos de l'ERP et de les utiliser pour générer le nom du nouveau fichier créer via un "enregistrer sous".

C'est pour cela que je veux checker à ce moment là si le nom généré automatiquement est unique ou pas. Si on attend que l'utilisateur archive l'assemblage pour remarquer que certains noms ne sont pas unique. Il devra lister ces fichiers, en refaire des "enregistrer sous" mais manuellement et relancer la macro.

Je vais faire un essai avec la proposition de Cyril.f

Cyril.f,

Je suis désolé mais je ne vois pas comment voir si le nom de fichier est trouvé ou pas.

Faut-il ajouter quelque chose après Search.Filename = "033244.SLDPRT" ?

Set SearchResult = Search.GetFirstResult

If  SearchResult Is Nothing then .....

1 « J'aime »

Ca fonctionne à merveille avec un temps de réponse quasi instantané!

Merci beaucoup.