Makro mit nicht funktionierendem Makrorecorder

Hallo ihr alle

Warum funktioniert ein mit dem Makrorecorder aufgenommenes Makro nicht, wenn Sie es starten?
Mit Excel gibt es in der Regel nie Probleme, aber mit SolidWorks ist es fast das Gegenteil.
Hier ist mein gespeichertes Makro, nachdem es in der Assembly bearbeitet wurde:

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

Was meine Aufnahme betrifft, so bearbeite ich mein Teil in der Baugruppe, starte mein Makro, und nichts passiert.

Wozu?

Vielen Dank im Voraus

Der SW-Makrorecorder ist in der Tat nicht der beste, ganz im Gegenteil...
In der Regel wird dies in sehr seltenen Fällen verwendet, um die notwendige Funktion zu identifizieren.
Aber es generiert trotzdem eine Menge nutzlosen und absolut ekelhaftem Code für Sie!
Hier ist Part.GraphicsRedraw2, das wir zu oft finden.
Ich weiß nicht, was Sie versucht haben, vielleicht die Begrenzungsbox?
Aber das Internet ist oft die bessere Lösung für den Rekorder.

3 „Gefällt mir“

Hallo.

Ich stimme @sbadenis zu ... Der Recorder kann stark verbessert werden.

Versuchen Sie stattdessen:

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

Herzliche Grüße.

3 „Gefällt mir“