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