Use Conditional Expressions in Macros (Concept)

AutoCAD

 
Use Conditional Expressions in Macros
Concept Quick Reference
 
 
 

You can add conditional expressions to a macro by using a command that introduces macro expressions written in DIESEL (Direct Interpretively Evaluated String Expression Language).

The format is:

$M=expression

Introducing the macro with $M= tells AutoCAD to evaluate a string as a DIESEL expression, and that expression is the DIESEL expression. The following example defines a conditional expression in a macro:

FILLMODE $M=$(-,1,$(getvar,fillmode))

The macro switches the FILLMODE system variable on and off by subtracting the current value of FILLMODE from 1 and returning the resulting value to the FILLMODE system variable. You can use this method to toggle system variables whose valid values are 1 or 0.

Termination of Macros That Contain Conditional Expressions

If you use the DIESEL string language to perform “if-then” tests, conditions might exist where you do not want the normal terminating space or semicolon (resulting in ENTER). If you add ^Z to the end of the macro, AutoCAD does not automatically add a space (ENTER) to the end of the macro expression.

As with other control characters in commands, the ^Z used here is a string composed of ^ (a caret) and Z and is not equivalent to pressing CTRL+Z.

In the following examples, ^Z is used as a macro terminator.

^C^C$M=$(if,$(=,$(getvar,tilemode),0),$S=mview _mspace )^Z
^C^C$M=$(if,$(=,$(getvar,tilemode),0),$S=mview _pspace )^Z

If these macros did not end with ^Z, AutoCAD would automatically add a space (ENTER), repeating the last command entered.