AutoLISP 取得2點中點

因為沒有內建函數可以直接得到,
所以大部分的人都會把點座標的X跟Y取出相加除以2,
;;;P1 為第一點
;;;P2 為第二點
;;;P3 為兩點中點
(setq P1 (list 0 0 0))
(setq P2 (list 10 0 0))
(setq P3 (list (/ (+ (car P1) (car P2)) 2)
        (/ (+ (cadr P1) (cadr P2)) 2)
        (/ (+ (caddr P1) (caddr P2)) 2)
        ))
而得到中點,
這裡提供另外兩個方法,

方法一:
;;;P1 為第一點
;;;P2 為第二點<
;;;P3 為兩點中點
(setq P1 (list 0 0 0))
(setq P2 (list 10 0 0))
(setq P3 (polar P1 (angle P1 P2) (/ (distance P1 P2) 2)))

而寫成函數是下面這樣:
(defun K:P2PMID(PT1 PT2 /);;;求得2點中點
 (polar PT1 (angle PT1 PT2) (/ (distance PT1 PT2) 2))
 )

方法二:
;;;P1 為第一點
;;;P2 為第二點
;;;P3 為兩點中點
(setq P1 (list 0 0 0))
(setq P2 (list 10 0 0))
(setq pt3 (mapcar '(lambda (x y) (/ (+ x y) 2)) P1 P2))

留言

這個網誌中的熱門文章

AutoCAD 填充線(剖面線)樣式簡易製作產生器

AutoCAD 如何自訂線型教學

AutoCAD 動態圖塊-如何在所有可見性顯示或隱藏