關於在巨集中使用 AutoLISP

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

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

註:
  • AutoCAD LT 不支援自動載入 MNL 檔,但可以使用 AutoLISP LOAD 函數從其他 LISP 檔載入檔案。
  • 在 Windows 上的 AutoCAD 中 (不適用 AutoCAD LT),您可以在自訂使用者介面 (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=|")

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