關於在巨集中使用 AutoLISP

建立使用 AutoLISP 的指令是另一種更進階的程式自訂功能使用方式。

您可以使用 AutoLISP 變數與表示式來建立可執行複雜工作的巨集。當程式載入 CUI/CUIx 檔時,它還會載入具有相同名稱,並位於相同位置的 MNL 檔。將 AutoLISP 程式碼放置在 MNL 檔案能有效率地載入可用於巨集的自訂指令。

註: (僅限 Windows) 您可以在自訂使用者介面 (CUI) 編輯器中指定要載入的其他 AutoLISP 檔。建立使用 AutoLISP 的指令是另一種更進階的程式自訂功能使用方式。實驗與練習可以幫助您有效地使用這項功能。

範例

預置值

此範例是由三個用來插入圖塊的指令巨集所組成。

窗戶寬度的指令巨集提示。

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

牆厚度的指令巨集提示。

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

指令巨集插入稱為「窗戶」的圖塊,並提示您指定插入點與旋轉。

^C^C_INSERT window XScale !WINWID YScale !WALLTHK

圖塊的 X 軸是目前窗戶寬度,而 Y 軸是目前牆的厚度。

重新調整掣點大小

此範例中包含兩個指令巨集,其會增加或減少 GRIPSIZE 系統變數目前的值。

指令巨集會使 GRIPSIZE 系統變數的值增加 1。

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

指令巨集會使 GRIPSIZE 系統變數的值減少 1。

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

若要將有效性檢查加入這些指令巨集中,系統變數 GRIPSIZE 不能使用小於 0 且大於 255 的值。

提示使用者輸入

以下範例可提示輸入兩點,並以指定的點做為角點,繪製矩形聚合線。

^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
呼叫指定給下拉式功能表項目的巨集 (僅限 Windows)

使用以下語法,您可以程式化執行下拉式功能表項目的巨集:

(menucmd "Gcustomizationgroup.element_ID=|")

僅在該功能表項目為程式功能表列上的部分功能表且可使用時,才能使用先前的語法。