bart
Mars 5, 2015, 9:27
1
Bonjour,
Je suis en train de chercher un moyen de récuperer les propriétés d'emplacement de ma pièce
Exemple : Ma pièce est enregistrée dans un dossier "Affaire X", dans un dossier "Client Y"
Je voudrais que sur mon cartouche apparaissent le nom du dossier client et le nom de l'affaire.
Docn je veux rcuperer le chemin d'enregistrement et ne faire apparaître que le nom du client et de l'affaire, car souvent j'oubli de 'lindiquer et je m'en rend compte une fois l'impression fini.
Lucas m'avait aiguillé vers une macro.
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
swModel.AddCustomInfo2 "File Path", swCustomInfoText, Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\"))
End Sub
La macro n'a pas d'erreur, mais je ne sais pas trop comment faire après.
Pour que ces info se retrouve sur mon cartouche.
Pour info, je passe par un formulaire de propriété perso.
Merci! =)
Salut, en fait la macro doit ajouter une propriété personnalisée appelée "File Path" que tu peux utiliser ensuite dans ton cartouche ou dans une annotation.
1 « J'aime »
bart
Mars 5, 2015, 9:37
3
Docn la proprit perso "File path" me donne le nom du dossier client et le nom du dossier d'affaire?
Comment les difrencier? j'aurai voulu avoir le nom du client dans une case, et de l'affaire dans une autre.
C'est possible?
bart
Mars 5, 2015, 9:40
4
Bon j'ai fait un test sur une annotation.
Je me retrouve avec le chemin complet comme si j'avais mis la propriété nom du dossier.
Tu peux mettre un exemple de chemin en précisant le nom du client et de l'affaire ?
1 « J'aime »
bart
Mars 5, 2015, 10:02
6
Voici le screenshot
Je voudrais mettre "Client X" dans la case client et "Affaire Y" dans la case chantier ou Ref.
macro.png
Alors il faut ajouter avant le End Sub la partie suivante :
filepath = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\")) fin = Len(filepath) - 1 pos_cli = InStrRev(filepath, "\", fin) client = Mid(filepath, pos_cli + 1, fin - pos_cli) pos_aff = InStrRev(filepath, "\", pos_cli - 1) affaire = Mid(filepath, pos_aff + 1, pos_cli - 1 - pos_aff)
swModel.AddCustomInfo2 "Client", swCustomInfoText, client
swModel.AddCustomInfo2 "Affaire", swCustomInfoText, affaire
1 « J'aime »
Il y a probablement une solution plus simple, mais au moins ça fonctionne !
La macro ajoutera 2 propriétés personnalisées en plus que tu pourras utiliser dans ton cartouche :
"Client" pour le nom du client
"Affaire" pour le numéro d'affaire
1 « J'aime »
bart
Mars 5, 2015, 10:39
9
Du moment que ça fonctionne, ça me va!
ça me parait niquel comme macro, mais j'ai une erreur sur la ligne client= Mid (FilePath, po_cli+1, fin-pos_cli)
pl
Mars 5, 2015, 10:42
10
En effet tu as une erreur car tu n'as pas bien copié collé !
C'est pos _cli et non po_cli
1 « J'aime »
pl
Mars 5, 2015, 10:42
11
Edit : suppression doublon
1 « J'aime »
bart
Mars 5, 2015, 10:43
12
Non, j'ai juste mal retapé sur Lynkoa
j'ai bien mis : client = Mid(FilePath, pos_cli + 1, fin - pos_cli)
macros.png
pl
Mars 5, 2015, 10:53
13
Etrange, quelle est l'erreur ?
1 « J'aime »
bart
Mars 5, 2015, 10:56
14
Erreur d'execution 5
Argument ou appel de procédure incorrect
Désolé pas eu le temps de tester plus en profondeur, je regarde ça ce soir.
1 « J'aime »
bart
Mars 5, 2015, 3:36
17
Pas de soucis Lucas, c'est sympa de ta part!
Je fais ça en fil rouge, donc ce n'est pas urgentissime ;)
En tout cas, elle a l'air très bien ta macro. Tu gères!
Il faudrait vraiment que je me forme là dessus....
Bonne fin de journée!
1 « J'aime »
Désolé je ne comprends pas, chez moi ça fonctionne !
Je te mets en PJ le fichier qui marche chez moi pour que tu testes...
Merci pour les compliments et bonne fin de journée à toi aussi.
chemin.swp
bart
Mars 6, 2015, 3:06
19
Je ne coprends pas non plus...
Chez moi ou au bureau, toujours la même erreur.
Je suis sous 2014.
Un petit roman photo? si tu as le temps bien sur!
Tu sais utiliser le debug pour les macros ? Sinon je peux prendre le contrôle de ton ordinateur à distance ?