PDM, Dispatch et déplacement de fichier

Bonjour à tous

Je cherche à déplacer des fichiers via le dispatch, mais je me heurte à un mur.

Aujourd'hui, nos fichiers sont enregistrés dans trois dossiers regroupant tous les fichiers du même types : PLAN, PIÈCE et ASSEMBLAGE (architecture historique chez nous, et pas toujours pratique)

On souhaite regrouper tous les fichiers liés à une référence (pièce, plan SW et PDF, etc) dans un dossier nommé d'après cette référence. Par exemple, un fichier CP012539.sldprt est rangé sous pièce, avec tous les autres sldprt. On veut l'enregistrer dans un dossier CP012539, avec le plan CP012539.slmdrw, le PDF CP012539.pdf, etc..

Via le dispatch, je n'arrive pas à rendre ce transfert automatique:

Entre les classique debut et fin de bloc, j'ai inseré la ligne suivante:

chemin du fichier source : %PathToSelectedFile%

nouveau chemin: C:\_COFFRE\PRODUCTION\Left(%NameOfSelectedFile%, 8)\%NameOfSelectedFile%

En théorie, Left(%NameOfSelectedFile%, 8) me sort la ref du fichier, extraite d'après le nom du fichier source, sans son extension, et je me suis imaginé qu'en l'encadrant avec des \, ça allait se transformer en dossier.

Ensuite, classiquement, %NameOfSelectedFile% renvoi au nom du fichier source, qui est conservé.

Sauf que lorsque je lance cette tache, il me déplace mon fichier source (jusque là tout va bien), mais sans créer de dossier, et pire, en lui supprimant son extension!

 

Si je tente seulement de créer un dossier avec un code similaire, ça marche très bien.

Pb , je ne peux pas transférer de fichiers dedans de façon automatique (il faudrait réécrire le code pour chaque référence....)

Quelqu'un à une astuce?

Bonjour,

Je n'ai pas PDM sous la main en ce moment mais pour avoir pas mal galéré avec Dispatch il faut décomposer un maximum les tâches. Il faut dans un premier temps créer le dossier puis déplacer le fichier.

Il faudra probablement gérer le nom de dossier via une variable dans Dispatch car de mémoire il a un peu de mal avec les fonctions de texte (type left...) imbriquées avec d'autres fonctionnalités. Je pourrais vous aider un peu plus à partir du 7 juin si personne n'a répondu d'ici là.

Merci pour ta réponse.

C'est effectivement la piste que j'ai prise.

Reste à creuser comment mettre tout ça propre pour que ça marche.

C'est la partie nom de dossier / variable ou je suis moins à l'aise.

J'ai mis en piece jointe le code en l'état. Et donc ça coince après la création du dossier (ça, ça marche).

Je veux bien de l'aide ;-)


2022-06-07_12_04_10-modifier_laction.png

Bonjour,

Dans l'interface de réalisation des actions il faut cliquer sur variable et déclarer une variable de type "Static String" (RecupFileName par exemple) et y rentrer en valeur la manipulation sur le nom de fichier Left(%NameOfSelectedFile%,8).

Dans la capture d'écran je ne sais pas s'il est normal que le fichier soit envoyé dans un autre dossier que celui créé mais dans tous les cas si le fichier n'est pas renommé il faut s'arrêter au nom de dossier soit:

C:\_EVOLIS\03-ETUDES\01-PRoDUITS CATALOGUE\X20\02-PIECES\%RecupFileName%\

Pour la création de dossier il faut saisir ainsi: C:\_EVOLIS\01-PRODUCTION\02-PIECES\%RecupFileName%

Comme expliqué, dispatch ne gère pas bien le cumul de fonction de type manipulation des chaînes de caractères dans une ligne "statique", il faut donc passer par une variable.

1 « J'aime »

Damned! ça ne fonctionne pas

 

J'ai créé la variable NomDossier, j'ai modifié mon code en fonction (en corrigeant les deux chemins différents) et j'obtiens un message d'erreur (voir pièce jointe). Pourtant le dossier se créé bien, mais ça plante au moment du déplacement du fichier (j'ai vérifié, j'ai bien les droits pour déplacer le fichier concerné)

 


2022-06-10_09_06_46-modifier_laction.png
2022-06-10_09_06_58-administration_solidworks_pdm_-__flux_de_travail_-__evolis___wf_cao.png
2022-06-10_09_05_53-02-pieces.png

J'ai aussi essayé de remplacer le chemin d'accès par une variable, même résultat: le création du dossier cible se fait bien, mais impossible de déplacer le fichier.

 

Edit: connecté en Admin ça fonctionne! On est sur la bonne voie.

 

