Change value of global variable in model using SOLIDWORKS API
This example demonstrates how to modify the value of the named global variable in the equation manager using SOLIDWORKS API.
Change the name of the variable and the value constants in the head of the macro.
Const VAR_NAME As String = "Factor" Const NEW_VALUE As Double = 0.75 Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Sub main() Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc If Not swModel Is Nothing Then Dim swEqMgr As SldWorks.EquationMgr Set swEqMgr = swModel.GetEquationMgr If SetEquationValue(swEqMgr, VAR_NAME, NEW_VALUE) Then swModel.ForceRebuild3 True Else MsgBox "Failed to find the equation " & name End If Else MsgBox "Please open the model" End If End Sub Function SetEquationValue(eqMgr As SldWorks.EquationMgr, name As String, value As Double) As Boolean Dim index As Integer index = GetEquationIndexByName(eqMgr, name) If index <> -1 Then eqMgr.Equation(index) = """" & name & """=" & NEW_VALUE SetEquationValue = True Else SetEquationValue = False End If End Function Function GetEquationIndexByName(eqMgr As SldWorks.EquationMgr, name As String) As Integer Dim i As Integer GetEquationIndexByName = -1 For i = 0 To eqMgr.GetCount - 1 Dim eqName As String eqName = Trim(Split(eqMgr.Equation(i), "=")(0)) eqName = Mid(eqName, 2, Len(eqName) - 2) 'removing the "" symbols from the name If UCase(eqName) = UCase(VAR_NAME) Then GetEquationIndexByName = i Exit Function End If Next End Function