The procedure for requesting AWR support has changed. Please read all about the new AWR product support process.
Page tree
Skip to end of metadata
Go to start of metadata

If your script ever needs to work with equations, you will frequently want to access either the left hand side (name) of the equals sign or the right hand side (value) of the equals sign. The following functions perform these tasks:

Getting Equations


  • IN this example there is are two equations, "x=1" and "y=2".

  • Get equations by name.


      Dim eqn As Equation
      Dim eqn2 As Equation
         Set eqn = Project.Schematics(1).Equations("x")
         Debug.Print eqn.Expression
         Set eqn2 = Project.Schematics(1).Equations("y")
         Debug.Print eqn2.Expression 
    'Get equation by index
      Dim eqn As Equation
      Dim eqn2 As Equation
         Set eqn = Project.Schematics(1).Equations(1)
         Debug.Print eqn.Expression
         Set eqn2 = Project.Schematics(1).Equations(2)
         Debug.Print eqn2.Expression 
  • Both of these scripts will produce this output in the debug window


Equation Name

Function GetEqName(e As String) As String
    GetEqName = Trim(Left(e, InStr(e,"=")-1))
End Function 

Equation Value

Function GetEqVal(e As String) As Double
    GetEqVal = Val(Right(e, Len(e) - InStr(e,"=")))
End Function 


Since MWO handles the entire equation as a string through the Expression method (i.e. Equation.Expression), I usually call these functions inline, as follows:

    Dim x as String    ' Equation name
    Dim y as Double    ' Equation value
    x = GetEqName(project.Equations("EquationName").Expression)
    y = GetEqVal(project.Equations("EquationName").Expression) 

Manipulating groups of Equations

MWO handles the entire group of equation as a string through the Expression method (i.e. Equation.Expression). Each equation in the group separated from the next equation with carriage return and line feed characters. To read all equations in the group:

  Dim x as String    
    x = Project.Schematics(1).Equations(1).Expression  

To set the group of equations:

project.Schematics(1).Equations(1).Expression = "x=11"+vbCRLF+"y=21"+vbCRLF+"z=31",


project.Schematics(1).Equations(1).Expression = "x=11"+chr(13)+chr(10)+"y=21"+chr(13)+chr(10)+"z=31" 

So the following works only for groups:

vbCRLF = chr(13) + chr(10)

To get the number of groups of equations:

Debug.Print Project.Schematics(1).Equations.Count

To loop through groups of equations:

     For Each eqn In Project.Schematics(1).Equations

     Next eqn

There are some equation properties for individual equations within the group. It takes two commands. First, you tell it which eqn you want to work on, and then you make the actual property change. (In the following code second equation in the group is disabled). To select which equation in the group to access, use the "ActiveIndex" property on the equation object:


So, when you access the Enabled or Tune properties, it works on whatever equation in the group is selected by ActiveIndex. By default, ActiveIndex is set to one.

If equations were organized as separate equations without making a group of equations they will be treated as they were before, as the usual collection of equations.