萬盛學電腦網

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

AutoCAD LISP 程式:一鍵將平面管路圖轉 45° 等軸視圖 (V45)

應用場景

管路設計常需從平面圖衍生 45° 等軸視圖。45° 視圖僅比平面圖多出「水平高度」資訊。本 LISP 程式自動將平面直線幾何轉換為 45° 等軸投影,設計師只需在轉換後按高度上下移動管線即可完成。

數學原理

設平面點 P(x, y, z),45° 視圖投影點 P'(x', y', z'):

x' = x + (√2/4)(y - y₀)
y' = y₀ + (√2/4)(y - y₀)
z' = z

其中 (x₀, y₀) 為使用者指定的 45° 視圖原點對應平面座標。程式僅修改 X、Y,保留 Z(高度)供後續手動調整。

V45.LSP 完整原始碼

(defun c:V45 ( / cmdmode sset ssl ent p0 p1 p2 x1 x2 y0 y1 y2 z1 z2)
  (setq cmdmode (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  ; 使用者框選管線
  (prompt "\nSelect lines:")
  (setq sset (ssget))
  (if (not (null sset))
    (progn
      (setq ssl (sslength sset))
      ; 使用者指定 45° 視圖基點
      (setq p0 (getpoint "\nThe base point: "))
      (setq y0 (cadr p0))
      (while (> ssl 0)
        (setq ent (entget (ssname sset (setq ssl (1- ssl)))))
        ; 僅處理 LINE 實體
        (if (= (cdr (assoc 0 ent)) "LINE")
          (progn
            (setq x1 (cadr (assoc 10 ent)))
            (setq y1 (caddr (assoc 10 ent)))
            (setq z1 (cadddr (assoc 10 ent)))
            (setq x2 (cadr (assoc 11 ent)))
            (setq y2 (caddr (assoc 11 ent)))
            (setq z2 (cadddr (assoc 11 ent)))
            ; 計算新端點
            (setq p1 (list (+ x1 (/ (* (sqrt 2) (- y1 y0)) 4))
                           (+ y0 (/ (* (sqrt 2) (- y1 y0)) 4))
                           z1))
            (setq p2 (list (+ x2 (/ (* (sqrt 2) (- y2 y0)) 4))
                           (+ y0 (/ (* (sqrt 2) (- y2 y0)) 4))
                           z2))
            ; 更新實體
            (setq ent (entmod (subst (cons 10 p1) (assoc 10 ent) ent)))
            (entmod (subst (cons 11 p2) (assoc 11 ent) ent))
            (redraw (cdr (assoc -1 ent)) 1)
          )
        )
      )
    )
  )
  (setvar "CMDECHO" cmdmode)
  (princ)
)
(princ "\nV45 loaded. Start command with V45.")

使用步驟

  1. 依上述安裝方式載入 V45.lsp。
  2. 繪製平面管路圖(全部為 LINE 實體)。
  3. 命令列輸入 V45 → 框選所有管線 → 指定 45° 視圖基點。
  4. 程式自動完成幾何轉換。
  5. 切換至 45° 視圖(或用 VPOINT),依設計高度在 Z 方向移動各管線群組。

擴充建議

  • 支援 LWPOLYLINE、ARC 等實體類型。
  • 加入圖層過濾,僅轉換特定圖層管線。
  • 整合高度資料表,自動完成 Z 向位移。
copyright © 萬盛學電腦網 all rights reserved