VBA macro to review SOLIDWORKS sheets and configurations
This VBA macro allows to review all configurations in part or assembly and all sheets in the drawing document of SOLIDWORKS.
Macro will activate each sheet or configuration one by one and wait the specified amount of seconds before activating the next configuration.
Specify the time in seconds to wait before activating next configuration by changing the value of WAIT_TIME constant
Const WAIT_TIME As Single = 10 ' wait 10 seconds before activating next configuration or sheet
Main window will not be blocked so it is possible to manipulate the model in the graphics view.
Const WAIT_TIME As Single = 5
Dim swApp As SldWorks.SldWorks
Sub main()
Set swApp = Application.SldWorks
Dim swModel As SldWorks.ModelDoc2
Set swModel = swApp.ActiveDoc
If Not swModel Is Nothing Then
If swModel.GetType() <> swDocumentTypes_e.swDocDRAWING Then
ReviewConfigurations swModel, WAIT_TIME
Else
ReviewDrawingSheets swModel, WAIT_TIME
End If
MsgBox "Review Completed"
Else
MsgBox "Please open model"
End If
End Sub
Sub ReviewConfigurations(model As SldWorks.ModelDoc2, waitTime As Single)
Dim vConfNames As Variant
vConfNames = model.GetConfigurationNames()
Dim curConfName As String
curConfName = model.ConfigurationManager.ActiveConfiguration.Name
Dim i As Integer
For i = 0 To UBound(vConfNames)
model.ShowConfiguration2 CStr(vConfNames(i))
SleepAsync waitTime
Next
model.ShowConfiguration2 curConfName
End Sub
Sub ReviewDrawingSheets(draw As SldWorks.DrawingDoc, waitTime As Single)
Dim vSheetNames As Variant
vSheetNames = draw.GetSheetNames
Dim curSheetName As String
curSheetName = draw.GetCurrentSheet().Name
Dim i As Integer
For i = 0 To UBound(vSheetNames)
draw.ActivateSheet CStr(vSheetNames(i))
SleepAsync waitTime
Next
draw.ActivateSheet curSheetName
End Sub
Sub SleepAsync(sec As Single)
Dim startTime As Single
startTime = Timer
While Timer() - startTime < sec
DoEvents
Wend
End Sub