User Operand
When using a ZOSAPI-based user operand, a "Prog#" of 0 performs the calculation, while any other value retrieves the specified value from the result vector.
double Hx = TheApplication.OperandArgument1; // Hx
double Hy = TheApplication.OperandArgument2; // Hy
double Px = TheApplication.OperandArgument3; // Px
double Py = TheApplication.OperandArgument4; // Py
int dataLength = TheApplication.OperandResults.Length;
double[] results = new double[dataLength];
for (int i = 0; i < results.Length; ++i)
{
double x = i;
double x2 = x * x;
double x3 = x * x * x;
results[i] = Hx * x3 + Hy * x2 + Px * x + Py;
}
//
// Now assign the locally calculated resule back to the Application.
//
TheApplication.OperandResults.Data = results;
NOTE: that the interface allows an arbitrarily large vector, however only the first 100 values will be stored and accessible by OpticStudio.
Next: