##### Page tree
Skip to end of banner
Go to start of banner

# Scripting How-To: Using AWR Scripting to Access Equations

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

```x=1
y=2```

### 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",`

Or:

`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:

```     project.Schematics(1).Equations(1).ActiveIndex=2
project.Schematics(1).Equations(1).Enabled=False ```

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.