Makro z rejestratorem makr nie działa

Cze wszystkim

Dlaczego makro nagrane za pomocą rejestratora makr nie działa po jego uruchomieniu?
Z Excelem zwykle nigdy nie ma żadnych problemów, ale z SolidWorks jest prawie odwrotnie.
Oto moje zapisane makro po edycji w zestawie:

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

Jeśli chodzi o moje nagranie, edytuję swoją część w montażu i odpalam makro i nic się nie dzieje.

Po co?

Z góry dziękuję

Rejestrator makr SW rzeczywiście nie jest najlepszy, daleko od tego...
Ogólnie rzecz biorąc, jest to używane w bardzo rzadkich przypadkach w celu zidentyfikowania niezbędnej funkcji.
Ale i tak generuje dla ciebie dużo bezużytecznego i absolutnie obrzydliwego kodu!
Oto Part.GraphicsRedraw2, który znajdujemy zbyt często.
Nie wiem, co próbowałeś zrobić, może z obwiednią?
Ale internet jest często lepszym rozwiązaniem dla rejestratora.

3 polubienia

Witam.

Zgadzam się z @sbadenis ... Rejestrator można znacznie ulepszyć.

Zamiast tego spróbuj na:

https://help.solidworks.com/2021/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.ifeaturemanager~insertglobalboundingbox.html?verRedirect=1
Szekspirowski:
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

Pozdrowienia.

3 polubienia