Macro met de macrorecorder werkt niet

Hoi allemaal

Waarom werkt een macro die met de macrorecorder is opgenomen niet wanneer u deze start?
Met Excel zijn er meestal nooit problemen, maar met SolidWorks is het bijna het tegenovergestelde.
Hier is mijn opgeslagen macro eenmaal bewerkt in de vergadering:

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

Wat betreft mijn opname, ik bewerk mijn onderdeel in de assemblage en ik start mijn macro, en er gebeurt niets.

Waarvoor?

Bij voorbaat dank

De SW-macrorecorder is inderdaad niet de beste, verre van dat...
Over het algemeen wordt dit in zeer zeldzame gevallen gebruikt om de noodzakelijke functie te identificeren.
Maar het genereert toch veel nutteloze en absoluut walgelijke code voor je!
Hier is Part.GraphicsRedraw2 die we te vaak vinden.
Ik weet niet wat je probeerde te doen, misschien het begrenzingsvak?
Maar het internet is vaak een betere oplossing voor de recorder.

3 likes

Hallo.

Ik ben het met @sbadenis eens ... De recorder kan sterk worden verbeterd.

Probeer in plaats daarvan:

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

Vriendelijke groeten.

3 likes