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

AutoCAD

AutoCAD LISP 怎麼用?.lsp 去哪找、怎麼載入、開圖自動載入

拿到一個 .lsp 檔,要怎麼在 AutoCAD 裡用?載入的方法有好幾種, 差別在於「只用這一次」還是「每次開圖都要能用」。以下先說明 LISP 是什麼、去哪找, 再依使用情境整理載入方式,以及 acad.lsp 和 acaddoc.lsp 的差別、沒有載入時怎麼查、中毒時怎麼處理。

內容依 Autodesk AutoCAD 2025 的繁體中文說明整理,以 Windows 版的完整 AutoCAD 為準; AutoCAD LT 從 2024 起也能載入 LISP,檔名不同的地方會另外標出。

本文目錄(11 節)

LISP 是什麼:.lsp、.fas、.vlx

在 AutoCAD 裡說的 LISP,指的是 AutoLISP,AutoCAD 內建的程式語言。 完整版 AutoCAD 內建 LISP 解譯器,可以在指令行直接輸入 AutoLISP 程式碼,也可以從檔案載入; 網路上、同事或廠商提供的 LISP 小工具,載入之後就會多出新的指令。AutoCAD LT 則是 2024 起才能載入 LISP, 能用的範圍見AutoCAD LT 能用 LISP 嗎?。

副檔名內容能不能用文字編輯器看
.lspAutoLISP 原始碼,文字檔可以,指令名稱與開頭的說明註解都看得到
.fas單一 LSP 檔編譯成的二進位檔不行
.vlx一個或多個 LSP、DCL(對話方塊)檔編譯成的集合,只有 Windows 版支援不行

三種格式都用下面的方法載入。.lsp 檔從 AutoCAD 2021 起可以存成 ASCII 或 Unicode, 2020 與更早的版本只支援 ASCII;檔案裡有中文提示文字時,要留意存檔的編碼。

LISP 去哪找:內建常式、Express Tools、網路與廠商

  • AutoCAD 本身:Autodesk 說明提到,有些標準的 AutoCAD 指令本身就是 AutoLISP 應用程式, 產品也附了許多有用的常式,知道怎麼載入並使用這些常式,有助於提升生產力。
  • Express Tools:完整版 AutoCAD 預設安裝就包含 Express Tools,在指令行輸入EXPRESSTOOLS 啟用,再按功能區上的「Express Tools」頁籤使用。這些工具免費, 但 Autodesk 不提供支援,只有英文版,也不支援雙位元字元。
  • 網路與協力廠商:說明也提到可以從網際網路或協力開發廠商下載 AutoLISP 應用程式。 來源不明的程式先看過程式碼再執行,檢查方式見下載來的 LISP,載入前先檢查。
  • 現成的不合用:圖框、圖層、檔名規則跟公司不一樣時,現成的 LISP 可能只解決一部分, 這時可以照公司的規則另外寫,見AutoCAD 二次開發・LISP 外掛程式。

方法一:APPLOAD 載入應用程式

最基本的方式,適合先試用一個 LISP:

  1. 在指令行輸入 APPLOAD,或按「管理」頁籤 →「應用程式」面板 →「載入應用程式」, 開啟「載入/卸載應用程式」對話方塊
  2. 找到 .lsp(或 .fas、.vlx)檔,選取後按「載入」
  3. 按「關閉」。LSP、FAS、VLX 會先排入佇列,關閉對話方塊時才載入

這種方式只對目前開啟的圖面有效,開另一張圖時需要重新載入。

方法二:直接拖曳檔案

從檔案總管把 .lsp 檔拖曳到 AutoCAD 的繪製區,也可以載入, 效果和 APPLOAD 相同,一樣只對目前圖面有效。適合臨時測試。

每次啟動都自動載入:啟動套件

常用的 LISP 不想每次手動載入,可以加到 APPLOAD 的「啟動套件」,每次啟動 AutoCAD 時就會自動載入:

  1. 輸入 APPLOAD 開啟「載入/卸載應用程式」對話方塊
  2. 在「啟動套件」區塊按「內容」
  3. 在「啟動套件」對話方塊按「加入」,選擇要自動載入的 .lsp 檔
  4. 關閉對話方塊
  • 加入啟動套件的檔案,必須放在「可信任的位置」裡的資料夾(設定方式見後面的〈公司統一設定〉)
  • 啟動套件要在每部電腦上各自設定,換電腦或重灌後需要重新加入;很多人要用時,改用後面的 acaddoc.lsp 比較好管理

