萬盛學電腦網

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

AutoCAD 線寬批量調整 LISP 工具:四大模式精準控制圖元線寬

針對輸出圖面線寬分級需求,本文提供開源 AutoLISP 程式 chwd.lsp,支援四種調整模式(單選、按圖層、按顏色、按線型),可在互動狀態下即時批量修改直線、多段線、圓/弧、橢圓/弧、樣條曲線等實體線寬,並保留原圖層/顏色/線型等屬性不變。程式碼開放原始碼,可依專案需求二次開發擴充。

四大調整模式操作流程

模式一:單選物件調整 (Select)

  1. 模式選擇輸入 S
  2. 框選/逐一選取目標物件
  3. 輸入新線寬值 → 自動批量套用

模式二:按圖層調整 (Layer)

  1. 模式選擇 L
  2. 選取影響範圍(全圖/部分)
  3. 確定圖層名:E 點選物件取其圖層 / N 手動輸入圖層名
  4. 輸入新線寬值 → 該圖層範圍內物件批量更新

模式三:按顏色調整 (Color)

  1. 模式選擇 C
  2. 選取影響範圍
  3. 確定顏色:E 點選物件取其顏色 / N 輸入顏色號
  4. 輸入新線寬值 → 同色物件批量更新

模式四:按線型調整 (LType)

  1. 模式選擇 LT
  2. 選取影響範圍
  3. 確定線型:E 點選物件取其線型 / N 輸入類型代碼 (C/D/H/P/B 等首字母)
  4. 輸入新線寬值 → 同線型物件批量更新

使用限制與注意事項

  • 不影響剖面線、標註線/界線、文字、符號等註釋物件,篩選時無需排除。
  • 無法直接修改區塊內物件;需先 EXPLODE 區塊,調整後可選擇不存檔保留原結構。
  • 支援窗口選取、Shift+點選移除選取等標準選取技巧。
  • 屬性設為 ByLayer 的物件,在「按顏色/線型」模式下不被識別;優先使用「選取」或「按圖層」模式處理。
  • 原始碼相容 AutoCAD R12;R13+ 圓/橢圓處理需採用「切割成弧→處理→重組」策略,程式碼中已實作。

核心程式碼片段 (chwd.lsp)

(defun c:width ()
  (setq bb 1)
  (setq w 0)
  (initget 1 "Select Layer Color LType")
  (prompt "\n調整方式選擇")
  (setq t (getkword "[Select/Layer/Color/LType]"))
  (prompt "\n選擇調整範圍")
  (setq obj (ssget))
  (if (= t "Layer")
    (progn
      (initget 1 "Entity Name")
      (prompt "\n選擇實體確定圖層或給出圖層名?")
      (setq lb (getkword "[Entity/Name]:"))
      (if (= lb "Entity")
        (progn
          (prompt "選擇所需變化圖層圖素:")
          (setq le (ssget))
          (setq lp (ssname le 0))
          (setq ll (cdr (car (cdr (cdr (entget lp))))))
        )
      )
      (if (= lb "Name")
        (progn
          (setq lll (getstring "\n給出所需變化的圖層名:"))
          (setq ll (strcase lll))
        )
      )
      (setq obj1 (ssadd))
      (setq j 0)
      (while (< j (sslength obj))
        (setq pl (ssname obj j))
        (setq j (+ j 1))
        (setq py (cdr (car (cdr (cdr (entget pl))))))
        (if (= ll py) (ssadd pl obj1))
      )
    )
  )
  ; ... Color / LType / Select 分支同理 ...
  (princ)
)

完整原始碼請見文末附件或複製上述片段補全邏輯分支。

copyright © 萬盛學電腦網 all rights reserved