About Using AutoLISP in Macros

Creating commands that use AutoLISP is a more advanced way to use the program's customization feature.

You can use AutoLISP variables and expressions to create macros that perform complex tasks. When the program loads a CUI/CUIx file, it also loads a MNL file with the same name and in the same location. Placing AutoLISP code in a MNL file is an efficient way to load custom commands that can be used in a macro.

Note:
  • AutoCAD LT doesn't support the automatic loading of MNL files, but the files can be loaded using the AutoLISP LOAD function from another LISP file.
  • In AutoCAD on Windows only, not available in AutoCAD LT, you can specify additional AutoLISP files to load in the Customize User Interface (CUI) Editor. Creating commands that use AutoLISP is a more advanced way to use the program's customization feature. Experimentation and practice will help you use this feature effectively.

Examples

Preset Values

This example is composed of three command macros that are used to insert a block.

Command macro prompts for the window width.

^C^C^P(setq WINWID (getreal "\nEnter window width: ")) ^P

Command macro prompts for the wall thickness.

^C^C^P(setq WALLTHK (getreal "\nEnter wall thickness: ")) ^P

Command macro inserts a block named "window" and prompts for the insertion point and rotation.

^C^C_INSERT window XScale !WINWID YScale !WALLTHK

The X axis of the block is to the current window width and its Y axis to the current wall thickness.

Resize Grips

This example contains two command macros that increase or decrease the current value of the GRIPSIZE system variable.

Command macro increases the value of the GRIPSIZE system variable by 1.

^P(setvar "gripsize"(1+ (getvar "gripsize")))(redraw)(princ)

Command macro decreases the value of the GRIPSIZE system variable by 1.

^P(setvar "gripsize"(1- (getvar "gripsize")))(redraw)(princ)

To add validity checking to these command macros, values less than 0 and greater than 255 cannot be used for the GRIPSIZE system variable.

Prompt for User Input

The following example prompts for two points and draws a rectangular polyline with the specified points as its corners.

^P(setq a (getpoint "Enter first corner: "));\+
(setq b (getpoint "Enter opposite corner: "));\+ 
pline !a (list (car a)(cadr b)) !b (list (car b)(cadr a)) c;^P
Call a Macro Assigned to a Pull-down Menu Item (Windows only)

Using the following syntax, you can programmatically execute a pull-down menu item's macro:

(menucmd "Gcustomizationgroup.element_ID=|")

The previous syntax works only if the menu item is part of a menu that is on the program's menu bar and is available for use.