Bonjour à tous et à toutes !
Pour vous expliquer le contexte, j'essaye actuellement d'extraire et archiver des fichiers via un script PDM tel que l'on voit sur l'image :
Voilà d'ailleurs le détail du code :
Option Explicit
Dim swApp As Object
Sub main()
Set swApp = Application.SldWorks
swApp.Visible = True
sAddinName = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS PDM\PDMSW.dll"
status = swApp.LoadAddIn(sAddinName)
modelPath = "<Filepath>"
Set swDocSpecification = swApp.GetOpenDocSpec(modelPath)
swDocSpecification.DocumentType = swDocPART
swDocSpecification.ReadOnly = False
swDocSpecification.Silent = True
swDocSpecification.ConfigurationName = ""
swDocSpecification.DisplayState = ""
swDocSpecification.IgnoreHiddenComponents = True
Set swModel = swApp.OpenDoc7(swDocSpecification)
errors = swDocSpecification.Error
Set swModel = swApp.ActiveDoc
Dim swPdmVault As IEdmVault5
Const VAULT_NAME As String = "XXXXXXXXXXXX"
Dim swPdmFile As IEdmFile5
Set swPdmVault = New EdmVault5
swPdmVault.LoginAuto VAULT_NAME, 0
Set swPdmFile = swPdmVault.GetFileFromPath(modelPath)
Dim swPdmFolder As IEdmFolder5
Set swPdmFolder = swPdmVault.GetFolderFromPath(Left(modelPath, InStrRev(modelPath, "\")))
swModel.ForceReleaseLocks
swPdmFile.LockFile swPdmFolder.ID, 0
End Sub
Je précise que pour exécuter ce script j'utilise une tâche PDM qui fonctionne via le complément "SOLIDWORKS Task-Add-in" dans lequel j'ai également ajouté le .dll permettant d'utiliser les fonctions de PDM extraire, archiver, etc....
Mon problème est que cette macro fonctionne très bien quand je l'exécute depuis SolidWorks (en remplaçant bien sûr le chemin du fichier en question...) directement mais me renvoie l'erreur suivante quand je la lance via le script PDM...
Étant donné qu'il n'y a aucune indication de pourquoi le script ne fonctionne pas correctement j'en appelle à vos connaissances !!
Quelqu’un a-t-il déjà rencontrer ce problème ou une idée ? Car honnêtement j'ai fait le tour de toutes mes idées ....
Merci beaucoup d'avance pour ceux qui m'aideront et bonne journée :)
Bonjour,
Comme ça, j'aurai tendance à dire que ça plante dans PDM (je suppose que c'est dans l'explorateur Windows) puisque le script fait appel de base à des fonctions SW (d'où le fait que ça fonctionne bien dans SW).
Il faudrait donc ajouter des fonctions d'ouverture de SW et du fichier ciblé pour effectuer le traitement dans SW. A ma connaissance les tâches qu'il y ait des scripts ou non ouvrent nécessairement SW pour faire des conversions ou des impressions.
1 « J'aime »
Merci pour ton retour Cyril :)
Le script PDM ouvre bien SolidWorks au début de l'exécution ... et si je garde uniquement la partie la du script qui permet d'ouvrir un fichier dans SW :
modelPath = "<Filepath>"
Set swDocSpecification = swApp.GetOpenDocSpec(modelPath)
swDocSpecification.DocumentType = swDocPART
swDocSpecification.ReadOnly = False
swDocSpecification.Silent = True
swDocSpecification.ConfigurationName = ""
swDocSpecification.DisplayState = ""
swDocSpecification.IgnoreHiddenComponents = True
Set swModel = swApp.OpenDoc7(swDocSpecification)
errors = swDocSpecification.Error
le script fonctionne très bien... J'ai donc l'impression que ça pose problème dans la partie extraire/archiver du script !
Oups pardon mal lu le code. Donc j'ai testé rapidement, même comportement ne fonctionne pas depuis l'explorateur.
Je pense qu'il y a un conflit entre ce que le script envoi vers SW et le fonctionnement de SW (on voit par exemple que le fichier ne s'ouvre pas).
1 « J'aime »
Oui je pense aussi mais c'est dommage de n'avoir aucune indication précise du problème d'exécution... car du coup compliquer de trouver la solution :/
C'est le "Impossible d'exécuter la macro Solidworks". J'ai l'impression que ça attend sur les versions actuelles du VB.NET et non du VBA mais il est vrai qu'avant les autres tâches de conversion étaient en script donc facilement analysables.
1 « J'aime »
Je vais continuer de tenter quelques modifications de codes mais si je n'arrive vraiment rien et que personnes d'autres n'a d'idées j'ouvrirais un ticket avec l'assistance !
Finalement j'ai omis c'est dans l'onglet "détail de fichier de sortie" ou "Fichier" (ca dépend de la tâche) et en cliquant sur options de script avancées (on obtient le code SW).
1 « J'aime »
Il faudrait peut-être que j'essaye d'insérer mon code via ce type de tâche ?
A tester, je n'ai jamais utilisé les tâches (juste une de conversion copiée de celle de base et sinon j'utilise dispatch pour d'autres fonctions)
1 « J'aime »
ça ne fonctionne pas plus en utilisant les tâches "conversion" / "impression" !