自動化・效能最佳化・協作 - 從 AutoLISP 到 Autodesk Docs
概述
若重複相同作業,可透過 AutoLISP・巨集・指令碼加以自動化。
再搭配 PURGE/AUDIT/OVERKILL 等 整理指令讓圖面保持輕量,並透過 Autodesk Docs・Trace・Share 等協作功能與團隊同步,個人生產力可提升 2~3 倍,團隊工作流程則可提升數倍。
> 基本快捷鍵與編輯指令請見 01-shortcuts.md,圖塊/Xref 運用請見 03-blocks-xref.md。
1. AutoLISP — AutoCAD 的內建腳本語言
AutoLISP 是 AutoCAD 自 1986 年起內建的 LISP 衍生語言。副檔名 .lsp(原始碼)、.fas/.vlx(編譯後)。
1.1 載入方式
| 方式 | 說明 |
|---|---|
APPLOAD | 於對話方塊選擇檔案 |
(load "C:/my.lsp") | 直接於命令列載入 |
| Startup Suite | APPLOAD → Contents → 登錄為自動載入清單 |
acaddoc.lsp | 每次開啟圖面時執行 |
acad.lsp | AutoCAD 啟動時執行一次 |
提示: 個人與團隊公用程式不要全部塞進 acaddoc.lsp,分別登錄到 Startup Suite 對版本控管與除錯較有利。
1.2 基本結構 — Hello World
(defun c:HELLO ()
(princ "\nHello, AutoCAD!")
(princ)
)
defun:函式定義。c:前綴:可從命令列以HELLO呼叫。princ:輸出函式。最後的(princ)是 慣例性呼叫,用於避免回傳值(nil)顯示於命令列。
1.3 常用基本函式
| 函式 | 用途 |
|---|---|
getpoint | 取得使用者輸入的點座標 |
getdist | 取得距離(兩點或數值) |
getreal / getint | 取得實數・整數輸入 |
getstring | 取得字串輸入 |
getangle / getorient | 取得角度輸入 |
entsel | 選取單一物件 |
ssget | 建立選擇集(支援篩選) |
command | 呼叫 AutoCAD 內建指令 |
entget / entmod | 讀寫物件的 DXF 資料 |
assoc / cons / subst | 關聯串列操作 |
mapcar / foreach | 串列走訪 |
1.4 實用常式範例 — 「鎖定所選物件的圖層」
(defun c:LL ( / ss i ent lay)
(princ "\nSelect objects to lock their layers: ")
(setq ss (ssget))
(if ss
(repeat (setq i (sslength ss))
(setq ent (ssname ss (setq i (1- i))))
(setq lay (cdr (assoc 8 (entget ent))))
(command "_.LAYER" "_LO" lay "")
)
)
(princ)
)
載入後於命令列輸入 LL,所選物件所屬的 圖層全部被鎖定。關鍵在於 DXF 代碼 8 存放實體的圖層名稱。
1.5 Visual LISP・COM・.NET
VLIDE:Visual LISP 整合式開發環境,內含除錯工具與主控台。- 執行
(vl-load-com)後即可透過(vla-*)函式群操作 ActiveX 物件模型,自動化能力更強。 - .NET(C#/VB):以
NETLOAD載入 DLL 部署公司內部工具,屬於專業開發人員領域。 - ObjectARX:以 C++ 為基礎,是 第三方外掛的標準開發環境。
提示: 一般使用者其實不必特地學 .NET。只要將同事寫的 .lsp 10 個載入 acaddoc.lsp,體感生產力就能翻 2 倍。
2. 指令巨集(Command Macro)
在 CUI 的「Macro」欄位以字串撰寫指令序列,並綁定至工具列・功能區按鈕或鍵盤快捷鍵。
2.1 語法
| 符號 | 意義 |
|---|---|
^C^C | 按兩次 Esc(中斷進行中的指令) |
_ | 底線。強制使用英文指令(相容多國語系) |
. | 忽略使用者自訂,使用原始指令 |
; 或換行 | Enter |
\ | 等待使用者輸入 |
* | 指令自身重複 |
2.2 範例
將目前圖層切換為 DIMS 後開始線性標註:
^C^C_-LAYER;S;DIMS;;_DIMLINEAR
於 Paper space 原點插入公司標準圖塊 TB-A3:
^C^C_-INSERT;TB-A3;0,0;1;1;0
提示: 巨集前加上 * 即可 讓指令自動重複,適合連續插入或連續加註。
3. SCR 指令碼與批次執行
3.1 SCR 檔
.scr 是 將命令列輸入逐行記錄的純文字檔。
ZOOM EXTENTS
PURGE ALL * N
AUDIT Y
QSAVE
可透過 SCRIPT 指令載入後執行,或於 AutoCAD 啟動時以 /b 選項指定。
3.2 大量 DWG 批次處理
- ScriptPro 2.0(Autodesk 免費):結合 SCR 與 DWG 清單進行 批次執行。
- accoreconsole.exe(AutoCAD 2013+):無 GUI,於背景開啟 DWG 並執行 SCR。是於伺服器夜間處理 數千個 DWG 的標準做法。
提示: 將 定期維護 SCR(AUDIT → -PURGE A * N → SAVE)每週對所有 DWG 執行,可預防檔案肥大與損毀徵兆。
注意: SCR 內部若跳出對話方塊(FILEDIA=1 狀態),自動化會停止。指令碼開頭應將 FILEDIA 0・CMDDIA 0 切換為非對話模式,結束時 務必還原。
4. 效能最佳化 — 讓圖面保持輕量
4.1 PURGE
PURGE(PU)移除 未使用的定義(圖層・圖塊・線型・文字型式・標註型式・材質等)。
| 選項 | 說明 |
|---|---|
| 預設對話方塊 | 勾選項目 |
-PURGE | 命令列自動化 |
-PURGE R | 清理 Registered Applications(Regapps) |
| Purge nested items | 包含圖塊內的圖塊 |
| Purge zero-length geometry | 零長度線・空字串 |
提示: 若 PURGE 一次未能刪除,代表該定義 仍被其他定義參照。將 -PURGE A * N 重複 2~3 次通常可清理乾淨。
4.2 AUDIT / RECOVER / RECOVERALL
AUDIT:檢查目前圖面的 完整性。以「Fix errors? Y」自動修正。RECOVER:以 復原模式開啟損毀 DWG。用於一般 OPEN 無法開啟的檔案。RECOVERALL:對目前 DWG 及 所有 Xref 整體復原。
提示: 無法開啟 DWG 時的順序為 (1) DWG TrueView 等檢視器 → (2) RECOVER → (3) 還原 .bak 檔 → (4) 自動儲存 .sv$(SAVEFILEPATH)→ (5) 商用復原服務。
4.3 OVERKILL
OVERKILL 將 重疊於相同位置的重複物件或 同一直線上的分段線整併為一條。
- 以圖層・顏色・線型 篩選。
- Numeric fuzz(公差):略微偏移的物件也視為相同。
- Optimize polylines:簡化連續的直線線段。
- Combine co-linear objects:合併同線上的物件。
提示: PDF→DWG 轉換・掃描描圖的成果通常含 數千條重疊線,OVERKILL 是 第一順位整理工具。
4.4 系統變數建議值
| 變數 | 預設 | 建議 | 說明 |
|---|---|---|---|
SAVETIME | 10 | 5 | 自動儲存週期(分鐘) |
ISAVEBAK | 1 | 1 | 產生 .bak 備份 |
INDEXCTL | 0 | 3 | Xref 部分載入最佳化 |
WHIPTHREAD | 1 | 3 | 多執行緒顯示 |
VTENABLE | 15 | 0 | 關閉縮放・平移動畫(加速) |
BACKGROUNDPLOT | 2 | 0~2 | 大量 Publish 以 0 較安全 |
4.5 大型圖面疑難排解
| 症狀 | 可能原因 | 處置 |
|---|---|---|
| 開啟緩慢 | 眾多 Xref・巨大影像 | INDEXCTL ↑、影像解析度 ↓ |
| 儲存緩慢 | Drawing History 啟用中 | 關閉 History、-PURGE |
| 選取延遲 | 重複物件 | OVERKILL |
| 剖面線緩慢 | 過密圖樣 | Scale ↑、改用 Solid、Draw Order 置後 |
| REGEN 過久 | 物件過多 | 凍結不必要圖層、VP Freeze |
| 出圖中斷 | BACKGROUNDPLOT | 設為 0、調整 PDF 品質 |
5. 協作 — Autodesk Docs・AutoCAD Web・Share・Trace
5.1 Autodesk Docs / Construction Cloud
- 專案共用檔案儲存庫。整合 DWG・PDF 審查・Markup・發行管理。
- 可於 AutoCAD 以 Open from Autodesk Docs / Save to Autodesk Docs 直接開啟與儲存。
- 版本・權限・活動記錄皆 自動保存。
提示: 相較於 Windows 共用或 SharePoint 等傳統儲存庫,其優勢在於內建 圖面鎖定 與 版本歷史。若團隊超過 5 人,值得考慮導入。
5.2 AutoCAD Web / Mobile
- 可於瀏覽器・平板 開啟・簡易修改・量測・加註 DWG。
- 適合 現場快速確認與標註。完整編輯仍於桌面端進行。
5.3 SHARE — 連結分享
SHARE 將目前圖面建立為可於 Autodesk Viewer 開啟的連結。收件者 無需安裝任何軟體,僅憑 URL 即可檢視。預設有效期為 7 天。
5.4 Drawing History / COMPARE / XCOMPARE
- 儲存於 Autodesk Docs 等版本控管儲存庫的 DWG,可於 Drawing History 以 滑桿比對過往版本。
COMPARE/XCOMPARE:以顏色覆蓋顯示兩個 DWG 的差異。
5.5 Trace (2022+)
TRACE 是 不修改原始圖面,於 半透明圖層上覆蓋註解與修改建議的功能。
可將於網頁・行動端建立的 Trace 於桌面端載入進行 核准・反映。
Markup Assist:以 AI 辨識 PDF・影像標註,並建議轉換為 Trace 圖層上可編輯的物件。
5.6 Markup Import (2023+,2026 改進)
MARKUPIMPORT 將外部的 PDF・PNG・JPG 標註插入為 Trace 圖層。
自 2026 起與 Autodesk Docs 雙向同步,Docs 端修改的標註會自動反映至 AutoCAD。
5.7 eTransmit — 外部分發標準
ETRANSMIT 將目前 DWG + 所有 Xref + 影像 + SHX/TTF 字型 + 出圖型式打包為 單一 ZIP 或資料夾。
單純複製檔案容易遺漏參照與字型,因此 外包・監造・投標提交務必使用 eTransmit。
5.8 Trusted DWG
指由 Autodesk 正版・認證應用程式產生並儲存的 DWG。開啟由其他 CAD 儲存的 DWG 時,可能出現「Not a Trusted DWG」警告。
功能上差異不大,但為預防匯入相容性事故,建議 重要圖面在 AutoCAD 中開啟並重新儲存一次。
6. 協作基礎建設 — 標準分發
- DWS + CHECKSTANDARDS:公司・國家 標準檢查。
- Sheet Set:專案圖紙一致管理(詳見
03-blocks-xref.md)。 - Block Library 網路 Tool Palette:全體員工使用相同圖塊。
- CUIx Partial 分發:相同的功能區・快捷鍵・巨集。
- Profile(.arg):透過 export/import 同步 OPTIONS 設定。
提示: 要自動化 新進員工設定,可於登入腳本加入 (1) Profile import (2) Template 路徑對應 (3) 將公司 LSP 登錄至 Startup Suite。
7. 實務檢查清單
- 常用 LSP 已登錄至 Startup Suite
-
acaddoc.lsp未膨脹過大 - 公司標準巨集以 Partial CUIx 分發
- 夜間批次處理以 accoreconsole.exe 為基礎
- 每週定期維護 SCR(AUDIT→PURGE→SAVE)有執行
- 已啟用
SAVETIME=5、ISAVEBAK=1自動儲存・備份 - 大型 Xref 已套用
INDEXCTL=3 - 對掃描・PDF→DWG 產物已套用 OVERKILL
- 外部提交使用
ETRANSMIT打包 - Autodesk Docs 或同等 VCS 為團隊儲存庫
- Markup Import・Trace 工作流程已與團隊分享
- Profile
.arg用於新進員工設定