Macro pour ouverture plan avec seulement une partie du nom du fichier 3D

Bonjour,

je souhaiterais réaliser une macro qui permettrait d'ouvrir le plan de la pièce dans laquelle je lance la macro. Cependant le nom de la MEP n'est qu'une partie du nom du fichier 3D.

Mes fichiers 3D s'appellent "3D0000M000-1 Nom du fichier.Sldprt" et mes plans s'appellent seulement "3D0000M000-1".

Ils sont situés dans le même dossier.

Je n'arrive pas lancer une recherche avec seulement ces 12 premiers caractères.

Si quelqu'un a une idée je suis preneur, je suis sur que c'est pas compliqué mais je bloque!

Merci d'avance!

Bonjour,

Normalement il vous suffit de deux clics pour ouvrir votre MEP, CTRL-D + entré  ou voir la lettre qui est affecté ( fichier ==> créez mise en plan et a côté il y a le raccourci)


ctrl-d.jpg
1 « J'aime »

Bonjour,

Un peu de travail sur les chaines de caractères en vba, voir ICI.

Cordialement,

 

2 « J'aime »

Bonjour Messieurs,

merci pour vos retours!

ac cobra 427 : comme la pièce ne s'appelle pas exactement comme le plan, celui-ci ne s'ouvre pas.

d.roger : J'ai essayé d'intégrer la fonction Left mais j'ai une erreur 91 lorsque je l'éxécute. Je pense que c'est la variable swModel qui pose problème, mais j'ai essayé avec swModel.GetPathName et ça ne change rien.

Voici mon code:


code_ouverture_plan.jpg

Bonjour,

Filename = Left(swModel.GetTitle, 12)

Cordialement,

Merci d.roger!

Je n'ai plus d'erreurs de compilation mais malheureusement le principe ne fonctionne pas. La macro me renvoie le message comme quoi il ne trouve pas de plan alors qu'il y en a un dans le même dossier.

Une idée de ce que j'ai pu mal faire?

Bonjour,

Il te faut récupérer le chemin du dossier, travailler le nom du fichier puis ajouter l'extension voulue :

Dim Filename As String
Filename = Left(swModel.GetTitle, 12)
Debug.Print Filename
Dim swPath As String
swPath = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\", , 0))
Debug.Print swPath
Dim FilenamePlan As String
FilenamePlan = swPath & Filename & ".slddrw"
Debug.Print FilenamePlan

Cordialement,

Petite que "bête"; pourquoi changer le nom de la MEP???

Bonjours, 

Ta macro renvoi le message comme quoi il n'y a pas de mise en plan car tu a mis *.slddrw   donc il cherche 3D0000M000-1*.slddrw

Bonjour,

merci de votre aide!

J'ai finalement résolu mon problème mais je n'avais pas pris le temps de vous le dire!

Voici le code que j'ai utilisé :

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2

Dim DocName As String
Dim DrwName As String

Dim swLoadErrors As Long
Dim swLoadWarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

DocName = swModel.GetTitle

DrwName = Left$(DocName, 12) & ".slddrw"

DrwName = Replace(swModel.GetPathName, DocName, DrwName, 1, , vbTextCompare)

If Dir$(DrwName) <> "" Then

Set swModel = swApp.OpenDoc6(DrwName, swDocDRAWING, swOpenDocOptions_Silent, "", swLoadErrors, swLoadWarnings)

End If

End Sub