萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 軟體知識 >  >> 影像處理 >> CAD 教學 >> CAD 使用教學 >> 常見案例解析

AutoCAD LISP 批量處理實戰:多段線線寬批改、多圖紙自動列印

前言

面對成百上千條多段線需統一線寬、單檔多圖紙需批量列印,手動操作不僅效率低且極易漏改。AutoLISP 讓這些重複性工作變成一鍵指令。本文提供兩個經典實用 LISP 程式:CH_W 批量修改多段線線寬、Mplot 等距多圖紙連續列印,附完整原始碼與使用說明。

程式一:CH_W — 多段線線寬批量修改

適用場景

需將圖面中所有輕型多段線(LWPOLYLINE)或舊版多段線(POLYLINE)線寬統一設定為指定值。

原始碼

(defun C:CH_W (/ wid ent_ss n_ss j ent_n ent_a)
  (princ "\n請選擇目標物件 : ")
  (setq ent_ss (ssget) wid (getreal "\n請輸入線寬 <0.3>: "))
  (if (= wid nil) (setq wid 0.3))
  (if (/= ent_ss nil)
    (progn
      (setq n_ss (sslength ent_ss) j 0)
      (repeat n_ss
        (setq ent_n (ssname ent_ss j)
              ent_a (cdr (assoc 0 (entget ent_n)))
              j (1+ j))
        (if (or (= ent_a "POLYLINE") (= ent_a "LWPOLYLINE"))
          (command "PEDIT" ent_n "W" wid "" "")
        )
      )
    )
  )
  (princ)
)

使用方法

  1. 將碼存為 CH_W.lsp,用 APPLOAD 載入。
  2. 命令列輸入 CH_W。
  3. 框選目標多段線 → 輸入目標線寬(預設 0.3)→ 自動逐一執行 PEDIT 修改。

關鍵邏輯解析

  • ssget 取得選取集,sslength/ssname 遍歷。
  • entget 取得實體定義表,assoc 0 讀取實體類型(DXF 代碼 0)。
  • 僅處理 POLYLINE 與 LWPOLYLINE,其他類型自動跳過。
  • command "PEDIT" ent_n "W" wid "" "" 等同手動:PEDIT → 選物件 → W(寬度) → 輸入值 → 兩次 Enter 結束。

程式二:Mplot — 等距多圖紙連續列印

適用場景

單一 DWG 內垂直排列多張相同尺寸圖紙,間距固定(如 500mm),需連續列印所有圖框。

原始碼

(defun C:Mplot (/ p_1 p_2 n m_d)
  (setq p_1 (getpoint "\n第一角點: ")
        p_2 (getpoint "\n對角點: ")
        n (getint "\n總張數 <1>: "))
  (if (= n nil) (setq n 1))
  (setq m_d 500) ; 固定間距 500mm
  (repeat n
    (command "PLOT" "" "W" p_1 p_2 "" "Y" "") ; 依當前列印設定直接列印
    (setq p_1 (list (car p_1) (+ (cadr p_1) m_d) (caddr p_1))
          p_2 (list (car p_2) (+ (cadr p_2) m_d) (caddr p_2)))
  )
  (princ)
)

使用方法

  1. 載入 Mplot.lsp。
  2. 命令列輸入 Mplot。
  3. 依提示點選第一張圖框左下角、右上角 → 輸入總張數。
  4. 程式自動以當前列印設備設定,按 Y 軸正方向每 500mm 列印一張,直到完成指定張數。

自訂擴充建議

  • 將 m_d 改為 (getreal "\n間距 <500>: ") 實現間距互動輸入。
  • 加入 (getvar "CTAB") 判斷當前版面,支援多版面切換列印。
  • 整合 PLOT 完整參數(裝置、樣式表、比例),脫離當前設定獨立運行。

結語

兩支不足 30 行的 LISP,解決了「批量屬性修改」與「批量列印」兩大高頻痛點。理解其邏輯後,可輕鬆擴展為:批量修改圖層/顏色/線型、批量匯出 PDF/DWF、批量更新圖框屬性等企業級自動化工具,讓 AutoCAD 真正成為生產力工具而非單純繪圖板。

copyright © 萬盛學電腦網 all rights reserved