acad.lsp 和 acaddoc.lsp 差在哪、放在哪裡

除了啟動套件,AutoCAD 還會自動載入兩個使用者自己建立的啟動檔:acad.lsp 和 acaddoc.lsp。 Windows 版 AutoCAD LT 對應的檔名是 acadlt.lsp 和 acadltdoc.lsp; Mac 版 AutoCAD 一樣用 acad.lsp、acaddoc.lsp,Mac 版 AutoCAD LT 則不會自動載入這些檔案。

acad.lsp(LT 是 acadlt.lsp)acaddoc.lsp(LT 是 acadltdoc.lsp)
什麼時候載入預設只在 AutoCAD 啟動時載入一次;ACADLSPASDOC 系統變數設為 1 時,每新建或開啟一張圖都重新載入每次新建或開啟圖面都載入,不受 ACADLSPASDOC 影響
裡面定義的函數與變數只能在第一張圖使用每張圖都能用
AutoCAD 去哪裡找啟動時在支援檔搜尋路徑中找開圖時依資源庫路徑的順序找(每個圖面資料夾可以放不同的 acaddoc.lsp)
適合放什麼只需要在 AutoCAD 啟動時做一次的事每張圖都要能用的 LISP 工具
  • 這兩個檔案 AutoCAD 都沒有附,要自己建立、自己維護
  • 不要修改 AutoCAD 內附、檔名帶版本號的 acad2025.lsp、acad2025doc.lsp(LT 是 acadlt2025.lsp、acadlt2025doc.lsp)。這些是 Autodesk 提供的版本專用定義,會在 acad.lsp、acaddoc.lsp 之前載入
  • 在啟動檔裡用 command 函數呼叫指令,只能寫在 defun 裡面。開圖後要馬上執行的指令, 說明的做法是寫在 S::STARTUP 函數裡;要附加到別的程式已經定義的 S::STARTUP,必須用 defun-q 定義

我的建議是:每張圖都要用的工具寫進 acaddoc.lsp,acad.lsp 只留給啟動時做一次的事。 Autodesk 說明也提到,可以把要在所有圖面使用的常式從 acad.lsp 移到 acaddoc.lsp。

公司統一設定:acaddoc.lsp 與支援路徑

部門裡很多人要用同一套 LISP 時,逐台設定啟動套件很麻煩,可以改用 acaddoc.lsp: 把它和共用的 LISP 放進同一個資料夾,再把資料夾加進支援檔搜尋路徑,每張圖開啟時都會載入。

  1. 把共用的 LISP 集中放在一個資料夾(例如公司伺服器上的共用資料夾)
  2. 到「選項」→「檔案」→「支援檔搜尋路徑」加入這個資料夾
  3. 同樣把資料夾加入「可信任的位置」,避免安全性警告;可信任的位置要重新啟動 AutoCAD 才生效
  4. 在資料夾中建立 acaddoc.lsp,每個要載入的檔案寫一行。加上載入失敗時要顯示的訊息, 某個檔案出錯時指令行會告訴你是哪一個,其他檔案也會繼續載入:
(princ (load "批次列印.lsp" "\n批次列印.lsp 沒有載入"))
(princ (load "圖框工具.lsp" "\n圖框工具.lsp 沒有載入"))
(princ)
  • 共用的 LISP 不在支援檔搜尋路徑裡時,load 要寫完整路徑,資料夾之間用一個斜線 /或兩個反斜線 \\ 分隔,例如 (load "d:/CAD/lisp/批次列印.lsp"); 單一反斜線在 AutoLISP 中有特殊意義,不能當分隔符號
  • AutoCAD 依支援檔搜尋路徑的順序尋找,同名檔案在好幾個資料夾都有時,只用找到的第一個
  • AutoCAD LT(2024 起)對應的檔名是 acadltdoc.lsp

更新工具時只要替換共用資料夾裡的檔案,所有人重新開圖就會用到新版本。

載入之後,指令要怎麼執行

