The Define command is used in two different ways:
define macroName { script}
Macros can take up to five arguments. Use the %1, %2, %3, etc., notation within the script to indicate that the macro expects one or more arguments. A macro can accept a number, string, variable, dataset, function, or script as an argument, but all arguments are passed as strings. These are similar to MS-DOS batch command arguments. If arguments are passed to a macro, the macro can report the number of arguments using the macro.nArg object property.
To see the script associated with a defined macro, use:
define macroName
define option rangeName range
Option | Scope Level of Named Range |
---|---|
n | define a worksheet scope range variable |
nb | define a workbook scope range variable |
np | define a project scope range variable |
Example 1
The following script defines the autoexec macro to create a new Origin worksheet from the ORIGIN.OTW template.
def autoexec { window -T Data Origin; };
Example 2
The next script defines a macro that uses a loop to print a text string three times.
def hello { loop (ii, 1, 3) { type "$(ii). Hello World"; }; };
Once the hello macro is defined, typing the word hello in the Script window results in the printout:
1. Hello World
2. Hello World
3. Hello World
Example 3
The following script defines a macro named abc that expects a single argument. The given argument is then multiplied by 2, and the result is printed.
def abc { type "$(%1 * 2)"; };
If you define this macro (previous example) and then type the following in the Script window:
abc 5
Origin responds: 10
You could modify the abc macro (previous example) to take two arguments:
def abc { type "$(%1 * %2)"; };
Now, if you type the following in the Script window:
abc 5 4
Origin responds: 20
Example 1
// Prepare 4 column XYXY def -n Sensor1 [Book1]Sheet1!col(B); def -n Sensor2 [Book1]Sheet1!col(D); plotxy iy:=((Sensor1),(Sensor2));
Example 2
newbook; wks.ncols = 4; col(A) = data(1,12); col(B) = data(21,32,1); def -n ref1 col(A)[2]; def -n myrange col(A); csetvalue col:=col(C) formula:="ref1*B"; csetvalue col:=col(D) formula:="total(myrange)";