Bonjour à tous,
Pourquoi une macro enregistré avec l’enregistreur de macro, ne fonctionne pas quand on la lance ?
Avec Excel il n’y a généralement jamais de soucis, mais avec SolidWorks, c’est quasiment l’inverse.
Voici ma macro enregistré une fois édité dans l’assemblage :
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
' Redraw
Part.GraphicsRedraw2
' Redraw
Part.GraphicsRedraw2
' Redraw
Part.GraphicsRedraw2
' Redraw
Part.GraphicsRedraw2
Dim BoundingBox As Object
Set BoundingBox = Part.FeatureManager.InsertGlobalBoundingBox(swGlobalBoundingBoxFitOptions_e.swBoundingBoxType_BestFit, False, False, longstatus)
Part.ClearSelection2 True
' Redraw
Part.GraphicsRedraw2
' Redraw
Part.GraphicsRedraw2
' Redraw
Part.GraphicsRedraw2
' Redraw
Part.GraphicsRedraw2
End Sub
comme pour mon enregistrement j’édite ma pièce dans l’assemblage et je lance ma macro, et rien ne se passe.
Pourquoi ?
Merci d’avance
L’enregistreur de macro sous SW, n’est effectivement pas le meilleurs, loin de là…
En général cela sert dans de très rare cas à identifier la fonction nécessaire.
Mais il te génère dans tout les cas un tas de code inutile et absolument dégueulasse!
Ici Part.GraphicsRedraw2 que l’on retrouve trop souvent.
Je ne sais pas ce que tu cherchais à faire, peut être la bounding box?
Mais internet est souvent une meilleurs solution à l’enregistreur.
3 « J'aime »
Bonjour.
Je suis d’accord avec @sbadenis …l’enregistreur est largement perfectible.
…
essayez plutôt:
https://help.solidworks.com/2021/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.ifeaturemanager~insertglobalboundingbox.html?verRedirect=1
associé à:
https://help.solidworks.com/2021/english/api/sldworksapi/redraw_graphics_example_vb.htm
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.ModelDoc2
Dim swModel As SldWorks.ModelDoc2
Dim boolstatus As Boolean
Dim longstatus As Long
Option Explicit
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set swModel = swApp.ActiveDoc
' Display the Bounding Box sketch
boolstatus = Part.SetUserPreferenceToggle)swViewDispGlobalBBox, True)
Dim BoundingBox As SldWorks.Feature
Set BoundingBox = Part.FeatureManager.InsertGlobalBoundingBox(swBoundingBoxType_BestFit, True, False, longstatus)
Part.ClearSelection2 True
' Hide the Bounding Box sketch
boolstatus = Part.SetUserPreferenceToggle)swViewDispGlobalBBox, False)
swModel.GraphicsRedraw2
End Sub
Cordialement.
3 « J'aime »