LISP 載入後,在指令行輸入程式定義的指令名稱即可執行。指令名稱不一定跟檔名相同, 用文字編輯器打開檔案,找到 (defun c: 後面的文字,例如 (defun c:BPLOT, 就在指令行輸入 BPLOT。

常用的工具也可以在自訂使用者介面(CUI)中做成功能區按鈕或工具列按鈕,點一下就執行; 按鈕裡的指令巨集怎麼寫,見AutoCAD 巨集指令怎麼寫。

下載來的 LISP,載入前先檢查

LISP 可以從網路或協力廠商取得,但它能直接執行指令、修改圖面,來源不明的檔案可能夾帶惡意程式碼。 Autodesk 說明的建議是:未知的 AutoLISP 檔,一律先檢查程式碼再執行。

  • .lsp 先用文字編輯器打開:分號 ; 開頭的行是註解,有寫用途、用法與作者的話先讀過;defun c: 後面是指令名稱。看不懂、也問不到作者的程式,不要直接載入正式的圖面
  • .fas、.vlx 看不到內容:這兩種是編譯過的檔案,只用信得過的來源提供的版本
  • 跳出「檔案載入 - 安全性考量訊息」:表示檔案不在可信任的位置。確定可以信任才按「載入」,不確定就按「不要載入」
  • 確認沒問題再放進固定資料夾:把程式放在專用的資料夾、和圖檔分開,再加入「可信任的位置」; Autodesk 建議這個資料夾設成唯讀
  • 留意跟圖檔一起寄來的 acad.lsp、acaddoc.lsp:這類檔案可能被改過,處理方式見下一節

安全性警告由 SECURELOAD 系統變數控制:初始值 1 是可信任的位置以外的檔案先警告, 2 是只載入可信任的位置裡的檔案,0 是不警告直接載入(說明不建議使用)。 也可以用 SECURITYOPTIONS 指令開「安全選項」對話方塊一起設定。

acad.lsp、acaddoc.lsp 中毒怎麼處理

acad.lsp、acaddoc.lsp 會被 AutoCAD 自動載入,所以惡意程式也會利用這兩個檔名。Autodesk 說明舉的例子是: 和圖面一起包在 ZIP 檔裡的專案檔案,可能含有被改過的 acad.lsp、acaddoc.lsp,以及含惡意程式碼的 FAS、VLX 檔; 說明也提到,許多病毒會在 acad.mnl 裡加一行,讓自己跟著被載入。

懷疑已經中毒時,Autodesk 說明〈修復惡意程式碼的攻擊〉列的一般步驟是:

  1. 執行防毒軟體掃描
  2. 用 /safemode 指令行切換啟動 AutoCAD。這時 Express Tools 和大多數指令都無法使用, 只在清理期間暫時這樣開
  3. 找出並移除所有惡意程式碼。說明提到,以系統管理員身分執行又關閉「使用者帳戶控制」(UAC) 時會比較難處理, AutoCAD 的安裝資料夾也可能受到影響
  4. 修復受影響的檔案
  5. 把 SECURELOAD 系統變數設為 1 或 2
  6. 把 TRUSTEDPATHS 系統變數設為專用、唯讀的資料夾
  7. 從啟動參數移除 /safemode

平常讓 LEGACYCODESEARCH 系統變數保持 0,AutoCAD 就不會從「開始」資料夾和圖面所在的資料夾尋找並載入這類檔案; 收到和圖檔放在一起的 acad.lsp、acaddoc.lsp,不要放進支援路徑或可信任的位置,先用文字編輯器打開看過。

載入失敗時先檢查這幾點

跳出安全性警告,或完全載入不了

AutoCAD 會限制從不受信任的資料夾載入程式。請把 LISP 所在資料夾加到「選項」→「檔案」→「可信任的位置」, 再重新啟動 AutoCAD。詳細說明見AutoLISP 跑不動?錯誤訊息對照。

acaddoc.lsp 沒有載入,或只載入一半

  1. acaddoc.lsp 要放在支援檔搜尋路徑裡的資料夾,資料夾也要加入可信任的位置;SECURELOAD 為 2 時,不在可信任的位置的 LSP、FAS、VLX 都不會載入
  2. 啟動檔載入時只要發生 AutoLISP 錯誤,檔案剩下的部分就會被略過;說明提到,load 指定的檔案不存在或不在路徑中, 就會造成這種錯誤。每行 load 都加上失敗時的訊息(寫法見上面的範例),指令行會顯示是哪個檔案沒載入,後面的檔案繼續載入
  3. command 函數只能寫在 defun 裡面
  4. acaddoc.lsp 是開圖時才找、才載入,改完要重新開圖;acad.lsp 預設只在啟動時載入,改完要重新啟動 AutoCAD
  5. AutoCAD LT 的檔名是 acadltdoc.lsp,寫成 acaddoc.lsp 不會載入

改了 LSP,載入的卻還是舊版

同一個資料夾裡有同名的 .lsp、.fas、.vlx,而 (load "檔名") 沒寫副檔名時, Autodesk 的說明有兩種寫法:2025 繁體中文說明寫的是載入修改時間最新的那一個, 英文版的 load 函數參考則寫依 .vlx、.fas、.lsp 的順序找,找到就停。 不論哪一種,資料夾裡留著舊的編譯檔,都可能比剛改好的 .lsp 先被載入。 載入時寫完整檔名(含副檔名),或把舊的編譯檔移走。支援檔搜尋路徑的不同資料夾裡有同名檔案時,也只會用找到的第一個。

AutoCAD LT 可以載入嗎?

AutoCAD LT 2024 以後可以載入 LISP,更早的 LT 版本不行;LT 開圖自動載入用的檔名是 acadltdoc.lsp。 兩者能用的範圍有差異,見AutoCAD LT 能用 LISP 嗎?。

參考資料(Autodesk AutoCAD 2025 說明):關於 AutoLISP 應用程式、關於載入 AutoLISP 應用程式、關於自動載入和執行 AutoLISP 常式概述、關於載入啟動檔案時 AutoLISP 出錯概述、關於 AutoLISP 相容性、「載入/卸載應用程式」對話方塊、「檔案」頁籤 (「選項」對話方塊)、使用 Express Tools、關於 AutoCAD Express Tools、關於安全性及病毒防護、修復惡意程式碼的攻擊、SECURELOAD (系統變數)、load (AutoLISP)(英文)

常見問題

Q:AutoCAD 的 LISP 是什麼?.lsp、.fas、.vlx 有什麼不同?

LISP 指 AutoLISP,是 AutoCAD 內建的程式語言,載入 LISP 檔就會多出新的指令。.lsp 是原始碼文字檔,可以用文字編輯器打開;.fas 是單一 LSP 檔編譯成的二進位檔;.vlx 是一個或多個 LSP 與 DCL(對話方塊)檔編譯成的集合,只有 Windows 版支援。三種都可以用 APPLOAD 載入。

Q:為什麼 LISP 每次開新圖都要重新載入?

用 APPLOAD 或拖曳載入時,只對目前開啟的圖面有效。要每次啟動 AutoCAD 都自動載入,把檔案加入 APPLOAD 的「啟動套件」;部門多人共用時,可以在支援檔搜尋路徑放一個 acaddoc.lsp,每張圖開啟時都會載入(AutoCAD LT 是 acadltdoc.lsp)。

Q:acad.lsp 和 acaddoc.lsp 有什麼不同?

acad.lsp 預設只在 AutoCAD 啟動時載入一次,裡面定義的函數與變數只能在第一張圖使用;acaddoc.lsp 每次新建或開啟圖面都會載入,每張圖都能用。ACADLSPASDOC 系統變數設為 1 時,acad.lsp 也會隨每張圖重新載入。兩個檔案 AutoCAD 都沒有附,要自己建立並放在支援檔搜尋路徑裡;AutoCAD LT 對應的檔名是 acadlt.lsp 和 acadltdoc.lsp。

Q:LISP 加入啟動套件,為什麼沒有自動載入?

加入「啟動套件」的檔案必須放在「可信任的位置」裡的資料夾(TRUSTEDPATHS 系統變數)。到「選項」→「檔案」→「可信任的位置」加入檔案所在的資料夾,重新啟動 AutoCAD 後再試。

Q:載入成功了,輸入指令卻顯示「不明的指令」?

先確認輸入的名稱和程式定義的指令名稱相同:用文字編輯器打開 LSP 檔,找 defun c: 後面的名稱,那才是要輸入的指令。另外也確認指令行在載入時沒有出現錯誤訊息。

Q:acad.lsp、acaddoc.lsp 中毒怎麼辦?

Autodesk 說明的一般步驟是:先用防毒軟體掃描;用 /safemode 指令行切換啟動 AutoCAD(這時 Express Tools 和大多數指令無法使用);找出並移除惡意程式碼、修復受影響的檔案;把 SECURELOAD 設為 1 或 2、TRUSTEDPATHS 設為專用的唯讀資料夾;最後從啟動參數移除 /safemode。平常讓 LEGACYCODESEARCH 保持 0,AutoCAD 就不會從圖面所在的資料夾找這類檔案來載入。

Q:LISP 載入之後可以卸載嗎?

不行,「載入/卸載應用程式」對話方塊無法卸載 LISP 應用程式。用 APPLOAD 或拖曳載入的只對當時那張圖有效;不想再自動載入的話,從「啟動套件」或 acaddoc.lsp 裡移除那個檔案。

LINE諮詢開發需求