Edit 2 : comment est ce que je peux récupérer une propriété du fichier à déplacer? Par exemple sa description? L'idée serais de renommer le dossier comme ça : {Nom du fichier cible} - {Description}, de façon à rendre ça plus lisible?

Edit 3 : ok, trouvé, avec une variable. Reste maintenant à la placer où je veux.... pas simple. Finalement je veux qu'elle aille dans la description du dossier. Je creuse, je creuse.

Bonjour,

Je regarde ça, il se peut qu'il y ait un problème de droits non si ça fonctionne avec le compte admin?

Edit: je viens de regarder les captures d'écran, pour déplacer le fichier sans le renommer, il faut s'arrêter à %NomDossier%\ et ne pas mettre %NameOfSelectedFile

En ce qui concerne la description il faut que ce soit mappé si vous voulez que ce soit automatique sinon il faut créer une interface de saisie pour le mettre à la main.

1 « J'aime »

Bonjour, 

Pourquoi ne pas utilisé la fonction déplacé l'arborescence de PDM? 

Si les document sont approuvé il suffit d'etre sous un log admin, ou de créer un etat provisoire pour passé de approuvé a déplacement puis une fois les fichier en  place un retour a approuvé sans changement de version

Autre méthode le glisser via explorateur quand tous les fichier sont archivé , dans ce cas  une fenetre est en recherche complete dans le dossier racine de l'ensemble  et la deuxieme fenetre dans le dossier destination sous ensemble.

un tri par nom ou la colonne numero de plan , selection  et glisser le tout dans la deuxieme fenetre. 

cela ne change rien pour pdm , aucune perte de lien puisque la vue du coffre n'est qu'une pagination. les fichier sont classé differement sur le serveur.

@g.casters : ne fonctionne que pour des vrais assemblages. L'utilisation de cette technique ne fonctionne pas s'il y a des sous assemblages virtuels.

 

1 « J'aime »

Merci à tous les deux (et désolé pour ma réponse tardive, j’avais mis ce sujet de coté pendant bien trop longtemps.)

Je cherche à rendre ça automatique via une tache pour que la manip soit la plus simple possible pour les utilisateurs.

L’idée est de pouvoir traiter tous les fichiers déjà existants (plus de 3000 références, dans des états différents) donc difficile d’intégrer ça à un workflow, au moins au début.

Et je n’envisage même pas de les faires une par une à la main… :sweat_smile:

Aujourd’hui ma tache ne fonctionne pas si mal, le dossier se créé bien, avec le bon nom, tous les fichiers se retrouvent bien dedans, mais la description du fichier ne vas pas tout le temps se mettre dans celle du dossier, et je en comprends pas pourquoi…

Voilà à quoi ressemble le programme aujourd’hui:

2023-02-27 10_20_00-Modifier l'action

Avec pour les variables:

Les deux premières fonctionnent nickel.
La dernière ne fonctionne pas tous le temps. En tout cas on ne la retrouve pas toujours dans la description du dossier.
Pourtant les pièces à déplacer ont bien une valeur dans Description, et ce dans toutes les onglets de la carte (@ et toutes les configs)

Ci dessous le paramétrage correspondant à la ligne Définir les variables de cartes de la tache.

2023-02-27 10_13_29-Modifier l'action

Je continue à creuser.

Est ce que ça pourrait avoir une rapport avec le paramétrage de chaque variable?
Dans la console Admin, les variables qui m’intéresse ont des attribut qui s’appliquent aux format SolidWorks, mais est ce qu’il ne faudrait pas les lié aussi aux dossiers? et comment faire?

J’ai aussi essayer de modifier le paramétrage dans les cartes, mais avec seul résultat de faire planter l’explorateur Windows… je suis donc vite revenu au paramétrage initial…

Je viens d’appliquer la modif suite à votre Edit, ça fonctionne. Effectivement, mes fichiers étaient renommé (sans que ça ai d’autre conséquence autre qu’une perte de temps…)

Reste le mappage des propriété, et là je suis moins à l’aise. Ce que j’ai fait ne fonctionne à l’évidence pas…

Bonjour,
Sauf erreur de ma part, les dossiers n’ont aucun type associé donc il leur faut une variable spécifique avec aucun attributs mappé.

Bon, pour le mot de la fin, après appel de la hotline Solidworks, mon programme était bon, à ceci près que je n’avais spécifié aucune configuration dans ma declartation de variable…

Avec le petit @ qui va bien, ça va beaucoup mieux.

Ma macro est donc fonctionnelle!!

Merci à tous ceux qui ont pris le temps de répondre.

1 « J'aime »