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