畫管路圖時,常畫俯視圖和相應的45°角視圖。其實45°角視圖中包含的信息只比俯視圖中多了每根管路的水平高度。下面這個用LISP編寫的程序可以自動將俯視圖轉化為同一水平高度的45°角視圖,使用者只需在轉化后的圖上將每組管路在豎直方向上移動相應的高度,一幅45°角視圖就輕松完成了。
由于每根管路用一直線表示,所以只需改變直線的起點和終點坐標為相應的45°角視圖中的坐標。程序中變量p0記錄45°角視圖的坐標原點,由用戶輸入。p1記錄直線的起點坐標,p2記錄直線的終點坐標。
(defun c:V45( / cmdmode sset ssl ent p0,p1,p2,x1,x2,y0,y1,y2,z1,z2)
(setq cmdmode (getvar "cmdecho"))
(setvar "cmdecho" 0)
;select lines by user
(prompt "nSelect lines:")
(setq sset (ssget))
(if (not(null sset))
(progn
(setq ssl (sslength sset))
;input base point by user
(setq p0 (getpoint "nThe base point: "))
(setq y0 (cadr p0))
(while (> ssl 0)
(setq ent(entget (ssname sset (setq ssl (1- ssl)))))
;filter the lines
(if (= (cdr (assoc 0 ent)) "LINE")
;change the start point and end point of the 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 "ntc:V45 loaded. Start command with V45.")
由于每根管路用一直線表示,所以只需改變直線的起點和終點坐標為相應的45°角視圖中的坐標。程序中變量p0記錄45°角視圖的坐標原點,由用戶輸入。p1記錄直線的起點坐標,p2記錄直線的終點坐標。
(defun c:V45( / cmdmode sset ssl ent p0,p1,p2,x1,x2,y0,y1,y2,z1,z2)
(setq cmdmode (getvar "cmdecho"))
(setvar "cmdecho" 0)
;select lines by user
(prompt "nSelect lines:")
(setq sset (ssget))
(if (not(null sset))
(progn
(setq ssl (sslength sset))
;input base point by user
(setq p0 (getpoint "nThe base point: "))
(setq y0 (cadr p0))
(while (> ssl 0)
(setq ent(entget (ssname sset (setq ssl (1- ssl)))))
;filter the lines
(if (= (cdr (assoc 0 ent)) "LINE")
;change the start point and end point of the 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 "ntc:V45 loaded. Start command with V45.")
相關文章
- 2021-09-08BIM技術叢書Revit軟件應用系列Autodesk Revit族詳解 [
- 2021-09-08全國專業技術人員計算機應用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應用 制表、數據處理及宏應用PDF下載
- 2021-08-30從零開始AutoCAD 2014中文版機械制圖基礎培訓教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎培訓教程 [朱
- 2021-08-30電氣CAD實例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風暴2:Maya影像實拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術設計案例教程中文版AutoCAD 建筑設計案例
- 2021-08-29環境藝術制圖AutoCAD [徐幼光 編著] 2013年PDF下載
- 2021-08-29機械AutoCAD 項目教程 第3版 [繆希偉 主編] 2012年PDF