J'ai un modèle de mise en plan sur lequel il y a une vue de face d'une bride. Pour afficher la vue de face, je dois sélectionner la vue de dessous de la bride. Je souhaite, via une macro, changer la configuration de cette vue (c'est le DN qui change).
L'enregistreur de macro me donne un code qui fonctionne mais quand j'exécute la macro une première fois, elle crée une configuration qui se termine par "-SM-FLAT-PATTERN" et je suis obligé de la lancer une seconde fois pour que la configuration change (elle affiche la configuration créée lors du premier lancement).
Je ne souhaite pas créer de nouvelles configurations et exécuter la macro une seule fois.
Ci-dessous le code obtenu :
Dim swApp As Object
Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = _ Application.SldWorks
Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("Vue de mise en plan1", "DRAWINGVIEW", 0.267271785970659, 0.323684671386922, 0, False, 0, Nothing, 0) boolstatus = Part.ChangeRefConfigurationOfFlatPatternView("O:\Bride FJS type11B ASA300.SLDPRT", "DN040") Part.ClearSelection2 True End Sub
Oui, j'essaye d'automatiser cette fonction car il faut le faire sur de nombreux plans par mes collègues et moi-même. La vue à toujours le même nom mais la configuration change. Je joint une image des configurations. Je souhaite faire changer la configuration en fonction de la valeur du DN.
J'ai trouvé un code qui fonctionne mais qui demande quelle configuration je veux afficher mais j'aimerais que ça se fasse automatiquement en fonction de la valeur du DN (je récupère cette valeur dans un fichier Excel) :
Sub ChangeRefConfig()
Dim myApp As SldWorks.SldWorks
Set myApp = Application.SldWorks
Dim myDraw As DrawingDoc
Set myDraw = myApp.ActiveDoc
Dim myView As View
Set myView = myDraw.ActiveDrawingView
Dim myModel As ModelDoc2
Set myModel = myView.ReferencedDocument
Dim msg As String
msg = "Please select config to change to for view " & myView.Name & vbCrLf
For i = 0 To UBound(myModel.GetConfigurationNames)
en fait elle te crée une config de tolerie en version deplié d'ou le nom "-SM-FLAT-PATTERN" et pour répndre à PL le DN est le Diamètre Nominal de la bride. Peut être que la bride et tolerie et c'est pour ça qu'elle te crée la version flat-pattern..
Je ne comprends pas pourquoi elle crée une configuration de tolerie car la pièce est créee comme un corps volumique...
Je suis en train de chercher du coté de la fonction "ShowConfiguration2" car cette fonction marche dans le 3D mais pas dans la mise en plan.
Ci-dessous le code pour le 3D:
Dim swApp As Object
Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = _ Application.SldWorks
Set Part = swApp.ActiveDoc Dim myModelView As Object Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized boolstatus = Part.Extension.SelectByID2("DN300@Bride FJS type11B ASA300.SLDPRT", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0) boolstatus = Part.ShowConfiguration2("DN050") End Sub
Quelqu'un peut-il m'aider à l'adapter à la mise en plan ?
Regarde dans le code de ta question, la 4 ligne en partant du bas tu as: "boolstatus = Part.ChangeRefConfigurationOfFlatPatternView("O:\Bride FJS " je pense qu'il faudrait modifier cette partie du code ou la supprimer pour ne plus qu'elle crée la version flatpattern
Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = _ Application.SldWorks
Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("Vue de mise en plan1", "DRAWINGVIEW", 0.267271785970659, 0.323684671386922, 0, False, 0, Nothing, 0) boolstatus = Part.ChangeRefConfigurationOfDefautView("O:\Bride FJS type11B ASA300.SLDPRT", "DN040") Part.ClearSelection2 True End Sub
Pour le code de manu67, l'erreur se situe dans la ligne boolstatus = Part.ChangeRefConfigurationOfDefautView("O:\Bride FJS type11B ASA300.SLDPRT", "DN040". L'erreur affichée est la suivante : "Erreur d'exécution '438': Propriété ou méthod"e non géreé par cet objet"
Pour le code de .PL, l'erreur est dans la ligne Set swView = swDraw.IGetFirstView : "Erreur d'exécution '424': objet requis. J'ai essayé de déclarer la variable ConfigName mais l'erreur est la même :
J'ai trouvé la solution à mon problème. Je mets le code ci-dessous :
Sub ChangeRefConfig() Dim myApp As SldWorks.SldWorks Set myApp = Application.SldWorks Dim myDraw As DrawingDoc Set myDraw = myApp.ActiveDoc Dim myView As View Set myView = myDraw.ActiveDrawingView Dim myModel As ModelDoc2 Set myModel = myView.ReferencedDocument Dim msg As String myView.ReferencedConfiguration = "DN125" myDraw.ForceRebuild MsgBox "Done" End Sub
Entre guillemets, je tape le nom de la configuration que je souhaite et la macro change la configuration dans la mise en plan