跳到主要內容
Hai 二次開發工作室

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退格鍵
^ITab
^MEnter
^O正交開關
^PMENUECHO 開關
^Q不在指令行歷程顯示巨集的提示與輸入
^R指令版本管理開關;有些指令要靠它,舊版寫的巨集才能在新版正常運作
^T數位板開關,相當於 Ctrl+T(僅限 Windows)
^V變更目前的視埠
^Z空字元,抑制巨集結尾自動加上的空格

直接從鍵盤按的時候,有些組合的作用不一樣:^Q 是退出、^R 是循環檢視視埠、^V 是從剪貼簿貼上。上表只適用於寫在巨集裡的情況。

把巨集做成按鈕

  1. 按「管理」頁籤 →「自訂」面板 →「使用者介面」,開啟「自訂使用者介面」(CUI)編輯器
  2. 在「自訂」頁籤的「指令清單」窗格,按「建立新指令」
  3. 在「性質」窗格輸入「名稱」與「描述」(描述會顯示在狀態列或工具提示),在「巨集」方塊輸入巨集,按「套用」
  4. 把這個指令從「指令清單」拖曳到「<檔名> 中的自訂」窗格裡的功能區面板、工具列或下拉式功能表, 或按右鍵「複製」後在目標上按右鍵「貼上」,再按「套用」

既有指令的巨集,也是在「性質」窗格的「巨集」方塊修改。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 下載頁的安裝方式:

  1. 在下載頁選擇與 AutoCAD 版本相同的模組
  2. 關閉所有程式
  3. 在 Windows 檔案總管連按兩下下載的自解壓縮 EXE 檔,解壓縮到自選或預設的位置
  4. 依畫面上的指示完成安裝

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 位元。更早的版本不在這份清單上。

LINE諮詢開發需求