VBA macro to review SOLIDWORKS sheets and configurations

Edit ArticleEdit Article

Configurations in SOLIDWORKS model
Configurations in SOLIDWORKS model

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
            ReviewDrawingSheets swModel, WAIT_TIME
        End If
        MsgBox "Review Completed"
        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
    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
    draw.ActivateSheet curSheetName
End Sub

Sub SleepAsync(sec As Single)
    Dim startTime As Single
    startTime = Timer
    While Timer() - startTime < sec
End Sub

Product of Xarial Product of Xarial