AutoCAD
AutoCAD LT 能用 LISP 嗎?2024 起怎麼載入、哪些不能用
完整版 AutoCAD 很早就內建 AutoLISP,載入 .lsp、.fas 都不是問題(.vlx 只有 Windows 版支援)。 AutoCAD LT 以前不能跑 LISP,從 Windows 版的 LT 2024 開始可以了,但能用的範圍和完整版還是不一樣。
以下依 Autodesk AutoCAD 2025 的說明,整理 LT 怎麼載入 LISP、哪些函式不能用,以及讀寫 Excel 的替代做法。 LT 的已知限制只有英文版說明,這部分依英文說明翻譯整理。
本文目錄(7 節)
先講結論
- 完整版 AutoCAD:Windows 版、Mac 版都內建 AutoLISP,能載入 .lsp、.fas;.vlx 只有 Windows 版支援
- Windows 版 AutoCAD LT 2024 以後:可以載入並執行 AutoLISP,也能顯示 DCL 對話方塊
- AutoCAD LT 2023 以前:不支援 AutoLISP
- Mac 版 AutoCAD LT:不支援 AutoLISP
- 仍然不能用:啟動、操作 Excel、Word 等其他程式的函式,與 LT 沒有的物件(如 3D 實體)相關的函式, Visual LISP 編輯器與 VS Code 除錯,以及 ObjectARX、.NET、VBA
AutoCAD LT 怎麼載入 LISP
步驟和完整版差不多,以下依 Autodesk 的 LT AutoLISP 說明整理:
- 把 LISP 放在固定的資料夾,例如網路磁碟機上的共用資料夾。Autodesk 建議把這個資料夾設成唯讀,避免檔案被意外修改
- 在繪製區按右鍵 →「選項」→「檔案」頁籤,把資料夾加入「支援檔搜尋路徑」,再加入「可信任的位置」; 跳出「可信任的檔案搜尋路徑 - 安全性考量」時按「繼續」
- 按「管理」頁籤 →「應用程式」面板 →「載入應用程式」(或輸入
APPLOAD),選檔案後按「載入」,再按「關閉」 - 在指令行輸入程式裡
c:後面的名稱執行
要每次自動載入,可以用 APPLOAD 的「啟動套件」(在「啟動套件」區段按「內容」→「加入」), 或在支援檔搜尋路徑放一個 acadltdoc.lsp。LT 認的檔名是 acadlt.lsp 和 acadltdoc.lsp, 不是完整版的 acad.lsp、acaddoc.lsp。說明也列了拖放、AutoLISP 的 load 函數與外掛程式套件等載入方式。
安全性設定在「選項」→「系統」頁籤 →「安全性」面板 →「安全選項」:可以設定安全性等級(SECURELOAD)、 可信任的資料夾(TRUSTEDPATHS)、搜尋可執行檔的位置(LEGACYCODESEARCH), 以及 acadlt.lsp 只在啟動時載入還是每張圖都載入(ACADLSPASDOC)。 APPLOAD、啟動套件與 acaddoc.lsp 的完整說明見AutoCAD LISP 怎麼用?。
LT 2024 起可以用的部分
- 載入
.lsp、.fas、.vlx格式的程式 - 直接使用內建的 AutoCAD 指令和系統變數
- 直接在圖面資料庫中建立或修改物件(限 LT 支援的物件,見下一節)
- 在指令行或用 DCL(對話方塊控制語言)寫的對話方塊提示使用者輸入
- 大部分
vl-、vla-、vlax-、vlr-開頭的函式
Autodesk 說明提到,LT 可以執行過去近 40 年開發的大多數 AutoLISP 程式,只是有一些限制。
LT 仍然不能用的部分
啟動、操作其他程式的函式
說明寫的是:LT 不支援使用第三方的自動化程式庫(automation libraries)。列出的不支援函式有:
vlax-create-objectvlax-get-objectvlax-get-or-create-objectvlax-import-type-libraryvla-GetInterfaceObject
這些就是 LISP 用來啟動或連到 Excel、Word 等其他程式的函式,所以在 LT 不能用 LISP 直接操作 Excel。
LT 本身沒有的物件
- 建立或修改 3D 實體、曲面、螺旋、材料、複線(multiline)等只有完整版能建立之物件的 VLA 函式,不支援
entmake、entmakex、entmod只能建立、修改 LT 支援的物件- ActiveX 不能建立 3D 網格、曲面與實體,修改 3D 物件的支援也有限;
PreferencesProfiles物件還在,但方法與屬性都移除了,因為 LT 不支援設定檔
開發與部署
- Windows 版 LT 沒有 Visual LISP 整合開發環境(VL IDE),也沒有
VLIDE、VLISP指令 - 不支援在 Visual Studio Code 用 AutoLISP 延伸除錯,要除錯得在完整版 AutoCAD 上做
- 可以載入編譯過的 .fas、.vlx,但編譯只能在 Windows 版的 AutoCAD 做
- 和 CUIx 同名的 MNL 檔不會自動載入,要從別的 LISP 檔用
load載入 - 自訂 ObjectARX、.NET 程式提供的 AutoLISP 函式不能用;ObjectARX、Managed .NET、VBA 本身在 LT 也都不支援
- AutoCAD 2025 新增的
acet-load-expresstools(用來初始化 Express Tools 函式)只有 AutoCAD for Windows 有。 用到acet-開頭函式的 LISP,先在 LT 上測試
完整版與 LT 對照表
| 項目 | AutoCAD 完整版 | AutoCAD LT |
|---|---|---|
| AutoLISP | Windows、Mac 都內建 | Windows 版 2024 起;Mac 版不支援 |
| 載入 .lsp、.fas | 可以 | 可以 |
| 載入 .vlx | Windows 版可以 | 可以 |
| DCL 對話方塊 | 可以 | 可以 |
| vl-、vla-、vlax-、vlr- 函式 | Windows 版可以(vla-、vlax-、vlr- 只支援 Windows) | 大部分可以 |
| 啟動、操作 Excel、Word 等其他程式 | Windows 版可以 | 不可以 |
| 3D 實體、曲面等相關函式 | Windows 版可以 | 不可以 |
| Visual LISP 編輯器(VL IDE) | Windows 版可以(LISPSYS 設為 0;已淘汰,之後的版本會移除) | 不提供 |
| VS Code 的 AutoLISP 延伸除錯 | 可以(LISPSYS 設為 1 或 2) | 不支援 |
| 把 .lsp 編譯成 .fas、.vlx | Windows 版可以 | 不可以(只能載入) |
| 同名 MNL 檔自動載入 | 可以 | 不會(可用 load 載入) |
| ObjectARX、.NET、VBA | Windows 版都可以;Mac 版只有 ObjectARX | 不支援 |
LISPSYS 的初始值是 1,也就是以 VS Code 為預設編輯器;設為 0 會回到 AutoCAD 2020 與更早版本的行為, 只有 Windows 版支援。改了 LISPSYS 要重新啟動 AutoCAD 才生效。
需要讀寫 Excel 怎麼辦
LT 不能直接操作 Excel,但如果只是要「匯出料表」或「從清單讀入資料」, 可以改用 CSV 文字檔:LISP 用檔案函式(open、read-line、write-line)讀寫, Excel 再開啟或另存成 CSV。這些檔案函式不在 Autodesk 列出的 LT 限制裡。
;; 把資料寫成 CSV(Excel 可直接開啟)
(setq f (open "D:\\發圖\\料表.csv" "w"))
(write-line "圖號,品名,數量" f)
(write-line "A-1001,支架,2" f)
(close f)CSV 內含中文時,要注意存檔編碼與 Excel 開啟時的編碼設定是否一致,否則可能出現亂碼。 AutoCAD 2021 起,open 可以多給一個參數指定讀寫用的字元編碼;沒給時,檔案視為多位元組字元集(MBCS),和舊版一樣。
拿到一支 LISP,怎麼判斷 LT 能不能用
- 先確認產品:完整版 AutoCAD 都能載入;LT 要 Windows 版 2024 以後,Mac 版 LT 不行
- 用文字編輯器搜尋
vlax-create-object、vlax-get-object、vlax-get-or-create-object、GetInterfaceObject,有的話就是在啟動或連到其他程式 - 搜尋是否用 VLA 函式建立 3D 實體或曲面,或用 entmake 建立 LT 沒有的物件
- 搜尋
acet-開頭的函式(Express Tools)與vl-vbaload、vl-vbarun(VBA) - 一支程式要同時給完整版和 LT 用時,用
PROGRAM系統變數判斷,LT 會傳回 acadlt。 Autodesk 的範例寫成(/= (strcase (getvar "PROGRAM") T) "acadlt")成立時,才載入只有完整版能用的部分 - 最後仍以實際在 LT 上載入測試為準;跑出錯誤訊息時,可以對照AutoLISP 跑不動?的錯誤訊息整理
參考資料(Autodesk AutoCAD 2025 說明):AutoLISP(AutoCAD LT 新功能)、AutoLISP (AutoCAD LT 2024)、關於自動載入和執行 AutoLISP 常式概述、關於支援的程式設計介面、關於 AutoLISP 應用程式、LISPSYS (系統變數)、What's New or Changed with AutoLISP(英文)、AutoLISP Extensions Reference(英文)、vlr-object-reactor(英文)
常見問題
Q:完整版 AutoCAD 也要 2024 才能用 LISP 嗎?
不用。完整版 AutoCAD 很早就內建 AutoLISP,Windows 版與 Mac 版都能載入 .lsp、.fas(.vlx 只有 Windows 支援)。2024 這個版本分界只適用於 Windows 版的 AutoCAD LT。
Q:AutoCAD LT 2023 以前的版本可以用 LISP 嗎?
不行。Autodesk 說明寫的是 AutoLISP 不是新功能,但 AutoCAD LT 從 2024 版才開始提供;Mac 版的 AutoCAD LT 也不能用 AutoLISP。
Q:AutoCAD LT 怎麼載入 LISP?
按「管理」頁籤 →「應用程式」面板 →「載入應用程式」(或輸入 APPLOAD),選 .lsp 檔後按「載入」,再在指令行輸入程式裡 c: 後面的指令名稱。檔案所在的資料夾要加入「選項」→「檔案」頁籤的「支援檔搜尋路徑」與「可信任的位置」;要每張圖自動載入,用 APPLOAD 的「啟動套件」,或在支援檔搜尋路徑放一個 acadltdoc.lsp。
Q:在完整版寫好的 LISP,搬到 LT 一定能用嗎?
不一定。用到 Autodesk 列出的 LT 限制就要修改,例如 vlax-create-object 這類啟動其他程式的函式、建立 3D 實體或曲面的 VLA 函式、自訂 ObjectARX 或 .NET 程式提供的 LISP 函式。沒有用到這些的程式,也要在 LT 上實際載入測試。