AutoLISP を使用するコマンドを作成するのは、プログラムのカスタマイズ機能を使用するための高度な方法です。
AutoLISP の変数や式を使用して、複雑なタスクを行うマクロを作成することができます。プログラムは CUI/CUIx ファイルをロードするときに、同じ場所にある同じ名前の MNL ファイルもロードします。MNL ファイルに AutoLISP コードを配置することは、マクロ内で使用できるカスタム コマンドをロードする効率的な方法です。
次の例は、ブロックを挿入するために使用される 3 つのコマンド マクロで構成されています。
コマンド マクロは、窓の幅を求めるプロンプトを表示します。
^C^C^P(setq WINWID (getreal "\nEnter window width: ")) ^P
コマンド マクロは、壁の厚さを求めるプロンプトを表示します。
^C^C^P(setq WALLTHK (getreal "\nEnter wall thickness: ")) ^P
コマンド マクロは、挿入位置と回転角度を求めるプロンプトを表示し、"window" という名前のブロックを挿入します。
^C^C_INSERT window XScale !WINWID YScale !WALLTHK
ブロックの X 軸は現在の窓の幅になり、Y 軸は現在の壁の厚さになります。
この例には、システム変数 GRIPSIZE の現在の値を増加または減少させる 2 つのコマンドのマクロが含まれています。
コマンド マクロは、システム変数 GRIPSIZE の値を 1 大きくします。
^P(setvar "gripsize"(1+ (getvar "gripsize")))(redraw)(princ)
コマンド マクロは、システム変数 GRIPSIZE の値を 1 小さくします。
^P(setvar "gripsize"(1- (getvar "gripsize")))(redraw)(princ)
これらのコマンド マクロに有効性のチェックを追加する場合、システム変数 GRIPSIZE で 0 より小さい値および 255 より大きい値を設定することはできません。
次の例は、ユーザに 2 つの点の入力を要求し、指定された 2 点を対角頂点とする長方形のポリラインを描きます。
^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
次の構文を使用して、プルダウン メニュー項目のマクロをプログラムで実行することができます。
(menucmd "Gcustomizationgroup.element_ID=|")
旧形式の構文は、メニュー項目がプログラムのメニュー バーに存在するメニューの一部であり、使用可能である場合にのみ動作します。