Conditional Expressions with autolisp in AutoCAD

Sometimes you will want a program to do different things depending on different conditions. This is called branching. In order to create program branches, we need to construct “test conditions.” If the test is true, then we do one result; if false, a different result.

Conditional expressions can be used with several functions to achieve branching in AutoLISP routines.

1. Any expression can be used as a conditional.

In AutoLISP, any expression is true if it evaluates to a non-nil value. Any expression is false if it evaluates to nil. Hence, each of the following is a valid conditional expression:

(setq A 5)
PT1 – as long as it holds some value
(getpoint “Enter center point: “)

(setq A B)

2. Specific functions are designed to be conditional expressions.

These expressions return the value of “T” if true, and “nil” if false. They are divided into two types: Numerical (=,<,>, etc.) for numbers and Logical (equal to, less than, greater than, etc.) for other expressions.

Examples

Command: (= 5 5.0)
   T

   Command: (/= 5 (- 7 1))
   T
   Command: (setq G 3.0 H 2.96)
   2.96
   Command: (= G H)
   nil
   Command: (equal G H 0.1) – are G & H equal within 0.1?
   T
   Command: (equal G H 0.04) – are G & H equal within 0.04?
   nil

Numerical Conditions

See also  Storing and Setting AutoCAD’s System Variables with Autolisp

The following conditional expressions are valid for numbers and strings:

Logical Conditions

The following conditionals will work with any expression:

PRACTICE

Test the following expressions at the Command line.

(equal 0.1 0.2)
(equal 0.1 0.2 0.1)
(= “this” “that”)
(equal “this” “that”)
(or “this” nil “that”)
(and “this” nil “that”)
(> (+ 5(/ 4 5)) 8)

Back to top button