AutoCAD
AutoCAD 巨集指令怎麼寫?^C^C、分號、反斜線、範例與做成按鈕
AutoCAD 的指令巨集,就是功能區按鈕、選單項目背後那串指令,例如 ^C^C_.circle \5。 這篇先講指令巨集怎麼寫、每個特殊字元的意思、怎麼做成按鈕, 再比較同樣被叫做「巨集」的動作錄製器、腳本、LISP、VBA,以及 AutoCAD LT 能用哪些。
以下依 AutoCAD 2025 繁體中文版說明整理,介面名稱照說明的寫法。 Windows 版的 AutoCAD 與 AutoCAD LT 都是用 CUI 編輯器設定指令巨集(Mac 版用「自訂」對話方塊),只限某個平台的字元或功能會另外註明。
本文目錄(10 節)
先講結論
- 固定幾個步驟一鍵完成:寫成指令巨集、做成按鈕,AutoCAD 與 LT 都可以;完整版 AutoCAD for Windows 也能用動作錄製器錄下操作再回放
- 同一組指令要在很多張圖上重複執行:可以寫成腳本檔(.scr)
- 要依規則判斷、跳對話框、讀寫 Excel:就是寫程式了,可以選 LISP、VBA 或 .NET 外掛
- VBA:目前版本不會預設安裝,要另外下載與 AutoCAD 版本相同的 VBA 模組;只有 Windows 版完整 AutoCAD 能用,AutoCAD LT 與 Mac 版都不支援
指令巨集怎麼寫:^C^C、分號與反斜線
指令巨集的寫法和在指令提示下輸入差不多,只是要用幾個特殊字元代表按鍵。下表先列出其中幾個, 其他字元見後面的完整對照表:
| 字元 | 代表的意思 |
|---|---|
^C | 按 Esc。一個 ^C 可以取消多數指令,但從標註指令回到指令提示要 ^C^C,-LAYER 依目前的選項甚至要 ^C^C^C;說明建議巨集開頭寫 ^C^C |
;(分號) | 按 Enter |
\(反斜線) | 暫停,讓使用者輸入值、指定點或選取物件;巨集裡的反斜線只能用來暫停,路徑要改用正斜線(/) |
| 空格 | 按空格鍵;巨集結尾的空格會被當成按 Enter 完成指令。一行如果以控制字元、反斜線或分號結尾,就不會在後面自動補空格 |
_(底線) | 告訴 AutoCAD 後面是全域(英文)指令或選項名稱,巨集要在多種語言版本執行就要加 |
.(句點) | 使用指令的標準定義;指令被 AutoLISP、ObjectARX 改過行為,或被 UNDEFINE 取消定義時也照樣執行 |
*(放在最前面) | 重複執行這個巨集,直到按 Esc 或啟動其他以 ^C 開頭的巨集;不能用來選擇選項,也不能用在影像框功能表的巨集 |
例如:
^C^C_.circle \5先取消目前的指令,執行 CIRCLE,暫停讓你點圓心,再輸入半徑 5 結束。 也可以寫成 ^C^C._CIRCLE;\5;,意思相同;Autodesk 說明建議用分號,比較容易看出哪裡按了 Enter, 因為空格有時是要輸入的內容本身。
*^C^C._erase single以單一物件選取模式執行 ERASE:選一次(點一個物件,或在空白處拉出視窗/框選)就刪除,不會再繼續問「選取物件」; 前面的 * 讓它刪完自動再執行,直到按 Esc。
空格和分號的差別,可以比較 ucs 加一個空格,與 ucs ;: 前者只啟動 UCS 指令,停在「指定 UCS 的原點」提示;後者再多按一次 Enter,接受預設的「世界」。
LISP 載入後定義的指令,也可以直接寫進巨集,例如 ^C^CBPLOT;LISP 要先載入才能用, 載入方式見AutoCAD LISP 怎麼載入。 完整版 AutoCAD 載入 CUIx 檔時,會一併載入同一個位置、同檔名的 MNL 檔,可以把巨集要用的 AutoLISP 放在那裡; AutoCAD LT 不會自動載入 MNL 檔。
官方範例:關圖層、改顏色、輸入三行地址、調掣點大小
以下四個巨集取自 Autodesk 2025 說明,可以直接貼到「巨集」方塊試用:
| 巨集 | 做什麼 |
|---|---|
^C^C_.-layer off \; | 執行 -LAYER 的「關閉」選項,暫停讓你輸入要關閉的圖層名稱,最後的分號按 Enter 結束指令。 -LAYER 平常會一直提示下一項作業,要按空格鍵或 Enter 才會結束 |
^C^C_.select \_.change previous ;properties color blue ; | 先用 SELECT 讓你選一個或多個物件,再用 CHANGE 的「前一個」選集,把這些物件的顏色改成藍色。 一般的暫停在輸入一個項目後就會繼續,只有 SELECT 會等到物件選取完成 |
^C^C_.text \.4 0 DRAFT Inc;;;Main St.;;;City, State; | 執行 TEXT,暫停讓你指定插入點,再輸入三行地址。每組三個分號依序是:結束這行文字、重複 TEXT 指令、 接受上一行文字下方的預設位置 |
^P(setvar "gripsize"(1+ (getvar "gripsize")))(redraw)(princ) | 在巨集裡寫 AutoLISP,把 GRIPSIZE(掣點大小)加 1;把 1+ 改成 1- 就是減 1。 開頭的 ^P 會暫時關閉巨集的回應(MENUECHO),指令行就不會顯示這段程式。GRIPSIZE 只接受 0 到 255,要加檢查的話以這個範圍為準 |
AutoLISP 在 AutoCAD LT for Mac 不能用,所以第四個範例只適用於完整版 AutoCAD 與 AutoCAD LT 2024 起的 Windows 版。
特殊字元完整對照表
Autodesk 2025 說明〈關於指令巨集中的特殊控制字元〉列出的所有字元:
| 字元 | 作用 |
|---|---|
| 空格 | 輸入空格;指令序列中的空格相當於按空白鍵 |
; | Enter |
\ | 暫停等待使用者輸入(不能與加速鍵一起使用) |
. | 使用標準指令,即使該指令已用 UNDEFINE 取消定義 |
_ | 把後面的指令與選項從本土化名稱轉成全域名稱 |
' | 以透通方式呼叫指令 |
=* | 顯示目前的頂層下拉式功能表、快顯功能表或影像框功能表(僅限 Windows) |
* | 重複指令,直到啟動其他指令或目前的指令結束 |
$ | 引入條件式 DIESEL 巨集表示式($M=) |
^] | 還沒選取物件時提示選取,選到的物件指定給「上一個」選集(AutoCAD 2023 加入) |
^B | 鎖點開關,相當於 Ctrl+B |
^C | 取消作用中的指令或指令選項,相當於按 Esc |
^D | 動態 UCS 開關,相當於 Ctrl+D |
^E | 設定下一個等角平面,相當於 Ctrl+E(Windows) |
^G | 格線開關,相當於 Ctrl+G |
^H | 退格鍵 |
^I | Tab |
^M | Enter |
^O | 正交開關 |
^P | MENUECHO 開關 |
^Q | 不在指令行歷程顯示巨集的提示與輸入 |
^R | 指令版本管理開關;有些指令要靠它,舊版寫的巨集才能在新版正常運作 |
^T | 數位板開關,相當於 Ctrl+T(僅限 Windows) |
^V | 變更目前的視埠 |
^Z | 空字元,抑制巨集結尾自動加上的空格 |
直接從鍵盤按的時候,有些組合的作用不一樣:^Q 是退出、^R 是循環檢視視埠、^V 是從剪貼簿貼上。上表只適用於寫在巨集裡的情況。
把巨集做成按鈕
- 按「管理」頁籤 →「自訂」面板 →「使用者介面」,開啟「自訂使用者介面」(CUI)編輯器
- 在「自訂」頁籤的「指令清單」窗格,按「建立新指令」
- 在「性質」窗格輸入「名稱」與「描述」(描述會顯示在狀態列或工具提示),在「巨集」方塊輸入巨集,按「套用」
- 把這個指令從「指令清單」拖曳到「<檔名> 中的自訂」窗格裡的功能區面板、工具列或下拉式功能表, 或按右鍵「複製」後在目標上按右鍵「貼上」,再按「套用」
既有指令的巨集,也是在「性質」窗格的「巨集」方塊修改。AutoCAD LT for Windows 同樣可以用 CUI 編輯器做這些設定; 完整版 AutoCAD for Windows 另外有「指令巨集編輯器」可以編輯巨集,AutoCAD LT 與工具集不支援;AutoCAD for Mac 則是用「自訂」對話方塊。
也被叫做「巨集」的五種東西
1. 指令巨集(按鈕、選單背後的那串指令)
功能區按鈕或選單項目按下去執行的,其實是一串「指令+選項+輸入值」,Autodesk 稱為指令巨集,寫法見前面。 適合「每次都照同樣順序下幾個指令」的情況;要做判斷時,可以在巨集裡加 DIESEL 條件式或 AutoLISP。
2. 動作錄製器(錄下操作,之後回放)
動作錄製器是功能區上的一個面板(ACTRECORD 指令開始錄製)。錄製時,AutoCAD 會把指令與輸入值記在「動作樹」裡, 停止後存成動作巨集檔:AutoCAD 2025 是 ACTMX 格式,2024 和更早版本建立的 ACTM 檔要先移轉成 ACTMX 才能回放。 存好之後可以設定回放時暫停讓使用者輸入、插入基準點或使用者訊息。
動作錄製器只有 Windows 版完整 AutoCAD 有,AutoCAD LT 與 AutoCAD for Mac 都不能用。 回放時要注意:圖面設定和錄製時不同,結果就會不同;用另一種語言版本回放,可能無法正確執行; 巨集裡參考的自訂指令或 VBA 巨集沒載入時,回放會失敗。
3. 腳本檔(.scr)
一個純文字檔,每一行寫一個指令,副檔名必須是 .scr,用 SCRIPT 或 SCRIPTCALL 指令執行。 腳本裡每個空格都有意義,要照指令的提示順序寫回應。會跳出對話方塊的指令不能用,要改用前面加連字號的版本,例如用 -INSERT 而不是 INSERT; 最後一行必須是空行。Autodesk 說明舉的例子是建立圖層並插入圖框,或依序開啟每張圖、切換圖層後執行 PLOT 出圖。 AutoCAD LT 也可以用腳本。
4. AutoLISP
AutoCAD 內建的程式語言,可以選取物件、判斷條件、顯示對話框(DCL),也就是一般說的「LISP 外掛」。 完整版 AutoCAD 一直都能用;AutoCAD LT 從 2024 起才支援(LT for Mac 不支援),範圍也比完整版小, 詳見 AutoCAD LT 能用 LISP 嗎?。
5. VBA
Microsoft 的 Visual Basic for Applications,和 Excel、Word 裡的 VBA 是同一套語言,只是操作的對象換成 AutoCAD 的圖面與物件, 程式存成 VBA 專案檔(.dvb)。熟悉 Excel VBA 的人比較容易上手,也方便與 Office 互動。 它和前面幾種最大的差別是:要另外安裝 VBA 模組,而且只有 Windows 版完整 AutoCAD 能用。
對照表:適合的工作與 LT 能不能用
| 種類 | 需要寫程式 | 適合的工作 | AutoCAD LT |
|---|---|---|---|
| 指令巨集 | 不用 | 固定步驟做成一個按鈕 | 可以 |
| 動作錄製器 | 不用 | 錄下重複操作後回放 | 不可以(只有完整版 AutoCAD for Windows) |
| 腳本檔(.scr) | 簡單 | 把固定的一組指令存起來重複執行 | 可以 |
| AutoLISP | 要 | 有判斷規則、對話框的工具 | LT 2024 起部分支援(Windows 版) |
| VBA | 要 | 延續既有 VBA 程式、與 Office 互動 | 不可以 |
| .NET 外掛 | 要 | 公司部署、長期維護的較大型工具 | 不可以 |
VBA 要另外下載模組
目前版本的 AutoCAD 不會預設安裝 VBA。Autodesk 說明的寫法是:最新版本繼續支援 VBA 開發環境,但執行期和開發環境要另外下載安裝。 Autodesk 下載頁的安裝方式:
- 在下載頁選擇與 AutoCAD 版本相同的模組
- 關閉所有程式
- 在 Windows 檔案總管連按兩下下載的自解壓縮 EXE 檔,解壓縮到自選或預設的位置
- 依畫面上的指示完成安裝
2026 年 10 月查詢時,下載頁列出的是 AutoCAD 2016 到 2027 的模組,2020 起只有 64 位元版本。裝好之後的操作:
- 載入專案:輸入
VBAMAN開啟「VBA 管理員」,按「載入」選取 DVB 檔,在訊息方塊按「啟用巨集」;同一個對話方塊也有「卸載」與「新建」 - 執行巨集:在「VBA 管理員」按「巨集」,選取巨集後按「執行」;或在指令提示輸入
-VBARUN,用project!module.macro的格式輸入巨集名稱 - 從 LISP 呼叫:
(vl-vbaload "mytools.dvb")載入專案,(vl-vbarun "mytools.dvb!utilities.selectcircles")執行巨集 - 啟動時自動執行:專案存成 acad.dvb 放在支援檔搜尋路徑,裡面建立名為 AcadStartup 的巨集;每次開始新的圖面階段作業,AutoCAD 都會搜尋並載入 acad.dvb
從 AutoCAD 2014 起,自訂程式要能在安全模式下運作。SECURELOAD 系統變數(初始值 1)也管 DVB 檔: 設為 1 時,從可信任位置(TRUSTEDPATHS)以外載入會先跳出警告;設為 2 時只能從可信任位置載入。 加入可信任位置的方式見 AutoCAD 外掛程式跳出安全性警告怎麼辦。 公司很多台電腦都要用同一支 VBA 巨集時,每一台都要裝對應版本的模組,換 AutoCAD 版本時也要跟著換裝。
舊的 VBA 巨集,升級後不能用的原因
Autodesk 2025 說明〈關於 VBA 和 ActiveX 的相容性〉寫明:移轉到最新版本時,並非所有 VBA 專案都可以順利運作, 有些程式碼是寫成針對特定的 AutoCAD 或資源庫版本。換版本後跳錯誤,我會先看下面三件事:
- 參考的程式庫找不到:專案用到的程式庫在這台電腦上找不到時,VBA 編輯器的「參考」對話方塊(Tools > References) 會在那一項前面標示 MISSING,要解析所有遺失的參考後程式才能執行。AutoCAD 類型資源庫的檔名跟著版本走, 例如 AutoCAD 2025 是 acax25、2021 到 2024 是 acax24、2019 與 2020 是 acax23
- 32 位元元件與宣告:2020 起的 VBA 模組只有 64 位元,而 64 位元的程序不能載入 32 位元的二進位檔。 Microsoft 說明 64 位元 VBA 的文件(以 Office 為例,講的是 64 位元 VBA 本身的規則)提到兩點:舊的 32 位元 ActiveX 控制項, 例如 MSComCtl 裡的樹狀檢視、進度條,不能在 64 位元環境使用,要找替代方案;呼叫 Windows API 的 Declare 陳述式要加上 PtrSafe, 指標與控制代碼也要改用 LongPtr
- 檔案不在可信任位置:AutoCAD 2014 起的安全載入機制,見上一節
原始程式碼還在,就可以依上面的原因逐一修改後繼續使用;原始碼遺失的話,只能重新開發。
要做新工具,該選哪一種
- 先確認是不是 LT:LT 能用的是指令巨集、腳本,以及 LT 2024 起(Windows 版)的 LISP;動作錄製器、VBA、.NET 都不行
- 步驟固定、不需要判斷:先試指令巨集;用完整版 AutoCAD for Windows 的話,也可以試動作錄製器,成本最低
- 要依圖面內容判斷、跳出設定對話框:LISP 是比較直接的選擇,部署也簡單
- 公司已經有大量 VBA 程式:可以延續使用,但要把「每台電腦裝模組」與日後的維護一起考慮進去
- 多人部署、長期維護、要整合其他系統:我通常會評估 .NET 外掛,安裝與版本管理比較好控制
外掛程式的安裝與版本相容可以參考 AutoCAD 外掛程式怎麼安裝?; 想把重複的出圖、編號、轉檔做成工具,可以看 AutoCAD 二次開發・LISP 外掛與 AutoCAD 批次出圖工具客製。
參考資料(AutoCAD 2025 說明):關於指令巨集字串、關於指令巨集中的特殊控制字元、關於暫停巨集以便使用者輸入、關於在巨集中使用 AutoLISP、自訂指令、關於動作巨集、關於指令腳本、關於使用 VBA 開發應用程式、載入或卸載 VBA 專案、執行 VBA 巨集、關於 VBA 和 ActiveX 的相容性、關於支援的程式設計介面
其他參考:Autodesk:Download the Microsoft VBA Module for AutoCAD、Microsoft Learn:32 位元與 64 位元版本 Office 之間的相容性、64 位元 Visual Basic for Applications 概觀、找不到專案或程式庫
常見問題
Q:AutoCAD 巨集指令裡的 ^C^C、分號、反斜線是什麼意思?
^C 相當於按 Esc,巨集開頭寫 ^C^C 是先取消執行中的指令(從標註指令回到指令提示要按兩次);分號(;)代表按 Enter;反斜線(\)代表暫停,讓使用者輸入值、指定點或選取物件。空格代表按空格鍵,指令前加底線(_)則讓巨集在不同語言版本都能執行。
Q:巨集裡要寫檔案路徑,反斜線怎麼辦?
路徑改用正斜線(/)當分隔符號,例如 D:/CAD/frame.dwg。Autodesk 說明寫明反斜線在巨集裡只能用來暫停等待輸入,不能拿來做其他用途。
Q:AutoCAD LT 可以用 VBA 嗎?
不行。AutoCAD LT 不支援 VBA。完整版 AutoCAD 一直都能用 AutoLISP,LT 則從 2024 起才可以(Windows 版)。指令巨集與腳本在 LT 可以使用;動作錄製器只有完整版 AutoCAD for Windows 有,LT 不能用。
Q:舊版錄的動作巨集(.actm)在新版不能播放怎麼辦?
AutoCAD 2024 和更早版本建立的 ACTM 檔,要先用「動作巨集管理員」對話方塊裡的選項移轉成 ACTMX 格式才能回放。移轉時檔案會先複製到 ACTRECPATH 系統變數指定的路徑,再轉換格式。
Q:執行 VBA 巨集前要先裝什麼?
目前版本的 AutoCAD 不會預設安裝 VBA。到 Autodesk 的 VBA 模組下載頁,選與 AutoCAD 版本相同的模組,關閉所有程式後執行下載的自解壓縮檔,依畫面指示完成安裝。
Q:舊版 AutoCAD 還下載得到 VBA 模組嗎?
2026 年 10 月查詢時,Autodesk 的下載頁列出 AutoCAD 2016 到 2027 的 VBA 模組:2016 到 2019 有 32 位元與 64 位元兩種,2020 起只有 64 位元。更早的版本不在這份清單上。